ROC曲线以及AUC值
ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。该曲线绘制了以下两个参数:
真正例率 :将实际正的预测为正的占实际正的比例
假正例率:将实际负的预测正的占实际负的比例
真正例率
假正例率
阈值:
用于程序判断实例是正是负的临界值。
实例
sklearn.metrics.roc_curve(y_true,y_score,*,pos_label = None,sample_weight = None,drop_intermediate = True)
参数
y_true:真实的样本标签,默认为{0,1}或者{-1,1}。如果要设置为其它值,则 pos_label 参数要设置为特定值。例如要令样本标签为{1,2},其中2表示正样本,则pos_label=2。
y_score:对每个样本的预测结果。
pos_label:正样本的标签。
返回值,roc_curve() 函数有3个返回值:
fpr:假正例率
tpr:真正例率
thresholds:阈值
>>> 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. , 0.5, 0.5, 1. ])
>>> tpr
array([0. , 0.5, 0.5, 1. , 1. ])
>>> thresholds
array([1.8 , 0.8 , 0.4 , 0.35, 0.1 ])
在上面实例中,假设2表示正,1表示负,则
T
P
+
F
N
=
2
;
F
P
+
T
N
=
2
TP + FN = 2;FP + TN = 2
TP+FN=2;FP+TN=2
1、当阈值取1.8时
T
P
=
0
F
P
=
0
所
以
f
p
r
0
=
;
t
p
r
=
0
TP = 0 \\ FP = 0 \\ 所以fpr0=;tpr=0
TP=0FP=0所以fpr0=;tpr=0
2、当阈值取0.8时,第二个2被预测为正
T
P
=
1
F
P
=
0
所
以
f
p
r
=
0
;
t
p
r
=
0.5
TP = 1 \\ FP = 0 \\ 所以fpr=0;tpr=0.5
TP=1FP=0所以fpr=0;tpr=0.5
3、当阈值取0.4时,第二个1被预测为正,
T
P
=
1
F
P
=
1
所
以
f
p
r
=
0.5
;
t
p
r
=
0.5
TP = 1 \\ FP = 1 \\ 所以fpr=0.5;tpr=0.5
TP=1FP=1所以fpr=0.5;tpr=0.5
3、当阈值取0.35时,两个2都被预测为正,再加上第二个1被预测为正
T
P
=
2
F
P
=
1
所
以
f
p
r
=
0.5
;
t
p
r
=
1
TP = 2 \\ FP = 1 \\ 所以fpr=0.5;tpr=1
TP=2FP=1所以fpr=0.5;tpr=1
3、当阈值取0.35时,所有都预测为2了
T
P
=
2
F
P
=
2
所
以
f
p
r
=
1
;
t
p
r
=
1
TP = 2 \\ FP = 2 \\ 所以fpr=1;tpr=1
TP=2FP=2所以fpr=1;tpr=1