上期我们介绍了Python的环境配置,本期我们介绍ROC曲线以及如何绘制ROC曲线。
ROC(Receiver Operating Characteristic)曲线是用于评估二分类模型性能的一种工具。它显示了在不同阈值下,真正例率(True Positive Rate,也称为灵敏度或召回率)与假正例率(False Positive Rate)之间的权衡关系。
当我们讨论ROC曲线时,可以想象一个二分类模型,例如医学诊断中的癌症检测。我们用“正例”表示病患患有癌症,而“负例”表示患者没有癌症。
真正例率 (TPR,也叫灵敏度或召回率):
假设我们的模型通过某个阈值,成功地找出了患有癌症的病患。 这就是一个真正例。 TPR告诉我们在所有实际患有癌症的病患中,有多少被成功地找出来了。
假正例率 (FPR): 然而,模型可能会犯错误,将一些实际上是健康的人错误地判定为患有癌症。 这就是一个假正例。 FPR告诉我们在所有实际健康的人中,有多少被错误地认为患有癌症。
现在 ,我们可以考虑不同的 阈值。 如果我们把阈值设置得很低,模型可能会把很多人都判定为患有癌症,这会增加TPR,但同时也增加了FPR。 反之,如果我们把阈值设置得很高,模型只会把那些非常确信患有癌症的人判定为患有癌症,这样会减少FPR,但可能也减少了TPR。
ROC曲线就是在不同阈值下,TPR和FPR之间的权衡。如果你能画出ROC曲线,你可以看到在整个权衡范围内的模型表现情况。
比如,一条理想的ROC曲线可能如下图所示:

这个图形展示了在不同阈值下,TPR和FPR的变化。曲线越靠近左上角,说明模型在保持高召回率的同时,控制假正例率的能力越好。
ROC曲线正是通过不断移动分类器的“阈值”来生成曲线上的一组关键点
(也可以参考老师给的这篇博客:机器学习基础(1)- ROC曲线理解 - 简书 (jianshu.com)可能讲的更清晰一点)
import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc
我们导入我们需要使用的库,我们使用import导入特定的库,使用from从特定关键字导入,使用as作为库的别称。
y_true = np.random.randint(2, size=100) y_scores = np.random.rand(100)
我们使用random生成随机的一百组数据。
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
接着调用roc_curve代入我们生成的数 据 计算 ROC曲线的参数。
roc_auc = auc(fpr, tpr)
计算ROC曲线的面积。
plt.figure(figsize=(8, 8))
plt.plot(fpr, tpr, label='ROC曲线(AUC = {:.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], linestyle='--', label='数据')
plt.xlabel('FPR')
plt.ylabel('TPR')
plt.legend(loc='lower right')
plt.show()
最后利用matplotlib生成我们的图像并显示就完成了我们的ROC曲线的绘制。



登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!