当变量为整数时,我可以强制 DecisionTreeClassifier 使用整数条件吗?

数据挖掘 Python scikit-学习 可视化 决策树
2022-02-28 15:57:15

出于可解释性的目的,我正在尝试在 python 中可视化决策树。我注意到像“NumGoals >= 1.23”这样的条件对用户来说可能非常模糊,我更愿意看到这样的东西:“NumGoals > 1”。

所以,我试图关闭归一化,我什至怀疑这可能是输入矩阵的dtype.

这是重现结果的简单代码。

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
import numpy as np

iris = load_iris()

clf = DecisionTreeClassifier()
clf = clf.fit(np.array(iris.data, dtype=int), iris.target)
plot_tree(clf)
plt.show()

那么,甚至可以告诉树将整数视为整数吗?

2个回答

只是为了可视化,您可以使用以下precision参数plot_tree()

精度:int,可选(默认=3)

每个节点的杂质、阈值和值属性值中浮点精度的位数。

(见这里

但是,由于它也适用precision于杂质,您可能希望将其关闭。这是一个例子:

tree.plot_tree(clf)在此处输入图像描述

tree.plot_tree(clf, precision=0, impurity=false)tree.plot_tree(grid_search.best_estimator_)

(如果显示了 gini 重要性,则此处所有 gini 值都将为 0)

由于它使用并且所有拆分阈值都在最接近的之间X值分割标准应该仍然是正确的。即使您的树不使用整数。但我总是会仔细检查并比较两个图。

您关闭标准化是正确的。我能想到的强制树将整数用作整数的唯一方法是对您的特征执行一次性编码。这将迫使树将整数视为分类值而不是连续值。