当前位置: 首页 > 面试题库 >

在Scikit的决策树中对random_state感到困惑

齐乐
2023-03-14
问题内容

random_state参数感到困惑,不确定为什么决策树训练需要一些随机性。我的想法是:(1)与随机森林有关吗?(2)与分割训练测试数据集有关吗?如果是这样,为什么不直接使用训练测试拆分方法(http://scikit-
learn.org/stable/modules/generation/sklearn.cross_validation.train_test_split.html
)?

http://scikit-
learn.org/stable/modules/generation/sklearn.tree.DecisionTreeClassifier.html

>>> from sklearn.datasets import load_iris
>>> from sklearn.cross_validation import cross_val_score
>>> from sklearn.tree import DecisionTreeClassifier
>>> clf = DecisionTreeClassifier(random_state=0)
>>> iris = load_iris()
>>> cross_val_score(clf, iris.data, iris.target, cv=10)
...                             
...
array([ 1.     ,  0.93...,  0.86...,  0.93...,  0.93...,
        0.93...,  0.93...,  1.     ,  0.93...,  1.      ])

问候,


问题答案:

在文档中对此进行了解释

在最优性的几个方面,甚至对于简单的概念,学习最优决策树的问题都被认为是NP完全的。因此,实用的决策树学习算法基于启发式算法(例如贪婪算法),其中在每个节点上做出局部最优决策。这样的算法不能保证返回全局最优决策树。可以通过在集成学习器中训练多棵树来缓解这种情况,在该学习器中,特征和样本将通过替换随机抽样。

因此,基本上,使用特征和样本的随机选择(次于随机森林中使用的类似技术)将次优贪婪算法重复多次。该random_state参数允许控制这些随机选择。

该接口文件明确规定:

如果为int,则random_state是随机数生成器使用的种子;否则为false。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是np.random使用的RandomState实例。

因此,在任何情况下都将使用随机算法。传递任何值(无论是特定的int,例如0还是RandomState实例)都不会改变该值。传递int值(0或其他值)的唯一理由是使结果在调用之间保持一致:如果使用random_state=0(或任何其他值)调用此结果,则每次都将获得相同的结果。



 类似资料:
  • 问题内容: 我正在尝试在Python中使用scikit-learn设计一个简单的决策树(我在Windows OS上将Anaconda的Ipython Notebook与Python 2.7.3结合使用),并将其可视化如下: 但是,出现以下错误: 我使用以下博客文章作为参考:Blogpost链接 以下stackoverflow问题似乎也不适合我:问题 有人可以帮助我如何在scikit-learn中可

  • 问题内容: 我是否可以从决策树中经过训练的树中提取出基本的决策规则(或“决策路径”)作为文本列表? 就像是: 谢谢你的帮助。 问题答案: 我相信这个答案比这里的其他答案更正确: 这会打印出有效的Python函数。这是一个试图返回其输入的树的示例输出,该数字介于0和10之间。 这是我在其他答案中看到的一些绊脚石: 使用来决定一个节点是否为叶是不是一个好主意。如果它是阈值为-2的真实决策节点怎么办?相

  • 我正在尝试提出一种解决方案,它涉及在连接操作之后应用一些逻辑,从多个中的中选择一个事件。这类似于reduce函数,但它只返回1个元素,而不是递增地返回。因此最终结果将是单个(,对,而不是一个 每个键保证只到达一次。 假设像上面这样的连接操作,它用4个生成了1个,成功地连接并收集在。现在,我想做的是,立即访问这些值,并执行一些逻辑以将正确匹配到一个。例如,对于上面的数据集,我需要(,和)。 将为每个

  • 所以我一直在读Kafka的语义学,我对它的工作原理有点困惑。 我理解生产者如何避免发送重复的消息(以防代理的ack失败),但我不明白的是,在消费者处理消息但在提交偏移量之前崩溃的情况下,一次是如何工作的。Kafka不会在这种情况下重试吗?

  • 问题内容: 有没有办法在scikit-learn中打印经过训练的决策树?我想为自己的论文训练决策树,并希望将论文的图片放入论文中。那可能吗? 问题答案: 有一种方法可以导出为graph_viz格式:http ://scikit- learn.org/stable/modules/generation/sklearn.tree.export_graphviz.html 因此,从在线文档中: 然后,您

  • 问题内容: 我可以从决策树中经过训练的树中提取出基本的决策规则(或“决策路径”)作为文本列表吗? 就像是: 谢谢你的帮助。 问题答案: 我相信这个答案比这里的其他答案更正确: 这会打印出有效的Python函数。这是尝试返回其输入的树的示例输出,该数字介于0到10之间。 这是我在其他答案中看到的一些绊脚石: 使用tree_.threshold == -2来决定一个节点是否为叶是不是一个好主意。如果它