2

我正在运行 GridSearchCV,其中基本估计器是 RandomForestRegressor。我发现在估计器和网格搜索之间拆分处理器效率更高,因此在机器的 24 个可用处理器中,我将 n_jobs=4 分配给回归器,将 n_jobs=6 分配给网格搜索。

但是,一旦我有了最好的估算器,我想简单地使用它(GridSearchCV.best_estimator_),并进行一项更改 - 现在我想给它全部 24 个处理器,以便在我使用它来拟合新数据时使用它。有没有办法只更改这个参数,或者我是否需要手动指定估算器的所有最佳参数才能进行此更改?不确定实际代码对此是否有帮助,但这里有一些示例代码以防万一:

est = ensemble.RandomForestRegressor(...,
                                     n_jobs=4,
                                    )

gridsearch = GridSearchCV(estimator = est,
                          ...
                          n_jobs=6
                         )

gridsearch.fit(X,y)

best = gridsearch.best_estimator_

我希望最好使用所有处理器,即 n_jobs=24。但它从原始估计器继承了 n_jobs=4。有什么方法可以在不重新指定所有参数的情况下仅更改此参数?

这是我在这里的第一个问题,所以请让我知道是否有任何明显的地方我遗漏了以使这个问题成为一个明智的问题。

4

1 回答 1

1

您可以只使用set_params(**params)方法。

在你的情况...

best = gridsearch.best_estimator_
best.set_params(n_jobs=24)
于 2019-04-25T20:48:53.700 回答