roc曲线与sklearn [python]

时间:2016-01-02 10:24:07

标签: python machine-learning roc

使用roc库我有一个理解问题。

我想用python绘制一条roc曲线 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html

我正在编写一个评估探测器(haarcascade,神经网络)并想要评估它们的程序。 所以我已经将数据保存在文件中,格式如下:

 0.5 TP
 0.43 FP
 0.72 FN
 0.82 TN 
 ...

而TP表示真阳性,FP表示假阳性,FN表示假阴性,TN表示真阳性

我解析它并用这个数据集填充4个数组。

然后我想把它放在

   fpr, tpr = sklearn.metrics.roc_curve(y_true, y_score, average='macro', sample_weight=None)

但是怎么做?在我的情况下y_true和y_score是什么? 之后,我把它放在fpr,tpr中

auc = sklearn.metric.auc(fpr, tpr)

2 个答案:

答案 0 :(得分:9)

引用维基百科:

  

通过在不同阈值设置下绘制FPR(误报率​​)与TPR(真阳性率)来创建ROC。

为了计算FPR和TPR,您必须为函数sklearn.metrics.roc_curve提供真正的二进制值和目标分数。

所以在你的情况下,我会做这样的事情:

free :: (Functor t, Monad m) => (∀ a. t a → a) → (∀ a. Free t a → m a)

如果您想更深入地了解如何计算所有可能的阈值的误报率和真阳性率,我建议您阅读this article

答案 1 :(得分:0)

代替

roc_auc = auc(y_true, y_score)

使用:

roc_auc = auc(fpr, tpr)