我已经使用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),但是仅此而已。
答案 0 :(得分:1)
pclass节点的基尼索引=左节点的基尼索引*(左节点的样本数/左节点的样本数+右节点的样本数)+右节点的基尼索引*(左节点中的样本数/左节点中的样本数+右节点中的样本数) 所以这里会
Gini index of pclass = 0 + .408 *(7/10) = 0.2856
答案 1 :(得分:1)
至少在版本0.20.1
中,使用export_graphviz
显示所有节点的杂质。
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
的{{1}}属性中访问所有节点的杂质值。
tree