我已经使用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),仅此而已。

python - 如何在决策树中获取所有基尼系数?-LMLPHP

最佳答案

至少在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);

python - 如何在决策树中获取所有基尼系数?-LMLPHP

所有节点的杂质值也可以在impuritytree属性中访问。
clf.tree_.impurity
array([0.66666667, 0.        , 0.5       , 0.16803841, 0.04253308])

07-24 09:53