python - 如何获取决策树中的所有基尼指数?
问题描述
我已经使用 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) 但仅此而已。
解决方案
使用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);
所有节点的杂质值也可以impurity
在tree
.
clf.tree_.impurity
array([0.66666667, 0. , 0.5 , 0.16803841, 0.04253308])
推荐阅读
- c# - 使用 C# 在 Blazor 中动态生成圆圈
- java - “maven-cucmber-reporting”插件无法解决。也无法生成报告。黄瓜,马文
- vue.js - 禁用 nuxt 代码拆分。如何将所有内容打包到一个文件中
- php - 当某些值可以为空时如何通过许多输入过滤电子商务商店中的产品
- ios - ms 团队深层链接不适用于 ios 应用程序
- azure-devops - 来自同一组织的管道中的多个存储库
- r - 如何在for循环中验证条件
- ios - 在沙盒上测试 iOS 订阅升级/降级
- javascript - 可能未处理的承诺拒绝。反应原生
- java - 这里发生了什么:sum += i++;?