1. 程式人生 > >sklearn學習8-----GridSearchCV(自動調參)

sklearn學習8-----GridSearchCV(自動調參)

ssi 9.png 訓練 全局 默認值 並行任務 圖片 tcl 列表

一、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’

, error_score=’raise’, return_train_score=’warn’)

  1. estimator:所使用的分類器,比如:estimator=RandomForestClassifier(min_samples_split=100, min_samples_leaf=20, max_depth=8, max_features=‘sqrt‘, random_state=10),並且傳入除需要確定最佳的參數之外的其他參數。每個分類器都需要一個scoring參數或者score方法。
  2. param_grid:值為字典或列表,即需要最優化的參數的取值,param_grid =param_test1,param_test1 = {‘n_estimators‘:range(10,71,10)}
  3. scoring:準確評價標準,默認為None(使用estimator的誤差估計函數),這時需要使用score函數;或者如scoring=‘roc_auc‘,根據所選模型不同,評價準則不同。
  4. cv:交叉驗證參數,默認為None
  5. refit:默認為True,程序將會以交叉驗證訓練集得到的最佳參數,重新對所有可用的訓練集與測試集進行,作為最終用於性能評估的最佳模型參數。即在搜索參數結束後,用最佳參數結果再次fit一遍全部數據集。
  6. iid:默認True,True時,默認為各個樣本fold概率分布一致,誤差估計為所有樣本之和,而非各個fold的平均

  7. verbose:日誌冗長度,int:冗長度,0:不輸出訓練過程,1:偶爾輸出,>1:對每個子模型都輸出。

  8. n_jobs: 並行數,int:個數,-1:跟CPU核數一致, 1:默認值。

  9. pre_dispatch:指定總共分發的並行任務數。當n_jobs大於1時,數據將在每個運行點進行復制,這可能導致OOM,而設置pre_dispatch參數,則可以預先劃分總共的job數量,使數據最多被復制pre_dispatch次,進行預測的常用方法和屬性

  10. grid.fit():運行網格搜索

  11. grid_scores_:給出不同參數情況下的評價結果

  12. best_params_描述了已取得最佳結果的參數的組合

  13. best_score_:成員提供優化過程期間觀察到的最好的評分

三、屬性方法:

  1. grid.fit( train_x, train_y ):運行網格搜索
  2. grid_scores_:給出不同參數情況下的評價結果
  3. best_params_:描述了已取得最佳結果的參數的組合
  4. 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(自動調參)