绘制 scikit-learn 树时(以虹膜数据为例),如下面的代码所示:
from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
X, y = iris.data, iris.target
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)
tree.plot_tree(clf)
生成的树(除了叶子)的每个节点在分割标准(特征和截止值)之前报告,然后报告预分割信息(gini、samples和value)。我确实觉得这非常违反直觉。而且似乎没有办法反转信息。难道不应该在分割标准之前在每个树节点中报告预分割信息吗?
我明白你的意思。
但是请注意,scikit-learn 的设计强调“前瞻性”观点,注重决策过程。
这意味着重点在于哪个特征被分割以及分割的阈值。
这种设计可能符合这样的想法:一旦创建节点,分割标准立即定义树的未来结构。
无法改变 sklearn 中的这种行为。