Scikit - 如何定义绘制 roc 曲线的阈值
Scikit - How to define thresholds for plotting roc curve
我有一个增强树模型以及测试数据集的概率和分类。我正在尝试绘制 roc_curve 相同的内容。但是我无法弄清楚如何在 scikit 学习中为 roc 曲线定义 thresholds/alpha。
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()
我在这里看了一个类似的问题:thresholds in roc_curve in scikit learn
但是想不通。我也愿意使用其他一些库。
fpr
和 tpr
中的每个值都是针对特定阈值计算的,这些阈值的值在第三个输出 roc_curve 中返回(您的情况下为变量 _)
这里有一个例子
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 为 .5,依此类推
我有一个增强树模型以及测试数据集的概率和分类。我正在尝试绘制 roc_curve 相同的内容。但是我无法弄清楚如何在 scikit 学习中为 roc 曲线定义 thresholds/alpha。
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()
我在这里看了一个类似的问题:thresholds in roc_curve in scikit learn
但是想不通。我也愿意使用其他一些库。
fpr
和 tpr
中的每个值都是针对特定阈值计算的,这些阈值的值在第三个输出 roc_curve 中返回(您的情况下为变量 _)
这里有一个例子
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 为 .5,依此类推