簡體   English   中英

Scikit - 如何定義繪制 roc 曲線的閾值

[英]Scikit - How to define thresholds for plotting roc curve

我有一個提升樹模型以及測試數據集的概率和分類。 我正在嘗試繪制相同的 roc_curve。 但我無法弄清楚如何在 scikit learn 中為 roc 曲線定義閾值/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()

我在這里看了一個類似的問題: scikit learn roc_curve 中的閾值

卻想不通。 我也願意使用其他一些圖書館。

fprtpr每個值都是針對某個閾值計算的,這些閾值的值在第三個輸出 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 為 0.5,依此類推

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM