sklearn學習8-----GridSearchCV(自動調參)
一、GridSearchCV介紹:
自動調參,適合小數據集。相當於寫一堆循環,自己設定參數列表,一個一個試,找到最合適的參數。數據量大可以使用快速調優的方法-----坐標下降【貪心,拿當前對模型影響最大的參數調優,直到最優,但可能獲得的是全局最優】。
二、參數使用
class sklearn.model_selection.
GridSearchCV
(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch=‘2*n_jobs’
- estimator:所使用的分類器,比如:estimator=RandomForestClassifier(min_samples_split=100, min_samples_leaf=20, max_depth=8, max_features=‘sqrt‘, random_state=10),並且傳入除需要確定最佳的參數之外的其他參數。每個分類器都需要一個scoring參數或者score方法。
- param_grid:值為字典或列表,即需要最優化的參數的取值,param_grid =param_test1,param_test1 = {‘n_estimators‘:range(10,71,10)}
- scoring:準確評價標準,默認為None(使用estimator的誤差估計函數),這時需要使用score函數;或者如scoring=‘roc_auc‘,根據所選模型不同,評價準則不同。
- cv:交叉驗證參數,默認為None
- refit:默認為True,程序將會以交叉驗證訓練集得到的最佳參數,重新對所有可用的訓練集與測試集進行,作為最終用於性能評估的最佳模型參數。即在搜索參數結束後,用最佳參數結果再次fit一遍全部數據集。
-
iid:默認True,為True時,默認為各個樣本fold概率分布一致,誤差估計為所有樣本之和,而非各個fold的平均。
-
verbose:日誌冗長度,int:冗長度,0:不輸出訓練過程,1:偶爾輸出,>1:對每個子模型都輸出。
-
n_jobs: 並行數,int:個數,-1:跟CPU核數一致, 1:默認值。
-
pre_dispatch:指定總共分發的並行任務數。當n_jobs大於1時,數據將在每個運行點進行復制,這可能導致OOM,而設置pre_dispatch參數,則可以預先劃分總共的job數量,使數據最多被復制pre_dispatch次,進行預測的常用方法和屬性
-
grid.fit():運行網格搜索
-
grid_scores_:給出不同參數情況下的評價結果
-
best_params_:描述了已取得最佳結果的參數的組合
-
best_score_:成員提供優化過程期間觀察到的最好的評分
三、屬性方法:
- grid.fit( train_x, train_y ):運行網格搜索
- grid_scores_:給出不同參數情況下的評價結果
- best_params_:描述了已取得最佳結果的參數的組合
- best_score_:成員提供優化過程期間觀察到的最好的評分
四、示例:
from sklearn.grid_search import GridSearchCV
#隨機森林的參數 tree_param_grid={‘min_sample_split‘:list((3,6,9)),‘n_estimators‘:list((10,50,100)) grid=GridSearchCV(RandomForestRegressor(),param_grid=tree_param_grid,cv=5) grid.fit(x,y) grid.grid_scores_,grid.best_params_,grid.best_score_
結果:
sklearn學習8-----GridSearchCV(自動調參)