2017-09-15 159 views
1

在我的數據集上使用GridSearchCV後,我想提取所有最佳參數。立即從GridSearch設置多個參數

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對象,並設置它的paramters一樣best_plist。問題是,我做手工爲每個參數如下:

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

不過,我會分析多個ML algoritihms並希望設置新對象的參數,而不是硬編碼的通用方式爲每個算法。我只是想知道是否有任何解決此問題的方法?

+0

您可以直接使用'grid_clf.best_estimator_',它將返回具有最佳參數的估計器。 –

回答

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)