- 机器学习基础
- 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 - 监督学习与无监督学习
- 机器学习数据可视化
- 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 - 讨论
机器学习 - 精确率和召回率
精确率和召回率是机器学习中用于评估分类模型性能的两个重要指标。它们对于不平衡数据集特别有用,在不平衡数据集中,一类实例的数量明显少于其他类。
精确率衡量的是分类器做出的所有正预测中,有多少是正确的。它定义为真阳性 (TP) 与正预测总数 (TP + FP) 的比率。换句话说,精确率衡量的是所有正预测中真阳性的比例。
$$精确率=TP/\left ( TP+FP \right )$$
另一方面,召回率衡量的是分类器正确识别了多少实际正实例。它定义为真阳性 (TP) 与实际正实例总数 (TP + FN) 的比率。换句话说,召回率衡量的是所有实际正实例中真阳性的比例。
$$召回率=TP/\left ( TP+FN \right )$$
要理解精确率和召回率,请考虑检测垃圾邮件的问题。分类器可能会将电子邮件标记为垃圾邮件(正预测)或非垃圾邮件(负预测)。电子邮件的实际标签可以是垃圾邮件或非垃圾邮件。如果电子邮件实际上是垃圾邮件,并且分类器将其正确标记为垃圾邮件,则它是真阳性。如果电子邮件不是垃圾邮件,但分类器错误地将其标记为垃圾邮件,则它是假阳性。如果电子邮件实际上是垃圾邮件,但分类器错误地将其标记为非垃圾邮件,则它是假阴性。最后,如果电子邮件不是垃圾邮件,并且分类器将其正确标记为非垃圾邮件,则它是真阴性。
在这种情况下,精确率衡量的是分类器正确识别为垃圾邮件的垃圾邮件比例。高精确率表明分类器正在正确识别大多数垃圾邮件,并且没有将许多合法电子邮件标记为垃圾邮件。另一方面,召回率衡量的是分类器正确识别出的所有垃圾邮件的比例。高召回率表明分类器正在正确识别大多数垃圾邮件,即使它将某些合法电子邮件标记为垃圾邮件。
在 Python 中实现
在 scikit-learn 中,可以使用 precision_score() 和 recall_score() 函数分别计算精确率和召回率。这些函数将实例的真标签和预测标签作为输入,并返回相应的精确率和召回率得分。
例如,以下代码片段使用 scikit-learn 中的乳腺癌数据集来训练逻辑回归分类器并评估其精确率和召回率得分 -
示例
from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import precision_score, recall_score # Load the breast cancer dataset data = load_breast_cancer() # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # Train a logistic regression classifier clf = LogisticRegression(random_state=42) clf.fit(X_train, y_train) # Make predictions on the testing set y_pred = clf.predict(X_test) # Calculate precision and recall scores precision = precision_score(y_test, y_pred) recall = recall_score(y_test, y_pred) print("Precision:", precision) print("Recall:", recall)
在上面的示例中,我们首先加载乳腺癌数据集并将其拆分为训练集和测试集。然后,我们在训练集上训练逻辑回归分类器,并使用 predict() 方法对测试集进行预测。最后,我们使用 precision_score() 和 recall_score() 函数计算精确率和召回率得分。
输出
执行此代码时,它将产生以下输出 -
Precision: 0.9459459459459459 Recall: 0.9859154929577465