如何删除sklearn上决策树的随机性?

时间:2019-06-17 12:38:52

标签: python scikit-learn decision-tree deterministic

我正在尝试在python中创建确定性决策树,但是我遇到了一些问题。

如果我的脚本运行了2次,由于算法的random_state,我将进入不同的决策树。

我试图修复random_state(random_state=0),但仍然无法正常工作。

我想删除决策树的随机性,但找不到明确的解决方案。

2 个答案:

答案 0 :(得分:1)

Sklearn使用numpy中的随机种子,因此您可以在脚本开始时使用以下命令设置全局种子:

import numpy as np

np.random.seed(0)

答案 1 :(得分:1)

random_state参数应该可以使用,但这是2个不同的选项

选项1:

from sklearn.ensemble import RandomForestRegressor

rf = RandomForestRegressor(n_estimators=1000, criterion='mse', min_samples_leaf=4, 
                           random_state= 0)

这应该每次都返回相同的结果。


  

Scikit-learn不使用自己的全局随机状态;每当一个   没有提供RandomState实例或整数随机种子作为   参数,它依赖于可以设置的numpy全局随机状态   使用numpy.random.seed


选项2:

话虽如此,添加 np.random.seed() 之前 导入 RandomForestRegressor 也应该可以解决问题

import numpy as np
np.random.seed(0)

来源:http://scikit-learn.org/stable/faq.html#how-do-i-set-a-random-state-for-an-entire-execution