2016-05-01 34 views
0

我已經在Python中跟隨此Scikit-Learn example從森林估算器獲取.feature_importances_。在該示例中,ExtraTreesClassifier()與其默認的 超參數設置一起使用 - 這將意味着max_features='auto'。這個例子的輸出是10個特徵的重要性圖。Scikit-Learn在RFECV()中手動指定.max_features - 有多少功能獲得排名?

問題1:

當我再次運行這個例子,與max_features=2,該地塊仍然顯示所有10個特徵的特徵重要性有關。應該只顯示2個功能的重要性?

問題2:現在

,我想用ExtraTreesClassifier(max_features=2)RFECV()。從RFECV() docs開始,它表示RFECV()指定的排名爲1的最佳特徵 - 我們可以在RFECV().ranking_屬性中看到這一點。但是,如果我指定的估計值爲ExtraTreesClassifier(max_features=2),那麼RFECV()在其估計器中將使用2個特徵,並且只返回2個特徵的等級?還是忽略max_features並返回所有功能的排名?

回答

1

max_features指定了學習算法在決定哪個功能在樹的節點中提供最佳分割時所關注的特徵。每個節點隨機選擇特徵。所以決策樹仍然使用所有功能。這只是加速學習的一種方式。

+0

那麼'max_features'在RFECV()中根本不使用? –

+0

是什麼讓你覺得呢? – sietschie

+0

當RFECV()選擇要素時,它正在查看排名以選擇rank = 1,但在我看來,這裏並沒有考慮估計器的「.feature_importances_」。基於此,我會說'RFECV()'忽略了'max_features'超參數。雖然我可能會誤解某些東西...... –