之前看了一下sklearn的roc_curve()函数,让sklearn的源码告诉你,ROC曲线应该怎么画,其中还附带了对画图过程的简单优化。
以下是之前的笔记原文:
---------------------------------------------------------------------------------------
在用sklearn的roc_curve()函数的时候,发现返回的结果和想象中不太一样,理论上threshold应该取遍所有的yscore(即模型预测值)。但是roc_curve()的结果只输出了一部分的threhold。从源码找到了原因。
初始数据:
y_true = [0, 0, 1, 0, 0, 1, 0, 1, 0, 0]
y_score = [0.31689620142873609, 0.32367439192936548, 0.42600526758001989, 0.38769987193780364, 0.3667541015524296, 0.39760831479768338, 0.42017521636505745, 0.41936155918127238, 0.33803961944475219, 0.33998332945141224]
通过sklearn的roc_curve函数计算false positive rate和true positive rate以及对应的threshold:
fpr_skl, tpr_skl, thresholds_skl = roc_curve(y_true, y_score, drop_intermediate=False)
计算得到的值如下:
fpr_skl
[ 0. 0.14285714 0.14285714 0.14285714 0.2857142