我使用scikit-learn
的DecisionTreeClassifier
爲特定功能集構建決策樹。令我驚訝的是,一個被認爲很重要的特徵被排除了。找出爲什麼scikit-learn DecisionTreeClassifier決定從結果決策樹中排除一個特徵?
有沒有辦法在引擎蓋下進行窺視,並找出算法爲什麼選擇排除該功能?
還是真的,獲得有關決策樹構建過程的任何部分的更多信息/分析?
我使用scikit-learn
的DecisionTreeClassifier
爲特定功能集構建決策樹。令我驚訝的是,一個被認爲很重要的特徵被排除了。找出爲什麼scikit-learn DecisionTreeClassifier決定從結果決策樹中排除一個特徵?
有沒有辦法在引擎蓋下進行窺視,並找出算法爲什麼選擇排除該功能?
還是真的,獲得有關決策樹構建過程的任何部分的更多信息/分析?
關於您忽略某個功能的問題,很難說清楚爲什麼,但我可以建議「玩」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())
在我看來,sample_weight用於爲整個樣本(不是特徵)分配更多的權重。 –
你怎麼說,它已被排除在外?你在看底層的'tree_'嗎?也許檢查合適樹的'feature_importance_'。 –
@VivekKumar:我使用'export_graphviz()',並且該特徵不在渲染的樹中。 –