首页 > 解决方案 > 如何获取决策树中的所有基尼指数?

问题描述

我已经使用 sklearn 制作了一个决策树,在这里,在 SciKit 学习 DL 包下,即。sklearn.tree.DecisionTreeClassifier().fit(x,y).

如何在每个步骤中获取所有可能节点的基尼指数?graphviz只给我基尼指数最低的节点的基尼指数,即用于拆分的节点。

例如,下图(来自graphviz)告诉我 Pclass_lowVMid 右指数的基尼指数为 0.408,但不是 Pclass_lower 或 Sex_male 在该步骤的基尼指数。我只知道 Pclass_lower 和 Sex_male 的基尼指数必须大于 (0.408*0.7 + 0) 但仅此而已。

决策树

标签: pythonmachine-learningscikit-learndecision-tree

解决方案


使用export_graphviz显示所有节点的杂质,至少在 version 中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);

在此处输入图像描述

所有节点的杂质值也可以impuritytree.

clf.tree_.impurity
array([0.66666667, 0.        , 0.5       , 0.16803841, 0.04253308])

推荐阅读