我可以使用包含相同树的 RandomForestClassifier 创建随机森林吗?

数据挖掘 Python 分类 scikit-学习 随机森林 决策树
2022-02-19 11:58:54

根据对这个问题的回答,我应该能够通过使用bootstrap = False, max_features = None, random_state = 42参数来构建一个包含所有相同树的随机森林。

我写了快速代码来测试它,似乎创建了不同的树。

是否可以创建一个随机森林,使用RandomForestClassifier它会产生相同的树?

1个回答

您想创建一个所有决策树都相同的随机森林。(我相信您正在尝试将其作为一种教育练习,而不是严肃的事情。:))

你试图通过设置来做到这一点,random_state并引用了我的回答

确实,正如您所发现的,我的回答并不完全正确。

我已对其进行编辑以添加

虽然这消除了训练的随机性成分,但决策树仍然会有所不同。问题是 sklearn 集成根据给定的随机状态为每个孩子生成一个新的随机种子。他们不通过相同的random_state

_set_random_states通过检查ensemble 基本模块中的方法,您可以看到这种情况,特别是这一行,它在 ensemble 的子模块中传播random_state

如您所见,sklearn 使用random_state您提供的 RandomForest 为每个孩子创建新的随机状态,

for key in sorted(estimator.get_params(deep=True)):
    if key == 'random_state' or key.endswith('__random_state'):
        to_set[key] = random_state.randint(MAX_RAND_SEED)

因此它们会有所不同。之所以这样做,大概是因为异质性使集成变得强大。请注意,这不是特定于 RandomForest,而是特定于任何 sklearn 集成。

抱歉,我对您引用的问题的回答不正确。如果需要,可以使用随机森林实现。那是完全同质的。