数据类笔试题:Python绘制ROC曲线和计算AUC
这是我最近应聘某家互联网公司时遇到的笔试题:用Python或者R绘制ROC曲线并计算AUC.
1. 基本介绍
##1.1 ROC
Receiver Operating Characteristic,评判分类模型性能的方法,通过画在二维平面的曲线表示,横坐标为FPR(false positive rate,0~1),纵坐标为TPR(true positive rate,0~1)。
1.2 AUC
Area Under Curve,ROC曲线下面的面积,用来度量分类模型好坏的一个标准,值越大则分类模型效果越好。
针对二分类的问题,实例一般分为正类和负类,但通常还会被被分为以下四种情况:
(1)真正类(TP):实例是正类,被预测为正类;
(2)假负类(FN):实例是正类,被预测为负类;
(1)假正类(FP):实例是负类,被预测为正类;
(2)真负类(TN):实例是负类,被预测为负类。
1.3 ROC坐标点
横坐标(真正率):FPR=FP/(FP+TN)
纵坐标(假正率):TPR=TP/(TP+FN)
理想坐标点:TRP=1, FRP=0.
2. Python实现
主要需要理解sklearn.metrics有roc_curve, auc两个函数。
(1)ROC曲线绘制:
FPR,TPR,threshold=roc_curve(test,score,pos_label=1)
其中:
FPR:横坐标值
TPR:纵坐标值
threshold:阈值
test:测试集的结果
score:测试集预测的结果
pos_label=1:测试集值为1的是正类,其余为负类
(2)AUC值计算: