Python-sklearn包中自動調參方法-網格搜索GridSearchCV

sklearn包中自動調參方法-網格搜索GridSearchCV

一、GridSearchCV主要作用及函數參數
GridSearchCV:作用是在指定的範圍內可以自動調參,只需將參數輸入即可得到最優化的結果和參數。相對於人工調參更省時省力,相對於for循環方法更簡潔靈活,不易出錯。

from sklearn.model_selection import 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=True)

參數釋義:
estimator:所使用分類器
param_grid:值爲字典或者列表,即需要最優化的參數的取值
scoring:準確度評價標準,默認爲None,根據所選模型不同,評價準則不同,如可以選擇scoring='accuracy’或者’roc_auc’等
cv:交叉驗證參數,默認None(三折交叉驗證,即fold數量爲3),也可以是yield訓練/測試數據的生成器
refit:默認爲True,即在搜索參數結束後,用最佳參數結果再次fit一遍全部數據集
iid:默認爲True,即默認個個樣本fold概率分佈一直,誤差估計爲所有樣本的和,而非各個fold的平均
verbose:日誌冗長度,int:
若冗長度爲0,不輸出訓練過程;
若冗長度爲1,偶爾輸出(一般設置爲1);
若冗長度>1,對每個子模型都輸出
n_jobs:並行數,一般設置爲-1
pre_dispatch:總共分發的並行任務數,當n_jobs大於1時,數據將在每個運行點進行復制,可能會導致OOM(內存溢出)。通過設置pre_dispatch參數,可以預先劃分總共的job數量,使數據最多被複制pre_dispatch次

二、GridSearchCV常用方法及屬性
grid.fit():運行網格搜索
grid.score():運行網格搜索後模型得分
grid_scores_:給出不同參數情況下的評價結果
best_params_:描述已取得最佳結果的參數的組合
best_score_:提供優化過程期間觀察到的最好評分

三、舉例

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV
#GradientBoostingClassifier模型
GBC = GradientBoostingClassifier()
gb_param_grid = {'loss' : ["deviance"],
              'n_estimators' : [100,200,300],
              'learning_rate': [0.1, 0.05, 0.01],
              'max_depth': [4, 8],
              'min_samples_leaf': [100,150],
              'max_features': [0.3, 0.1] 
              }
modelgsGBC = GridSearchCV(GBC,param_grid = gb_param_grid, cv=kfold, 
                                     scoring="accuracy", n_jobs= -1, verbose = 1)
modelgsGBC.fit(experData_X,experData_y)

整個過程請參考:如何擠進Kaggle平臺Titanic生存率預測項目TOP3%

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章