ROC 曲线函数
在sklearn中,sklearn.metrics.roc_curve() 函数用于绘制ROC曲线。但是对于例子中如何得到返回值产生了疑惑,现在对于返回值的计算做一点解释。
主要参数:
- y_true:真实的样本标签,默认为{0,1}或者{-1,1}。如果要设置为其它值,则 pos_label 参数要设置为特定值。例如要令样本标签为{1,2},其中2表示正样本,则pos_label=2。
- y_score:对每个样本的预测结果。
- pos_label:正样本的标签。
返回值的计算
roc_curve() 函数有3个返回值:
- fpr:False positive rate。
- tpr:True positive rate。
- thresholds
下面以 sklearn 中的例子说明如何计算 fpr 和tpr。
>>> 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)
>>> fpr
array([0, 0.5, 0.5, 1])
>>> tpr
array([0.5, 0.5, 1, 1])
>>> thresholds
array([0.8, 0.4, 0.35, 0.1])
scores = [0.1, 0.4, 0.35, 0.8],每个阈值对应一个 fpr 和 tpr。
-
当 threshold = 0.8时:
0.1 < 0.8 0.1<0.8 0.1<0.8,第一个样本预测为负样本; 0.4 < 0.8 0.4<0.8 0.4<0.8,第二个样本预测为负样本; 0.35 < 0.8 0.35<0.8 0.35<0.8,第三个样本预测为负样本; 0.8 ≥ 0.8 0.8 \geq 0.8 0.8≥0.8,第四个样本预测为正样本。结合每个样本的真实标签,有 T P = 1 TP=1 TP=1, F P = 0 FP=0 FP=0, T N &