代码
from sklearn.metrics import roc_curve,auc
import matplotlib.pyplot as plt
import random
actual = [1,1,1,0,0,0]
prediction = [0.9,0.9,0.9,0.1,0.1,0.1]
false_positive_rate,true_positive_rate,thresholds = roc_curve(actual,prediction)
roc_auc = auc(false_positive_rate,true_positive_rate)
plt.title('ROC-curve')
plt.plot(false_positive_rate,true_positive_rate,'b',label = 'AUC = %0.2f' % roc_auc)
plt.legend(loc = 'lower right')
plt.plot([0,1],[0,1],'r--')
plt.xlim([-0.1,1.2])
plt.xlim([-0.1,1.2])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()
说明
ROC曲线
需要提前说明的是,我们这里只讨论二值分类器。对于分类器,或者说分类算法,评价指标主要有precision,recall,F-score[^1],以及我们今天要讨论的ROC和AUC。
ROC曲线越接近左上角,该分类器的性能越好
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
.90-1 = very good (A)
.80-.90 = good (B)
.70-.80 = not so good (C)
.60-.70 = poor (D)
.50-.60 = fail (F)
内容后续再补……