引數網格搜尋

2022-08-04 09:45:07 字數 2487 閱讀 5690

gridsearchcv,它存在的意義就是自動調參,只要把引數輸進去,就能給出最優化的結果和引數。但是這個方法適合於小資料集,一旦資料的量級上去了,很難得出結果。這個時候就是需要動腦筋了。資料量比較大的時候可以使用乙個快速調優的方法——座標下降。它其實是一種貪心演算法:拿當前對模型影響最大的引數調優,直到最優化;再拿下乙個影響最大的引數調優,如此下去,直到所有的引數調整完畢。這個方法的缺點就是可能會調到區域性最優而不是全域性最優,但是省時間省力,巨大的優勢面前,還是試一試吧,後續可以再拿bagging再優化。回到sklearn裡面的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』, error_score=』raise』, return_train_score=』warn』)

引數解析:

1.estimator

選擇使用的分類器,並且傳入除需要確定最佳的引數之外的其他引數。

每乙個分類器都需要乙個scoring引數,或者score方法:

如estimator=randomforestclassifier(

min_samples_split=100,

min_samples_leaf=20,

max_depth=8,

max_features='

sqrt',

random_state=10),

2.param_grid

需要最優化的引數的取值,值為字典或者列表,例如:

param_grid =param_test1,

param_test1 = 。

3. scoring=none

模型評價標準,預設none,這時需要使用score函式;或者如scoring='

roc_auc',

根據所選模型不同,評價準則不同。字串(函式名),或是可呼叫物件,

需要其函式簽名形如:scorer(estimator, x, y);如果是none,則使用estimator的誤差估計函式。

4.n_jobs=1n_jobs: 並行數,int:個數,-1:跟cpu核數一致, 1:預設值

5.cv=none

交叉驗證引數,預設none,使用三折交叉驗證。指定fold數量,預設為3,也可以是yield產生訓練/測試資料的生成器。

6.verbose=0, scoring=none

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

7.pre_dispatch=『2*n_jobs』

指定總共分發的並行任務數。當n_jobs大於1時,資料將在每個執行點進行複製,這可能導致oom,

而設定pre_dispatch引數,則可以預先劃分總共的job數量,使資料最多被複製pre_dispatch次

8.return_train_score=』warn』

如果「false」,cv_results_屬性將不包括訓練分數。

9.refit :預設為true,程式將會以交叉驗證訓練集得到的最佳引數,重新對所有可用的訓練集與開發集進行,

作為最終用於效能評估的最佳模型引數。即在搜尋引數結束後,用最佳引數結果再次fit一遍全部資料集。

10.iid:預設true,為true時,預設為各個樣本fold概率分布一致,誤差估計為所有樣本之和,而非各個fold的平均。

進行**的常用方法和屬性

grid.fit():執行網格搜尋

grid_scores_:給出不同引數情況下的評價結果

best_params_:描述了已取得最佳結果的引數的組合

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

例子:在 mnist 資料集上建立乙個分類器,使它在測試集上的精度超過 97%。提 示: kneighborsclassifier 非常適合這個任務。你只需要找出乙個好的超引數值(試一下 對權重和超引數 n_neighbors 進行網格搜尋)

from  sklearn.model_selection import

gridsearchcv

from sklearn.neighbors import

kneighborsclassifier

param_grid

= knn_clf =kneighborsclassifier()

grid_search = gridsearchcv(knn_clf,param_grid,cv = 2,verbose=3,n_jobs=-1)

grid_search.fit(x_train,y_train)

cv交叉驗證次數可多給點,本本效能不好,就只給了2

網格搜尋GridSearchCV引數詳細解析

一網格搜尋 尋求引數最優的一種方法 使用 from sklearn.model selection import gridsearchcv classsklearn.model selection.gridsearchcv estimator param grid scoring none fit ...

轉 網格搜尋GridSearchCV引數詳細解析

一網格搜尋 尋求引數最優的一種方法 首先為想要調參的引數設定一組候選值,然後網格搜尋會窮舉各種引數組合,根據設定的評分機制找到最好的那一組設定。使用 from sklearn.model selection import gridsearchcv class sklearn.model select...

使用隨機搜尋選擇最佳引數 網格搜尋

from scipy.stats import uniform from sklearn import linear model,datasets from sklearn.model selection import randomizedsearchcv iris datasets.load ir...