gpt4 book ai didi

python - 如何手动创建 scikit-learn 树?

转载 作者:行者123 更新时间:2023-12-04 15:36:55 25 4
gpt4 key购买 nike

为了测试一些代码,我希望能够手动创建一个 sklearn.tree._tree.Tree,而不是通过拟合某些数据。

为了具体起见,假设我想要一棵树,将实线中的点分类为区间 (-infinity, 5]、(5,6] 或 (6,infinity)。我想要树的形状

----0----
| |
| ---2---
| | |
1 3 4

其中节点 0 在 5 处拆分实线,节点 2 在 6 处拆分实线。

如何做到这一点?我看到树有一个 __setstate__ 方法,并且查看 __getstate__ 的输出看起来我需要类似

的东西
state = {
'n_features_': 1,
'max_depth': 2,
'node_count': 5,
'nodes': np.array([(1 , 2, 0, 5., 0.375, 3, 3.),
(-1, -1, 0, -2., 0. , 1, 1.),
(3 , 4, 0, 6., 0., , 2, 2.),
(-1, -1, 0, -2., 0., , 1, 1.),
(-1, -1, 0, -2., 0., , 1, 1.),
],
dtype=[('left_child', '<i8'), ('right_child', '<i8'), ('feature', '<i8'),('threshold', '<f8'), ('impurity', '<f8'), ('n_node_samples', '<i8'), ('weighted_n_node_samples', '<f8')]),
}

但我并不真正理解这些参数的含义,而且无论如何我都不知道如何首先使用这种状态初始化树。

最佳答案

尝试手动更改节点数小时后。我找到了解决办法。的确,你是对的。通过使用 setstate,您可以进行树自定义。“节点”键必须如下所示:

  • numpy 元组数组
  • 每个元组必须像下面这样:(left_child[i], right_child[i], feature[i], threshold[i], impurity[i], n_node_samples[i], weighted_n_node_samples[i])

-1(左/右 child )和 -2(特征)代表叶子。

训练分类器时,您将拥有另一个键:“值”。

关于python - 如何手动创建 scikit-learn 树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59428408/

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