2017-08-08 23 views
0

我使用scikit-learnDecisionTreeClassifier爲特定功能集構建決策樹。令我驚訝的是,一個被認爲很重要的特徵被排除了。找出爲什麼scikit-learn DecisionTreeClassifier決定從結果決策樹中排除一個特徵?

有沒有辦法在引擎蓋下進行窺視,並找出算法爲什麼選擇排除該功能?

還是真的,獲得有關決策樹構建過程的任何部分的更多信息/分析?

+0

你怎麼說,它已被排除在外?你在看底層的'tree_'嗎?也許檢查合適樹的'feature_importance_'。 –

+0

@VivekKumar:我使用'export_graphviz()',並且該特徵不在渲染的樹中。 –

回答

0

關於您忽略某個功能的問題,很難說清楚爲什麼,但我可以建議「玩」sample_weight標誌的權重以更改每個樣本獲得的權重,並因此給予所提及的功能更多的權重,你可以閱讀一個很好的解釋here

另外,調試,有一種方法以保存訓練樹的圖像,如在documentation證明:

export_graphviz出口可以通過類支持多種美學選項,包括着色節點(或值的迴歸),並根據需要使用顯式變量和類名稱。 IPython筆記本電腦也可以使用Image()功能使這些地塊內聯:

from IPython.display import Image 
dot_data = tree.export_graphviz(clf, out_file=None, # clf: the trained classifier 
         feature_names=iris.feature_names, 
         class_names=iris.target_names, 
         filled=True, rounded=True, 
         special_characters=True) 
graph = pydotplus.graph_from_dot_data(dot_data) 
Image(graph.create_png()) 

enter image description here

+0

在我看來,sample_weight用於爲整個樣本(不是特徵)分配更多的權重。 –