sklearn計(jì)算ROC曲線下面積AUC

sklearn.metrics.auc

sklearn.metrics.auc(x, y, reorder=False)
通用方法薪贫,使用梯形規(guī)則計(jì)算曲線下面積。

import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
pred = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2)
metrics.auc(fpr, tpr)

sklearn.metrics.roc_auc_score

sklearn.metrics.roc_auc_score(y_true, y_score, average='macro', sample_weight=None)

計(jì)算預(yù)測(cè)得分曲線下的面積刻恭。
只用在二分類任務(wù)或者 label indicator 格式的多分類瞧省。

  • y_true:array, shape = [n_samples] or [n_samples, n_classes]
    真實(shí)的標(biāo)簽
  • y_score:array, shape = [n_samples] or [n_samples, n_classes]
    預(yù)測(cè)得分,可以是正類的估計(jì)概率鳍贾、置信值或者分類器方法 “decision_function” 的返回值鞍匾;
  • average:string, [None, ‘micro’, ‘macro’ (default), ‘samples’, ‘weighted’]
  • sample_weight : array-like of shape = [n_samples], optional
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)

一個(gè)完整的例子

from sklearn import datasets,svm,metrics,model_selection,preprocessing
iris=datasets.load_iris()
x=iris.data[iris.target!=0,:2]
x=preprocessing.StandardScaler().fit_transform(x)
y=iris.target[iris.target!=0]
x_train,x_test,y_train,y_test=model_selection.train_test_split(x,y,
test_size=0.1,random_state=25)
clf=svm.SVC(kernel='linear')
clf.fit(x_train,y_train)
metrics.f1_score(y_test,clf.predict(x_test))
0.75
fpr,tpr,thresholds=metrics.roc_curve(y_test,clf.decision_function(x_test),
pos_label=2)
metrics.auc(fpr,tpr)
0.95833333333333337

總結(jié)

roc_auc_score 是 預(yù)測(cè)得分曲線下的 auc,在計(jì)算的時(shí)候調(diào)用了 auc骑科;

    def _binary_roc_auc_score(y_true, y_score, sample_weight=None):
        if len(np.unique(y_true)) != 2:
            raise ValueError("Only one class present in y_true. ROC AUC score "
                             "is not defined in that case.")

        fpr, tpr, tresholds = roc_curve(y_true, y_score,
                                        sample_weight=sample_weight)
        return auc(fpr, tpr, reorder=True)

兩種方法都可以得到同樣的結(jié)果橡淑。

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print(roc_auc_score(y_true, y_scores))
0.75
fpr,tpr,thresholds=metrics.roc_curve(y_true,y_scores,pos_label=1)
print(metrics.auc(fpr,tpr))
0.75

需要注意的是,roc_auc_score 中不能設(shè)置 pos_label咆爽,而在 roc_curve中梁棠,pos_label的默認(rèn)設(shè)置如下:

    classes = np.unique(y_true)
    if (pos_label is None and
        not (array_equal(classes, [0, 1]) or
             array_equal(classes, [-1, 1]) or
             array_equal(classes, [0]) or
             array_equal(classes, [-1]) or
             array_equal(classes, [1]))):
        raise ValueError("Data is not binary and pos_label is not specified")
    elif pos_label is None:
        pos_label = 1.

也就是說,roc_auc_score 中 pos_label 必須滿足以上條件斗埂,才能直接使用符糊,否則,需要使用 roc_curve 和auc蜜笤。

import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
pred = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=1)
print(metrics.auc(fpr, tpr))
0.75

print(metrics.roc_auc_score(y,pred))
ValueError: Data is not binary and pos_label is not specified
#pos_label 不符合 roc_curve的默認(rèn)設(shè)置,因此報(bào)錯(cuò)把兔,可以修改為
y=np.array([0,0,1,1])  #np.array([-1,-1,1,1]) 
print(metrics.roc_auc_score(y,pred))
0.75
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末围橡,一起剝皮案震驚了整個(gè)濱河市翁授,隨后出現(xiàn)的幾起案子收擦,更是在濱河造成了極大的恐慌谍倦,老刑警劉巖昼蛀,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仇哆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡油讯,警方通過查閱死者的電腦和手機(jī)撞羽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門诀紊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邻奠,“玉大人碌宴,你說我怎么就攤上這事贰镣”。” “怎么了上煤?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵劫狠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我苔埋,道長(zhǎng)孕惜,這世上最難降的妖魔是什么晨炕? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任削罩,我火速辦了婚禮弥激,結(jié)果婚禮上微服,老公的妹妹穿的比我還像新娘缨历。我一直安慰自己辛孵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著习劫,像睡著了一般榜聂。 火紅的嫁衣襯著肌膚如雪须肆。 梳的紋絲不亂的頭發(fā)上豌汇,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音逻澳,去河邊找鬼斜做。 笑死瓤逼,一個(gè)胖子當(dāng)著我的面吹牛贷帮,可吹牛的內(nèi)容都是我干的诱告。 我是一名探鬼主播诲侮,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼沟绪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼绽慈!你這毒婦竟也來了坝疼?” 一聲冷哼從身側(cè)響起谆沃,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤耕陷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后锌介,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗜诀,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猾警,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隆敢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片发皿。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雳窟,死狀恐怖匣屡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情券躁,我是刑警寧澤掉盅,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站永票,受9級(jí)特大地震影響侣集,放射性物質(zhì)發(fā)生泄漏踪央。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一畦浓、第九天 我趴在偏房一處隱蔽的房頂上張望讶请。 院中可真熱鬧,春花似錦屎媳、人聲如沸夺溢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽风响。三九已至,卻和暖如春丹禀,著一層夾襖步出監(jiān)牢的瞬間状勤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工双泪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留持搜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓焙矛,卻偏偏與公主長(zhǎng)得像葫盼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子村斟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自:https://districtdatalabs.silvrback.com/modern-methods...
    Traeyee閱讀 1,346評(píng)論 0 0
  • Binary classification with logistic regression 概率分布 respo...
    異想派閱讀 626評(píng)論 0 2
  • 愛攝影的奧派閱讀 317評(píng)論 0 0
  • 掩紗避秋月剪返,環(huán)兔暖心人。 枕臥難入眠邓梅,細(xì)思嫁娶事脱盲。 非吾耍脾性,實(shí)乃傷透心日缨。 若問果如何钱反?離合皆是愁。 ...
    大王小馬閱讀 172評(píng)論 0 1
  • 說來有趣匣距,上周和兩個(gè)投資人分別見面的時(shí)候面哥,他們都提起了相同的一件事:你們?nèi)齻€(gè)人未來肯定會(huì)有分歧,但一定不要撕逼毅待。 ...
    Tuvie閱讀 598評(píng)論 0 1