我已经使用sklearn做出了决策树,在这里,在SciKit学习DL包下,即。 sklearn.tree.DecisionTreeClassifier().fit(x,y)
。
如何在每一步获取所有可能节点的基尼系数? graphviz
仅给我提供具有最低gini索引的节点的gini索引,即用于拆分的节点。
例如,下面的图像(来自graphviz
)告诉我Pclass_lowVMid右索引的基尼系数为0.408,但不是该步骤的Pclass_lower或Sex_male的基尼系数。我只知道Pclass_lower和Sex_male的基尼系数必须大于(0.408 * 0.7 + 0),仅此而已。
最佳答案
至少在export_graphviz
版本中,使用 0.20.1
会显示所有节点的杂质。
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from graphviz import Source
data = load_iris()
X, y = data.data, data.target
clf = DecisionTreeClassifier(max_depth=2, random_state=42)
clf.fit(X, y)
graph = Source(export_graphviz(clf, out_file=None, feature_names=data.feature_names))
graph.format = 'png'
graph.render('dt', view=True);
所有节点的杂质值也可以在
impurity
的tree
属性中访问。clf.tree_.impurity
array([0.66666667, 0. , 0.5 , 0.16803841, 0.04253308])