📜  roc 曲线 python (1)

📅  最后修改于: 2023-12-03 15:19:50.891000             🧑  作者: Mango

ROC 曲线 Python

ROC曲线(Receiver Operating Characteristic Curve)是一种用于评价分类模型好坏的图表。本文将介绍ROC曲线的概念和Python如何绘制ROC曲线。

ROC 曲线概念

ROC曲线是一种二分类模型的模型质量评估工具,它的横轴是假阳性率(False Positive Rate, FPR),纵轴是真阳性率(True Positive Rate, TPR)。同时,ROC曲线的面积也是一种常用的评估指标,通常表示为AUC(Area Under Curve)。

ROC曲线更详细的介绍请看Wikipedia

Python绘制 ROC 曲线

在Python中,可以使用sklearn库中的roc_curveroc_auc_score函数绘制ROC曲线和计算AUC。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, roc_auc_score

# 构造数据
y_true = np.array([0, 0, 1, 1])
y_probs = np.array([0.1, 0.4, 0.35, 0.8])

# 计算false positive rate和true positive rate,以及对应的阈值
fpr, tpr, thresholds = roc_curve(y_true, y_probs)

# 绘制ROC曲线
plt.plot(fpr, tpr, label='ROC curve (AUC = %0.2f)' % roc_auc_score(y_true, y_probs))

# 绘制模型的随机瞎猜线
plt.plot([0, 1], [0, 1], 'k--')

# 设置图表参数
plt.xlim([-0.01, 1.00])
plt.ylim([-0.01, 1.01])
plt.xlabel('False Positive Rate', fontsize=12)
plt.ylabel('True Positive Rate', fontsize=12)
plt.title('ROC Curve', fontsize=14)
plt.legend(loc="lower right")

plt.show()

输出: ROC Curve

本段代码讲解:

  • y_true表示样本的真实标签。本例中,样本共有4个,第1个和第2个为0类,第3个和第4个为1类。
  • y_probs表示模型对样本的预测概率。本例中,模型预测第1个样本为0类的概率为0.1,预测第2个样本为0类的概率为0.4,预测第3个样本为1类的概率为0.35,预测第4个样本为1类的概率为0.8。
  • roc_curve函数用于计算出FPR、TPR、阈值。本例中,计算完成后,FPR的值为[0., 0.5, 0.5, 1.], TPR的值为[0., 0., 1., 1.],阈值的值为[0.8, 0.4, 0.35, 0.1]。
  • roc_auc_score函数用于计算AUC值,本例中返回结果0.75
  • plt.plot函数用于绘制ROC曲线和随机瞎猜线。
  • plt.xlabelplt.ylabel用于设置x轴和y轴的标签。
  • plt.title用于给图表加上标题。
  • plt.xlimplt.ylim用于限制x轴和y轴的取值范围。
  • plt.legend用于添加图例。
总结

本文介绍了ROC曲线的概念及如何在Python中使用sklearn库绘制ROC曲线和计算AUC值。在进行模型质量评估时,ROC曲线是一种重要的分析工具,可以帮助确定模型阈值和模型的表现水平。