[英]Scikit-learn RandomForestClassifier output of predict_proba
我有一個數據集,我分成兩個用於訓練和測試隨機森林分類器與scikit學習 。
我有87個班級和344個樣本。 的輸出predict_proba
是,大部分的時間,一個3維陣列(87, 344, 2)
它實際上是一個list
的87 numpy.ndarray
第(344, 2)
的元素)。
有時候,當我選擇不同的樣本子集進行訓練和測試時,我只得到一個二維數組(87, 344)
(盡管在哪些情況下我無法解決)。
我的兩個問題是:
(87, 344, 2)[:,:,1]
,轉置它,然后將它與我的基本事實進行比較( roc_auc_score(ground_truth, output_of_predict_proba[:,:,1].T)
本質上。但我不明白它的真正含義。 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.