2016-12-31 16 views
0

我使用python在二進制目標類的不平衡數據集上運行隨機森林。我想將默認概率閾值0.5更改爲另一個值以提高召回率和精確度。到目前爲止,我找不到任何可用於執行此任務的已定義方法或類。任何人都可以請教一個方法,或者是否意味着我應該自己編寫代碼?乾杯如何在隨機森林中設置自己的概率閾值?

+0

您正在運行哪個庫? Python沒有「隨機森林」。 –

+0

@AmiTavory我使用'from sklearn.ensemble import RandomForestClassifier' – LUSAQX

+1

您可以使用'p = clf.predict_proba(X)'得到概率,然後計算'Y = p> custom_value' – tihom

回答

1

的RandomForestClassifier scikit學習沒有固定的閾值,以指定一個類樣品。正如你在RandomForestClassifier.predict的源代碼中看到的那樣,它只是返回最可能的類。當然你可以使用@thiom提出的方法,但我很難想象這會提高精度和回憶。

舉例來說,如果你選擇的閾值是0.7和類概率爲0.6和0.4,你什麼分配類?一個都沒有?

作爲一種替代方法,您可以嘗試使用RandomForestClassifier的class_weight選項來更多地重視您的代表性不足的班級。

+0

我同意。改變預測概率並不是提高不平衡類的精度/召回率的有效方法。您將需要更新您的模型訓練策略,如玩類別權重(如Rene所建議的)或更改抽樣頻率。 – tihom