roc_auc_score

roc_auc_score(Receiver Operating Characteristics(受试者工作特性曲线,也就是说在不同的阈值下,True Positive Rate和False Positive Rate的变化情况))

我们只考虑判为正的情况时,分类器在正例和负例两个集合中分别预测,如果模型很好,在正例中预测,百分百为正例,而在负例中预测,百分0为正例,说明模型分类能力很强,因为对于不同的例子进行了区别对待,正确识别了。

如果模型很差,在正负例两个集合中,全都一般判为正,一半判为负,则说明这个分类器啥也没干。

TPR(预测为正的在正例中的比例) = TP/P = TP/(TP+FN)

FPR(预测为正的在正例中的比例) = FP/N = FP/(FP+TN)

并且通过调整阈值,一定存在两个点:

1、全部样本都判正,则TPR=1, FPR=1

2、全部样本都判负,则TPR=0, FPR=0

所以,如果分类器啥也没干,则为中间虚线,AUC=AUCmin=0.5

如果分类器真正有识别能力,则TPR>FPR,也就是在正例中更倾向于判正,负例中倾向于判负,为图中实线。

如果在某一阈值下,TPR为1,FPR=0,则这个分类器经过点(0,1),AUC=AUCmax=1

实际模型判定时,通常令thresh=0.5,即高于0.5判正,低于0.5判负。但考虑到样本不均的问题,我们应该使用不同的thresh,然后去计算auc。这个过程可以让sklearn帮我们完成。

import numpy as np

from sklearn.metrics import roc_auc_score

y_true = np.array([0, 0, 1, 1])

y_scores = np.array([0.1, 0.4, 0.35, 0.8])

roc_auc_score(y_true, y_scores)

0.75

auc就是曲线下面积,这个数值越高,则分类器越优秀

https://zhuanlan.zhihu.com/p/100059009

https://www.zhihu.com/question/39840928

猜你喜欢

转载自www.cnblogs.com/yjybupt/p/12930869.html