python計算ROC曲線和面積AUC

2021-10-08 20:29:26 字數 1200 閱讀 4196

roc曲線是根據一系列不同的二分類方式(分界值或決定閾),以真正率(也就是靈敏度)(true positive rate,tpr)為縱座標,假正率(1-特效性)(false positive rate,fpr)為橫座標繪製的曲線。通過將連續變數設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,從而可以繪製roc曲線。

縱座標:真正率(true positive rate , tpr)或靈敏度(sensitivity)

tpr = tp /(tp + fn) (正樣本**結果數 / 正樣本實際數)

橫座標:假正率(false positive rate , fpr)

fpr = fp /(fp + tn) (被**為正的負樣本結果數 /負樣本實際數)

利用sklearn.metrics.roc_curve可以計算roc曲線

from sklearn.metrics import roc_curve, auc

y_true = [0, 1, 1]

y_score = [0.1, 0.8, 0.7]

fpr, tpr, thresholds = roc_curve(y_true, y_score)

print(fpr, tpr, thresholds)

"""[0. 0. 0. 1.]

[0. 0.5 1. 1. ]

[1.8 0.8 0.7 0.1]

"""

其中y_true是真實標籤,y_score是**概率,fpr是假正率,tpr是真正率,thresholds是閾值(thresholds[0]=max(y_score)+1=1.8)。thresholds是y_score去重複元素後加上1.8所以一共4個元素。

在這個例子中,正樣本實際數(tp + fn)=2,負樣本實際數(fp + tn)=1

計算出roc曲線後,可以利用sklearn.metrics.auc計算auc:

from sklearn.metrics import roc_curve, auc

y_true = [0, 1, 1]

y_score = [0.1, 0.8, 0.7]

fpr, tpr, thresholds = roc_curve(y_true, y_score)

print(auc(fpr, tpr))

python 繪製ROC曲線

簡述 機器學習很多是為測試樣本產生乙個 值,然後將這個 值與閾值進行對比,若大於閾值則分為正類,否則分為反類。這個 值的好壞,直接決定了學習器泛化能力。根據這個 值,我們可以對測試樣本進行排序,最可能 是正例的排在最前面,最不可能 是正例的排在最後面。這樣,分類過程就相當於在這個排序中以某個截斷點將...

ROC曲線及其matlab實現ROC曲線的繪畫

roc曲線 receiver operating characteristic curve 是利用classification模型真正率 true positive rate 和假正率 false positive rate 作為座標軸,圖形化表示分類方法的準確率的高低。roc圖的一些概念定義 真正...

ROC曲線 PR曲線

在 的結果分析中,roc和pr曲線是經常用到的兩個有力的展示圖。1.roc曲線 roc曲線 receiver operating characteristic 是一種對於靈敏度進行描述的功能影象。roc曲線可以通過描述真陽性率 tpr 和假陽性率 fpr 來實現。由於是通過比較兩個操作特徵 tpr和...