我目前正在使用scikit-learn
來處理多標籤分類問題,並且在學習如何獲得每個類/標籤的預測概率方面遇到了一些問題 - 類似於scikit-learn的.predict_proba()
方法在二元分類任務上所做的。理解多標籤問題的預測概率
我的y
是一個100x10二維數組,有10個獨特的類,我使用scikit-learn的ensemble.RandomForestClassifier()
作爲我的分類器。
我想要做的就是預測一組給定特徵屬於y
中某個類別(在下面註明爲cl_
)的概率。所以基本上我想象的輸出與此類似:
cl_1 | cl_2 | cl_3 | cl_4 | cl_5 | cl_6 | cl_7 | cl_8 | cl_9 | cl_10
---------------------------------------------------------------------
0.0 | 0.0 | 0.0 | 0.1 | 0.3 | 0.0 | 0.0 | 0.0 | 0.6 | 0.0
注:我有適合隨機森林分類的數據集和.predict()
方法按預期工作。但是,.predict_proba()
方法返回形狀爲C x M的概率,其中C是唯一類的數量,而M是數據集中實例的數量。
澄清/更新:下面是我的數據集的實際y
實例:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0]
使用上X_test
的.predict_proba()
返回形狀的2D陣列39 X 848048(其中39是唯一的類的數量848,048是實例的數量)。 所以通俗地說,我問的是:自從.predict_proba()
返回(就上面的小圖表而言),我該如何做。
注:此:
y_hat_proba = clf.predict_proba(X_test)
print(y_hat_proba[0][1])
回報[ 1. 0.]
是你的類變量。你是否對它進行過熱碼編碼?換句話說,每個類都是一個二進制向量?我不明白爲什麼它的100 x 10. –
是通過預處理.MultiLabelBinarizer()。我使用它是因爲多個標籤。我以100×10爲例--100是實例數的例子,10是10個獨特的類。 – ralston
你可以發佈幾個訓練樣例的示例輸出嗎?僅僅是列沒有總結到一個?因爲聽起來你想要一個M x C代碼作爲你的輸出,對嗎? –