2017-08-08 75 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用于为整个样本(不是特征)分配更多的权重。 –