- 机器学习基础
- ML - 首页
- ML - 简介
- ML - 入门
- ML - 基本概念
- ML - 生态系统
- ML - Python 库
- ML - 应用
- ML - 生命周期
- ML - 必备技能
- ML - 实现
- ML - 挑战与常见问题
- ML - 限制
- ML - 真实案例
- ML - 数据结构
- ML - 数学基础
- ML - 人工智能
- ML - 神经网络
- ML - 深度学习
- ML - 获取数据集
- ML - 分类数据
- ML - 数据加载
- ML - 数据理解
- ML - 数据准备
- ML - 模型
- ML - 监督学习
- ML - 无监督学习
- ML - 半监督学习
- ML - 强化学习
- ML - 监督学习 vs. 无监督学习
- 机器学习数据可视化
- ML - 数据可视化
- ML - 直方图
- ML - 密度图
- ML - 箱线图
- ML - 相关矩阵图
- ML - 散点矩阵图
- 机器学习统计学
- ML - 统计学
- ML - 均值、中位数、众数
- ML - 标准差
- ML - 百分位数
- ML - 数据分布
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假设
- 机器学习中的回归分析
- ML - 回归分析
- ML - 线性回归
- ML - 简单线性回归
- ML - 多元线性回归
- ML - 多项式回归
- 机器学习中的分类算法
- ML - 分类算法
- ML - 逻辑回归
- ML - K近邻算法 (KNN)
- ML - 朴素贝叶斯算法
- ML - 决策树算法
- ML - 支持向量机
- ML - 随机森林
- ML - 混淆矩阵
- ML - 随机梯度下降
- 机器学习中的聚类算法
- ML - 聚类算法
- ML - 基于质心的聚类
- ML - K均值聚类
- ML - K中心点聚类
- ML - 均值漂移聚类
- ML - 层次聚类
- ML - 基于密度的聚类
- ML - DBSCAN 聚类
- ML - OPTICS 聚类
- ML - HDBSCAN 聚类
- ML - BIRCH 聚类
- ML - 亲和传播
- ML - 基于分布的聚类
- ML - 凝聚层次聚类
- 机器学习中的降维
- ML - 降维
- ML - 特征选择
- ML - 特征提取
- ML - 向后消除法
- ML - 向前特征构造
- ML - 高相关性过滤器
- ML - 低方差过滤器
- ML - 缺失值比率
- ML - 主成分分析
- 强化学习
- ML - 强化学习算法
- ML - 利用与探索
- ML - Q学习
- ML - REINFORCE 算法
- ML - SARSA 强化学习
- ML - 演员-评论家方法
- 深度强化学习
- ML - 深度强化学习
- 量子机器学习
- ML - 量子机器学习
- ML - 使用 Python 的量子机器学习
- 机器学习杂项
- ML - 性能指标
- ML - 自动工作流程
- ML - 提升模型性能
- ML - 梯度提升
- ML - 自举汇聚 (Bagging)
- ML - 交叉验证
- ML - AUC-ROC 曲线
- ML - 网格搜索
- ML - 数据缩放
- ML - 训练和测试
- ML - 关联规则
- ML - Apriori 算法
- ML - 高斯判别分析
- ML - 成本函数
- ML - 贝叶斯定理
- ML - 精度和召回率
- ML - 对抗性
- ML - 堆叠
- ML - 轮次
- ML - 感知器
- ML - 正则化
- ML - 过拟合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 数据泄露
- ML - 机器学习的盈利模式
- ML - 数据类型
- 机器学习 - 资源
- ML - 快速指南
- ML - 速查表
- ML - 面试问题
- ML - 有用资源
- ML - 讨论
机器学习 - P值
在机器学习中,我们使用 P 值来检验零假设,即两个变量之间没有显著关系。例如,如果我们有一个房价数据集,并且想要确定房屋大小与其价格之间是否存在显著关系,我们可以使用 P 值来检验这个假设。
为了理解机器学习中 P 值的概念,我们首先需要理解零假设和备择假设的概念。零假设是假设两个变量之间没有显著关系,而备择假设则与零假设相反,它指出两个变量之间存在显著关系。
一旦我们定义了零假设和备择假设,我们就可以使用 P 值来检验假设的显著性。P 值是在零假设为真的前提下,获得观测结果或更极端结果的概率。
如果 P 值小于显著性水平(通常设置为 0.05),那么我们拒绝零假设并接受备择假设。这意味着两个变量之间存在显著关系。另一方面,如果 P 值大于显著性水平,那么我们不拒绝零假设,并得出结论认为两个变量之间没有显著关系。
Python 中 P 值的实现
Python 提供了几个用于统计分析和假设检验的库。最流行的统计分析库之一是 scipy 库。scipy 库提供了一个名为 ttest_ind() 的函数,可用于计算两个独立样本的 P 值。
为了演示机器学习中 p 值的实现,我们将使用 scikit-learn 提供的乳腺癌数据集。该数据集的目标是根据肿瘤的半径、纹理、周长、面积、光滑度、致密性、凹度和对称性等各种特征来预测乳腺肿瘤是恶性还是良性。
首先,我们将加载数据集并将其拆分为训练集和测试集:
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 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
接下来,我们将使用 scikit-learn 中的 SelectKBest 类根据它们的 p 值选择前 k 个特征。在这里,我们将选择前 5 个特征:
from sklearn.feature_selection import SelectKBest, f_classif 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)
SelectKBest 类采用评分函数作为输入来计算每个特征的 p 值。我们使用 f_classif 函数,它是每个特征与目标变量之间的 ANOVA F 值。k 参数指定要选择的顶级特征的数量。
在训练数据上拟合选择器后,我们使用 fit_transform() 方法转换数据以仅保留前 k 个特征。我们还使用 transform() 方法转换测试数据以仅保留选择的特征。
我们现在可以在选择的特征上训练模型并评估其性能:
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: {accuracy:.2f}")
在这个例子中,我们在前 5 个选择的特征上训练了一个逻辑回归模型,并使用准确率评估了它的性能。但是,p 值也可以用于假设检验,以确定一个特征是否具有统计学意义。
例如,要检验平均半径特征是否显著的假设,我们可以使用 scipy.stats 模块中的 ttest_ind() 函数:
from scipy.stats import ttest_ind malignant = X[y == 0, 0] benign = X[y == 1, 0] t, p_value = ttest_ind(malignant, benign) print(f"P-value: {p_value:.2f}")
ttest_ind() 函数接收两个数组作为输入,并返回 t 统计量和双尾 p 值。
输出
我们将从上述实现中获得以下输出:
Accuracy: 0.97 P-value: 0.00
在这个例子中,我们计算了恶性和良性类别之间平均半径特征的 p 值。