gpt4 book ai didi

python - 如何强制决策树分成不同的类

转载 作者:行者123 更新时间:2023-11-30 09:40:56 25 4
gpt4 key购买 nike

我正在做一棵决策树,我想强制算法在一个节点之后将结果分成不同的类。问题是,在我得到的树中,在评估条件(X < 大于某个值)后,我得到同一类的两个结果(例如,是和是)。我想要"is"和“否”作为节点评估的结果。这是我得到的示例:

1

这是生成树和图的代码:

clf = tree.DecisionTreeClassifier(max_depth=2)
clf = clf.fit(users_data, users_target)

dot_data = tree.export_graphviz(clf, out_file=None,
feature_names= feature_names,
class_names= target_names,
filled=True, rounded=True,
special_characters=True)

graph = graphviz.Source(dot_data)
graph

我希望在节点之后找到“YES”和“NO”类。现在,在各自的条件之后,我在最后的级别中获得了相同的类(class)。

谢谢!

最佳答案

事实上,您的模型确实看起来确实没有提供第一级节点和第二级节点之间的任何进一步区分;因此,如果您确定这对于您的情况来说是(某种)最佳的,您可以简单地使用max_depth=1而不是2来要求它停止:

clf = tree.DecisionTreeClassifier(max_depth=1)

但请记住,实际上这可能远非最佳;查看 scikit-learn docs 中的 iris 数据集的树:

enter image description here

您可以看到,在树级别的更下方,带有 class=versicolor 的节点从看起来像 class=virginica 的“纯”节点中出现(反之亦然)反之亦然)。

因此,在决定将树预先修剪到 max_depth=1 之前,您可能需要检查是否让它进一步生长(即不指定 max_depth 参数,因此将其保留在 Nonedefault value 中),可能更适合您的情况。

一切都取决于您这样做的原因(即您的业务案例):如果这是一个探索性案例,您很可能会停止使用max_深度=1;如果它是预测性的,您应该考虑哪种配置可以最大化适当的指标(这里最有可能的是准确性)。

关于python - 如何强制决策树分成不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com