在scikit-learn中,你可以使用以下代码计算二分类器的曲线下面积:
roc_auc_score( Y, clf.predict_proba(X)[:,1] )
我只对曲线中假阳性率小于0.1的部分感兴趣。
给定这样的假阳性率阈值,我如何计算仅限于阈值之前的曲线部分的AUC?
这里有一个包含多个ROC曲线的示例,用于说明:
scikit-learn的文档展示了如何使用roc_curve
:
>>> import numpy as np>>> from sklearn import metrics>>> y = np.array([1, 1, 2, 2])>>> scores = np.array([0.1, 0.4, 0.35, 0.8])>>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)>>> fprarray([ 0. , 0.5, 0.5, 1. ])>>> tprarray([ 0.5, 0.5, 1. , 1. ])>>> thresholdsarray([ 0.8 , 0.4 , 0.35, 0.1 ]
有没有简单的方法从这里计算部分AUC?
似乎唯一的问题是如何在roc_curve
不一定提供的情况下计算fpr = 0.1时的tpr值。
回答:
Python sklearn的roc_auc_score()
现在允许你设置max_fpr
。在你的情况下,你可以设置max_fpr=0.1
,该函数将为你计算AUC。 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html