Scikit - 如何定义绘制 roc 曲线的阈值 [英] Scikit - How to define thresholds for plotting roc curve

查看:169
本文介绍了Scikit - 如何定义绘制 roc 曲线的阈值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个提升树模型以及测试数据集的概率和分类.我正在尝试绘制相同的 roc_curve.但我无法弄清楚如何在 scikit learn 中为 roc 曲线定义阈值/alpha.

I have a boosted trees model and probabilities and classification for test data set. I am trying to plot the roc_curve for the same. But I am unable to figure out how to define thresholds/alpha for roc curve in scikit learn.

from sklearn.metrics import precision_recall_curve,roc_curve,auc, average_precision_score

fpr = dict()
tpr = dict()
roc_auc = dict()

fpr,tpr,_ = roc_curve(ytest,p_test, pos_label=1)
roc_auc = auc(fpr,tpr)

plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")

plt.savefig('ROCProb.png')
plt.show()

我在这里查看了一个类似的问题:scikit learn 中 roc_curve 中的阈值

I looked at a similar question here : thresholds in roc_curve in scikit learn

但是想不通.我也愿意使用其他一些图书馆.

But could not figure out. I am open to using some other library as well.

推荐答案

fprtpr 中的每个值都是针对某个阈值计算的,这些阈值的值为在第三个输出 roc_curve 中返回(在您的情况下为变量 _)

Each value in fpr and tpr is computed for a certain threshold, the values of these thresholds are returned in the third output roc_curve (the variable _ in your case)

这是一个例子

import numpy as np
from sklearn import metrics
y_true = np.array([1, 1, 2, 2])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_scores, pos_label=2)

将数据制表以进行演示

   Threshold  FPR  TPR
0       0.80  0.0  0.5
1       0.40  0.5  0.5
2       0.35  0.5  1.0
3       0.10  1.0  1.0

上面的第一行显示阈值 .8 fpr 为 0,tpr 为 0.5,依此类推

The first row above shows that for threshold .8 fpr is 0 and tpr is .5 and so on

这篇关于Scikit - 如何定义绘制 roc 曲线的阈值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆