sklearn.metrics.roc_curve使用說明
roc曲線是機器學習中十分重要的一種學習器評估準則,在sklearn中有完整的實現,api函數為sklearn.metrics.roc_curve(params)函數。
官方接口說明:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html
不過這個接口只限於進行二分類任務。!
下面主要是對官方接口做一下翻譯。
接口函數 sklearn.metrics.
roc_curve
(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True
參數說明
y_true:數組,存儲數據的標簽,維度就是樣本數,形如[0,1,1,0,1...]這樣的,也可以是-1和1,只要有兩個值
y_score:數組,存儲數據的預測概率值,維度也是樣本數,形如[0.38,0.5,0.8]這樣的
pos_label:整型或字符串,當y_true中只有一個值時,比如都是1或者都是0,無法判斷哪個是正樣本,需要用一個數字或字符串指出
sample_weight:采樣權重,這個官方沒有仔細說,是一個可選參數,有待考察
drop_intermediate:丟掉一些閾值,以便畫roc曲線圖
返回值:一共三個,分別是fpr,tpr,thresholds
fpr:數組,隨閾值上漲的假陽性率
tpr:數組,隨閾值上漲的真正例率
thresholds:數組,對預測值排序後的score列表,作為閾值,排序從大到小
舉例
>>> import numpy as np >>> from sklearn import metrics >>> y = np.array([1, 1, 2, 2]) >>> scores = np.array([0.1, 0.4, 0.35, 0.8]) >>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)>>> fpr array([ 0. , 0.5, 0.5, 1. ]) >>> tpr array([ 0.5, 0.5, 1. , 1. ]) >>> thresholds array([ 0.8 , 0.4 , 0.35, 0.1 ])
解釋一下,樣本標簽為y,共有1和2兩個值,預測值為scores,裏面是預測為正樣本的概率,正樣本是什麽呢,在函數中通過pos_label指定為2,然後便將score排序,
由大到小,也就有了後面的thresholds,按照這個順序,依次將前面的樣本預測為正樣本,後面為負樣本,這裏看一下樣本標簽和預測值的一一對應
[1,1,2,2]->[0.1,0.4,0.35,0.8],共有兩個正樣本,兩個負樣本
以0.8為閾值,第一個假設為正樣本,後面三個假設為負樣本,0.8對應的確實為正樣本,則真正例率為1/2,假陽性率為0,因為沒有負樣本被誤判為正樣本
然後以0.4為閾值,前兩個假設為正樣本,後兩個假設為負樣本,0.4對應的為負樣本,則真正例數沒有增加,於是仍為0.5,而假陽性增加一例,此時假陽性率為1/2
後面的依此類推,這就是這個api的基本使用說明。
補充下:tpr=tp/所有正樣本,fpr=fp/所有負樣本
sklearn.metrics.roc_curve使用說明