簡體   English   中英

sklearn.metrics.precision_recall_curve:為什么精度和重新調用返回的數組而不是單個值

[英]sklearn.metrics.precision_recall_curve: Why are the precision and recall returned arrays instead of single values

我正在計算我最近准備的數據集上的現成算法的精度和召回率。

這是一個二元分類問題,我希望計算我構建的每個分類器的精度,召回率和f分數。

test_x, test_y, predics, pred_prob,score = CH.buildBinClassifier(data,allAttribs,0.3,50,'logistic')

構建分類器方法基本上構建分類器,擬合訓練數據並返回test_x(測試數據的特征),test_y(地面實況標簽),預測(由分類器做出的預測),red_prob(來自LogisiticRegression.predict_proba預測概率) LogisiticRegression.predict_proba方法)。

以下是計算精確召回的代碼:

from sklearn.metrics import precision_recall_curve

pr, re, _ = precision_recall_curve(test_y,pred_prob,pos_label=1)
pr
(array([ 0.49852507,  0.49704142,  0.49554896,  0.49702381,  0.49850746,
         0.5       ,  0.5015015 ,  0.50301205,  0.50453172,  0.50606061,
         . . . . . . . 
         0.875     ,  1.        ,  1.        ,  1.        ,  1.        ,
         1.        ,  1.        ,  1.        ,  1.        ])
re
array([ 1.        ,  0.99408284,  0.98816568,  0.98816568,  0.98816568,
         0.98816568,  0.98816568,  0.98816568,  0.98816568,  0.98816568,
         . . . . . . . 
         0.04142012,  0.04142012,  0.03550296,  0.0295858 ,  0.02366864,
         0.01775148,  0.01183432,  0.00591716,  0.        ]))

我不明白為什么精確和召回陣列? 它們不應該只是單個數字嗎?

由於精度計算為tpf/(tpf+fpf)並且同樣可以回想起定義?

我知道通過下面的代碼計算平均精度回憶,但不知何故看到數組而不是tpf,fpf,精度和召回讓我想知道發生了什么。

from sklearn.metrics import precision_recall_fscore_support as prf

precision,recall,fscore,_ = prf(test_y,predics,pos_label=1,average='binary')

編輯:但沒有averagepos_label參數,它會報告每個類的精度。 有人可以解釋這兩種方法的輸出之間的差異嗎?

在二進制分類問題中,pred_prob是實例在每個類中的概率,因此實際上預測值(類)取決於該概率,而另一個值則稱為閾值。 pred_prob大於閾值的所有實例都分為一類,而另一類則更小。 默認閾值為0.5。

因此,改變閾值我們有不同的預測結果。 在許多問題中,通過調整閾值可以獲得更好的結果。 這就是為您提供precision_recall_curve的原因。

來自precision_recall_curve的sklearn文檔:

計算不同概率閾值的精確回憶對。

像邏輯回歸這樣的分類器模型實際上不輸出類標簽(如“0”或“1”),它們輸出概率 (如0.67)。 這些概率告訴您輸入樣本屬於特定類的可能性,如正(“1”)類。 但是您仍然需要選擇概率閾值,以便算法可以將概率(0.67)轉換為類(“1”)。

如果選擇閾值0.5,則計算概率大於0.5的所有輸入樣本將分配給正類。 如果您選擇不同的閾值,並且您獲得了分配給正負類的不同數量的樣本,因此不同的精度和召回分數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM