使用R和Python計算AUC

2021-07-10 13:03:13 字數 1640 閱讀 5623

某日重新灑下的分割線,無奈的我又用回了python…原因有兩個,第一python用了好久了,不想再去用r了,雖然r的ggplot畫圖很好看,不過今天安裝了python的ggplot庫-。-好激動!,第二,也是r的一大缺憾,就是迴圈簡直是慢得離譜。所以又用回了python,於是,就硬著頭皮來分析之前的程式裡的變數引用了,果然發現了大問題!之前認為python對比r的乙個優勢就是在於變數的引用,無奈我的功力不夠很多自以為是引用,其實是傳遞了值,比如dataframe中的a = frame.values,我輸出了id(a)和id(frame.values)發現兩個id不一樣,然後又對a進行了子級的操作,發現frame根本就沒改變,本以為在這裡為了節省記憶體用了引用,卻沒想到在這裡拜拜的浪費記憶體,於是經過一番修改,該死的memoryerror終於消失了:)

下面進入正題

auc:受試者工作特徵曲線 (receiver operating characteristic curve,roc曲線),又稱為感受性曲線(sensitivity curve)。得此名的原因在於曲線上各點反映著相同的感受性,它們都是對同一訊號刺激的反應,只不過是在幾種不同的判定標準下所得的結果而已。接受者操作特性曲線就是以虛報概率為橫軸,擊中概率為縱軸所組成的座標圖,和被試在特定刺激條件下由於採用不同的判斷標準得出的不同結果畫出的曲線。

那麼先來了解下roc:受試者工作特徵曲線 (receiver operating characteristic curve,roc曲線),又稱為感受性曲線(sensitivity curve)。得此名的原因在於曲線上各點反映著相同的感受性,它們都是對同一訊號刺激的反應,只不過是在幾種不同的判定標準下所得的結果而已。接受者操作特性曲線就是以虛報概率為橫軸,擊中概率為縱軸所組成的座標圖,和被試在特定刺激條件下由於採用不同的判斷標準得出的不同結果畫出的曲線。

好了概念就介紹到這裡,至於具體的auc計算方法在這裡就不在贅述了,下面講講rocr包怎麼計算auc的:

首先

library

(rocr)

然後就可以開始計算了

score <- c(1.1,0.2,3.4,5.1,2.1,0.4,2.4)

label

<- c(0,0,1,0,1,0,0)

pred <- prediction(score,label)

auc <- performance(pred,'auc')

auc <- unlist(slot(auc,'y.values'))

print(auc)

輸出計算結果

[1] 0.7
暫時就用到這裡了,至於roc的曲線的繪製,tpr,fpr的計算,rocr包都可以勝任,以後需要就再補充吧。

下面是用python計算auc的例子:

from sklearn.metrics import roc_auc_score

score = [1.1,0.2,3.4,5.1,2.1,0.4,2.4]

label = [0,0,1,0,1,0,0]

auc = roc_auc_score(label,score)

print

'auc:',auc

輸出結果:

auc: 0.7

python計算auc的方法

1 安裝scikit learn 1.1 scikit learn 依賴 分別檢視上述三個依賴的版本 python v 結果 python 2.7.3 python c import scipy print scipy.version.version scipy版本結果 0.9.0 python c...

python計算auc指標例項

1 安裝scikit learn 1.1scikit learn 依賴 python 2.6 or 3.3 numpy 1.6.1 scipy 0.9 分別檢視上述三個依賴的版本,python v 結果 python 2.7.3 python c import scipy print scipy.v...

使用SQL計算AUC值

在開發一些機器學習應用時,經常需要展示模型的roc曲線以及auc值。我們固然可以在 中編寫函式或者直接呼叫已有的軟體包來計算,但在某些場景下當面臨的資料量很大時,網路的傳輸可能會影響系統的效能。這種情況下可以考慮直接在sql語句中計算,而不需要將資料傳回到客戶端,從而提公升效率和穩定性。計算auc值...