簡體   English   中英

Scikit-學習predict_proba的RandomForestClassifier輸出

[英]Scikit-learn RandomForestClassifier output of predict_proba

我有一個數據集,我分成兩個用於訓練和測試隨機森林分類器與scikit學習

我有87個班級和344個樣本。 的輸出predict_proba是,大部分的時間,一個3維陣列(87, 344, 2)它實際上是一個list的87 numpy.ndarray(344, 2)的元素)。

有時候,當我選擇不同的樣本子集進行訓練和測試時,我只得到一個二維數組(87, 344) (盡管在哪些情況下我無法解決)。

我的兩個問題是:

  • 這些尺寸代表什么? 我得出了得到ROC AUC分數,我必須得到輸出的一半(即(87, 344, 2)[:,:,1] ,轉置它,然后將它與我的基本事實進行比較( roc_auc_score(ground_truth, output_of_predict_proba[:,:,1].T)本質上。但我不明白它的真正含義。
  • 為什么輸出會隨着數據的不同子集而變化? 我無法理解它在哪種情況下返回3D數組,在哪種情況下返回2D數組。

classifier.predict_proba()返回類概率。 數組的n維度將根據您訓​​練的子集中有多少個類而有所不同

您確定用於適合RF的陣列具有正確的形狀嗎? (n_samples,n_features)用於數據,(n_samples)用於目標類。 在你的情況下你應該得到一個數組Y_pred的形狀(n_samples,n_classes)so(344,87),其中行r的項目i是樣本X [r,:]的類i的預測概率。 注意sum( Y_pred[r,:] ) = 1

但是我想如果你的目標數組Y有形狀(n_samples,n_classes),其中每一行都是零,除了一個對應於樣本類的一行,那么sklearn將它作為一個多輸出預測問題(單獨考慮每個類)但我不認為這是你想做的。 在這種情況下,對於每個類和每個樣本,您將預測屬於該類的概率。

最后,輸出確實取決於訓練集,因為它取決於類的數量(在訓練集中)。 您可以使用屬性n_classes獲取它(並且您也可以通過手動設置強制類的數量),並且還可以使用屬性classes獲取類的值。 請參閱文檔

希望能幫助到你 !

暫無
暫無

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

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