ROC 和 AUC 简介

用于评估分类器输出质量的接收器操作特性(ROC)度量的示例。

ROC 曲线通常在 Y 轴上具有真阳性率,在 X 轴上具有假阳性率。这意味着图的左上角是理想点 - 误报率为零,真正的正率为 1。这不太现实,但它确实意味着曲线下面积(AUC)通常更好。

ROC 曲线的陡峭度也很重要,因为它是最大化真实阳性率同时最小化误报率的理想选择。

一个简单的例子:

import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt

任意 y 值 - 在实际情况下,这是预测目标值(model.predict(x_test)):

y = np.array([1,1,2,2,3,3,4,4,2,3])

分数是给定测试数据和标签的平均准确度(model.score(X,Y)):

scores = np.array([0.3, 0.4, 0.95,0.78,0.8,0.64,0.86,0.81,0.9, 0.8])

计算 ROC 曲线和 AUC:

fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
roc_auc = metrics.auc(fpr, tpr)

绘图:

plt.figure()
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

输出:

http://i.stack.imgur.com/CYShh.jpg

注意:源是从这些 link1link2 中获取的