当前位置: 首页 > news >正文

机器学习中的 P 值

摘要:本文介绍了机器学习中P值的概念及其应用。通过乳腺癌数据集案例,演示了如何使用Python的scipy和scikit-learn库进行P值计算和特征选择。实验首先加载并分割数据,然后基于ANOVA F值筛选Top5特征,训练逻辑回归模型获得97%的准确率。最后单独检验"平均半径"特征的显著性,P值为0.00证实其对肿瘤分类具有统计显著性。该方法展示了P值在机器学习特征选择和假设检验中的实用价值。

目录

机器学习中的 P 值

Python 中 P 值的实现

步骤 1:加载数据集并分割训练集与测试集

步骤 2:基于 P 值选择最优特征

步骤 3:训练模型并评估性能

步骤 4:单独检验某一特征的显著性

完整代码

输出结果


机器学习中的 P 值

在机器学习中,我们使用 P 值检验零假设—— 即两个变量之间不存在显著关系。例如,若有房价数据集,想判断房屋面积与价格是否存在显著关联,便可通过 P 值验证这一假设。

要理解机器学习中的 P 值概念,需先明确零假设和备择假设:零假设指两个变量无显著关系,备择假设则与之相反,认为变量间存在显著关系。

定义好两种假设后,即可用 P 值检验假设的显著性:P 值是在零假设成立的前提下,得到当前观测结果或更极端结果的概率。

  • 若 P 值小于显著性水平(通常设为 0.05),则拒绝零假设、接受备择假设,说明变量间存在显著关系;
  • 若 P 值大于显著性水平,则无法拒绝零假设,即认为变量间无显著关系。

Python 中 P 值的实现

Python 提供了多个用于统计分析和假设检验的库,其中 scipy 库最为常用,其ttest_ind()函数可计算两个独立样本的 P 值。

以下将结合 scikit-learn 的乳腺癌数据集演示 P 值的应用 —— 该数据集旨在通过肿瘤半径、纹理、周长、面积、平滑度、紧密度、凹陷度、对称性等特征,预测乳腺肿瘤为恶性还是良性。

步骤 1:加载数据集并分割训练集与测试集

from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split data = load_breast_cancer() X = data.data # 特征数据 y = data.target # 标签(0=恶性,1=良性) # 按8:2分割训练集和测试集,随机种子设为42以保证结果可复现 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

步骤 2:基于 P 值选择最优特征

使用 scikit-learn 的SelectKBest类,根据特征的 P 值筛选出 Top k 个最优特征(此处 k=5):

from sklearn.feature_selection import SelectKBest, f_classif k = 5 # 采用f_classif函数(ANOVA F值)计算各特征与目标变量的P值 selector = SelectKBest(score_func=f_classif, k=k) # 对训练集拟合并转换,保留Top 5特征 X_train_new = selector.fit_transform(X_train, y_train) # 对测试集执行相同转换(避免数据泄露) X_test_new = selector.transform(X_test)

步骤 3:训练模型并评估性能

基于筛选后的特征训练逻辑回归模型,用准确率评估效果:

from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 初始化并训练逻辑回归模型 model = LogisticRegression() model.fit(X_train_new, y_train) # 预测测试集结果并计算准确率 y_pred = model.predict(X_test_new) accuracy = accuracy_score(y_test, y_pred) print(f"准确率: {accuracy:.2f}")

步骤 4:单独检验某一特征的显著性

以 “平均半径” 特征为例,用 scipy 的ttest_ind()函数检验其对肿瘤分类的显著性:

from scipy.stats import ttest_ind # 提取恶性肿瘤(y=0)和良性肿瘤(y=1)的平均半径特征(第0列) malignant = X[y == 0, 0] benign = X[y == 1, 0] # 计算t统计量和双尾P值 t, p_value = ttest_ind(malignant, benign) print(f"P值: {p_value:.2f}")

完整代码

from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.feature_selection import SelectKBest, f_classif from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score from scipy.stats import ttest_ind # 加载数据并分割 data = load_breast_cancer() X = data.data y = data.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 特征选择 k = 5 selector = SelectKBest(score_func=f_classif, k=k) X_train_new = selector.fit_transform(X_train, y_train) X_test_new = selector.transform(X_test) # 模型训练与评估 model = LogisticRegression() model.fit(X_train_new, y_train) y_pred = model.predict(X_test_new) accuracy = accuracy_score(y_test, y_pred) print(f"准确率: {accuracy:.2f}") # 单独检验平均半径特征的显著性 malignant = X[y == 0, 0] benign = X[y == 1, 0] t, p_value = ttest_ind(malignant, benign) print(f"P值: {p_value:.2f}")

输出结果

上述代码运行后将得到以下输出:

plaintext

准确率: 0.97 P值: 0.00

该结果表明:基于 Top 5 特征的模型准确率达 97%;“平均半径” 特征的 P 值为 0.00(小于 0.05),说明其对区分良恶性肿瘤具有显著统计意义。

http://www.jsqmd.com/news/349858/

相关文章:

  • 朔州市英语雅思培训辅导机构推荐、2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025
  • 聊聊好用的高低温试验箱,步入式高低温试验箱供应商推荐 - 工业推荐榜
  • 机器学习中的熵
  • 2026年全国外贸出口级纯可可脂巧克力制品哪家做得好?核心能力及场景适配解析 - 深度智识库
  • 2026年AI模型“基因偏见”评估框架:软件测试从业者实战指南
  • 全球厨房秤品牌推荐,大秦制衡电子秤质量怎样? - myqiye
  • 2026年冷热冲击试验箱靠谱的供应商推荐,环保型产品口碑排名 - 工业品网
  • 高性能CNC网关推荐,哪家好用?
  • 2026年广州内外涂塑钢管口碑好的制造商排名,专业之选 - 工业品牌热点
  • 2026年比较好的厂区智能巡检,电力智能巡检公司专业服务推荐榜 - 品牌鉴赏师
  • 2026年AI模型“自我诊断”测试框架:赋能软件测试新范式
  • Vmware 安装 OpenEuler 系统Linux Vscode Remote-SSH
  • 盘点2026年流延机正规供应商靠谱的十大厂家 - 工业设备
  • 为什么你的区块链测试总失败?新工具盘点
  • 2026年流延机选购攻略,流延机价格合理的品牌是哪个 - mypinpai
  • 盘锦车牌靓号代选,盘锦车牌靓号价格-上牌选号 - dasggg
  • 量子机器学习:三行代码入门的2026指南
  • 基于单片机的人体健康监测器设计
  • 2026电子扭转试验机实力厂家推荐,这几家公司质量过硬 - 品牌推荐大师1
  • 昭通车牌靓号代选,昭通车牌靓号价格-上牌选号 - dasggg
  • 智能自助购药系统的研究与应用
  • 硕士文献综述不用愁,paperzz 带你解锁学术写作新姿势
  • docker打包
  • 金融系统OA如何集成百度编辑器的PDF转存功能?
  • 乐山车牌靓号代选,乐山车牌靓号价格-上牌选号 - dasggg
  • 【RAG新范式】超越向量搜索:企业级知识库构建必知的3大RAG高级策略
  • 皮扎特(PIZZATO)安全开关市场解析:代理商生态与选型指南 - 品牌推荐大师1
  • SHAP与LIME深度解析:揭开复杂模型预测的黑箱
  • 计算机毕业设计 | SpringBoot+vue社区智慧养老监护管理平台 养老院管理系统(附源码+论文)
  • 遂宁车牌靓号代选,遂宁车牌靓号价格-上牌选号 - dasggg