Python 随机搜索CV和GridsearchCV结果不可复制

Python 随机搜索CV和GridsearchCV结果不可复制,python,scikit-learn,random-forest,adaboost,reproducible-research,Python,Scikit Learn,Random Forest,Adaboost,Reproducible Research,我正在用python执行RandomForest和AdaBoost回归 我的结果不可复制[每次使用相同的数据和代码运行时,我的预测都会发生变化] seed = np.random.seed(22) rng = np.random.RandomState(1) param_grid = {'n_estimators': [10, 100, 1000]} model_rfr = GridSearchCV(RandomForestRegressor(random_state = rng)

我正在用python执行RandomForest和AdaBoost回归

我的结果不可复制[每次使用相同的数据和代码运行时,我的预测都会发生变化]

seed = np.random.seed(22)
rng = np.random.RandomState(1)      

param_grid = {'n_estimators': [10, 100, 1000]}
model_rfr = GridSearchCV(RandomForestRegressor(random_state = rng), param_grid, cv=3, n_jobs=-1, verbose=1)
model_rfr.fit(train_x1,train_y1)
test_rfr = model_rfr.predict(test_y1)
param_grid = {"n_estimators":[100,500],"learning_rate":list(np.linspace(0.01,1,10)),"loss":["linear", "square", "exponential"]}
model_adr = RandomizedSearchCV(AdaBoostRegressor(DecisionTreeRegressor()), param_grid,n_jobs=-1,n_iter=10,cv=3,random_state = rng)
model_adr.fit(train_x1,train_y1)
test_adr = model_adr.fit(test_y1)
这里的test\u adr和test\u rfr值会发生变化,每次我都会运行我的代码


请使用任何样本数据进行回归。但请建议如何使我的结果重现。

感谢您的贡献。请查找可复制的结果代码

seed = np.random.seed(22)
rng = np.random.RandomState(1)
param_grid = {'n_estimators': [10, 100, 1000]}
model_rfr = GridSearchCV(RandomForestRegressor(random_state = rng), param_grid, cv=3, n_jobs=-1, verbose=1)
model_rfr.fit(train_x1,train_y1)
test_rfr = model_rfr.predict(test_y1)
param_grid = {"n_estimators":[100,500],"learning_rate":list(np.linspace(0.01,1,10)),"loss":["linear", "square", "exponential"]}
model_adr = RandomizedSearchCV(AdaBoostRegressor(DecisionTreeRegressor(random_state = rng)), param_grid,n_jobs=-1,n_iter=10,cv=3,random_state = rng)
model_adr.fit(train_x1,train_y1)
test_adr = model_adr.predict(test_x1)

++现在Gridsearch结果是可复制的,建议对于随机化CVA来说,
predict()
方法应该与
test\u x1
一起发送,而您发送的是
test\u y1
,代码的最后一行应该是
model\u adr.predict()
,而不是
model\u adr.fit()
adaboostregresor和decisiontreegresor也具有
random_状态
param。有了这些设置,我就可以复制结果了。谢谢你的帮助,我现在就知道了。但是有了一些随机状态值,我得到了更好的结果,我可以优化它吗?并使其可复制?不,
随机状态
并不意味着要优化。认为这是幸运的。也许并非每次都是这样。只相信多重交叉验证的平均输出。