我在这里使用 sklearn 制作了一个决策树,在 SciKit learn 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
属性中访问。
clf.tree_.impurity
array([0.66666667, 0. , 0.5 , 0.16803841, 0.04253308])
关于python - 如何在我的决策树中获取所有 Gini 指数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53699121/