1. 程式人生 > >sklearn.metrics.auc解析

sklearn.metrics.auc解析

官方地址:點選開啟連結

形式:sklearn.metrics.auc(xyreorder=False)

規則:利用梯形法則計算曲線下的面積(AUC)。

Parameters:

x : array, shape = [n]

x 座標

y : array, shape = [n]

y 座標

reorder : boolean, optional (default=False)

如果是True,假設在關係的情況下曲線是上升的,就像ROC曲線一樣。如果曲線不上升,結果將是錯誤的。

Returns:

auc : float


舉例:由之前sklearn.metrics.roc_curve()衍生而來。具體詳見https://blog.csdn.net/u014264373/article/details/80487766

已經得到了FPR.TPR,由此就得到了橫縱座標,然後用高數中學習的計算曲面面積的方法,也就梯度法(一種積分方法來計算曲線下面積)

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)
print(fpr,'\n',tpr,'\n',thresholds)


這個比較簡單,繪圖如下:


就是計算黃色部分的面積,口算都可得到AUC=0.75

但是複雜的資料還是要用標準的演算法,詳細過程可以參考部落格,寫的很好:點選開啟連結

只想知道怎麼使用,不用知道原理的,計算程式碼如下:

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)
print(fpr,'\n',tpr,'\n',thresholds)
print(metrics.auc(fpr,tpr))