一次从GridSearch设置多个参数

时间:2017-09-15 21:34:07

标签: python machine-learning scikit-learn grid-search

在我的数据集上使用GridSearchCV后,我想提取所有最佳参数。

from sklearn.tree import DecisionTreeClassifier

params_grid = {'max_depth': np.arange(3, 10),
              'max_leaf_nodes':list(xrange(20,100,20)),
              'max_features':list(xrange(2,10,2))
               }
my_dt = DecisionTreeClassifier()
grid_clf = GridSearchCV(my_dt, params_grid)
grid_clf.fit(xtrain, ytrain)

best_plist = grid_clf.best_params_

现在我想创建一个新的DecisionTreeClassifier对象,并将其设置为与best_plist相同的参数。问题是我正在为每个参数手动执行此操作:

new_clf = DecisionTreeClassifier()
new_clf.max_depth=bestplit['max_depth']  # and so on for all the parameters

但是,我将分析多个ML算法,并且想要一种设置新对象参数的通用方法,而不是每个算法的硬编码。我只是想知道在sklearn中有没有解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用sklearn中的set_params()功能直接设置参数,该功能可用于sklearn中的大多数机器学习算法。

best_plist = grid.best_parms_
new_clf = DecisionTreeClassifier()  #or any classifier you performed GridSearch on
new_clf.set_params(**best_plist)

答案 1 :(得分:0)

scikit-learn 有本地方式来做你在这里尝试的事情。您需要做的是将新对象保存为之前拟合中的最佳参数组合。这可以通过

来实现
new_clf = grid.clf.best_estimator_

这将使用您之前搜索中的最佳配置创建一个新的学习器对象。

PD:这是一个老问题,也许你已经想通了,但仍然没有答案。