核心内容摘要
欲望与艺术的深处:一份带你深入ACG里番世界的终极指南
摘要精确率和召回率是评估分类模型性能的关键指标特别适用于不平衡数据集。
精确率反映预测为正类的准确性TP/(TPFP)召回率衡量对实际正类的识别能力TP/(TPFN)。
以垃圾邮件检测为例高精确率表示较少误判合法邮件高召回率意味着能捕捉更多垃圾邮件。
通过scikit-learn的precision_score()和recall_score()函数可计算这两个指标示例代码展示了在乳腺癌数据集上训练逻辑回归模型并评估其性能精确率
9
6%召回率
9
6%。
这两个指标共同帮助优化模型在不同场景下的表现。
目录机器学习 - 精确率与召回率Python 实现示例代码代码说明输出结果机器学习 - 精确率与召回率精确率Precision和召回率Recall是机器学习中评估分类模型性能的两个重要指标在不平衡数据集即某一类别的样本数量显著少于另一类别的评估中尤为实用。
精确率衡量分类器做出的正类预测中实际为正确预测的比例其定义为真阳性TP与所有正类预测结果TP 假阳性 FP的比值即精确率 真阳性 /真阳性 假阳性反映了所有被预测为正类的样本中真正正类的占比。
召回率则衡量所有实际为正类的样本中被分类器正确识别的比例定义为真阳性TP与所有实际正类样本TP 假阴性 FN的比值即召回率 真阳性 /真阳性 假阴性体现了分类器对实际正类样本的捕捉能力。
以垃圾邮件检测问题为例可更好理解二者分类器会将邮件标记为垃圾邮件正类预测或非垃圾邮件负类预测邮件实际标签也分为垃圾邮件和非垃圾邮件。
实际为垃圾邮件且被正确标记为垃圾邮件的是真阳性实际非垃圾邮件却被误标为垃圾邮件的是假阳性实际为垃圾邮件但被误标为非垃圾邮件的是假阴性实际非垃圾邮件且被正确标记的是真阴性。
在此场景中精确率反映分类器正确识别的垃圾邮件占所有被标记为垃圾邮件的比例高精确率意味着分类器能准确识别多数垃圾邮件且很少将合法邮件误判为垃圾邮件召回率反映分类器正确识别的垃圾邮件占所有实际垃圾邮件的比例高召回率意味着分类器能捕捉到多数垃圾邮件即便可能将部分合法邮件误判为垃圾邮件。
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 # 加载乳腺癌数据集 data load_breast_cancer() # 将数据分为训练集和测试集 X_train, X_test, y_train, y_test train_test_split(data.data, data.target, test_size
2, random_state
# 训练逻辑回归分类器 clf LogisticRegression(random_state
clf.fit(X_train, y_train) # 在测试集上进行预测 y_pred clf.predict(X_test) # 计算精确率和召回率 precision precision_score(y_test, y_pred) recall recall_score(y_test, y_pred) print(精确率:, precision) print(召回率:, recall)代码说明首先加载乳腺癌数据集并按 8:2 的比例将数据划分为训练集和测试集test_size
2设置 random_state42 保证结果可复现初始化逻辑回归分类器使用训练集数据训练模型调用 predict () 方法在测试集上生成预测结果利用 precision_score () 和 recall_score () 函数分别计算模型的精确率和召回率并打印输出。
输出结果运行上述代码后将得到以下输出精确率: