机器学习中的参数调整
總第102篇
前言
我們知道每個模型都有很多參數是可以調節的,比如SVM中使用什么樣的核函數以及C值的大小,決策樹中樹的深度等。在特征選好、基礎模型選好以后我們可以通過調整模型的這些參數來提高模型準確率。每個模型有很多參數,而每個參數又有很多不同的取值,我們該怎么調,最簡單的一個方法就是一個一個試。sklearn中提供了這樣的庫代替了我們手動去試的過程,就是GridSearchCV,他會自己組合不同參數的取值,然后輸出效果最好的一組參數。
GridSearchCV參數解釋
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’)estimator:所使用的基礎模型,比如svc
param_grid:是所需要的調整的參數,以字典或列表的形式表示
scoring:準確率評判標準
n_jobs:并行運算數量(核的數量 ),默認為1,如果設置為-1,則表示將電腦中的cpu全部用上
iid:假設數據在每個cv(折疊)中是相同分布的,損失最小化是每個樣本的總損失,而不是折疊中的平均損失。
refit:默認為True,程序將會以交叉驗證訓練集得到的最佳參數,重新對所有可用的訓練集與開發集進行,作為最終用于性能評估的最佳模型參數。
cv:交叉驗證折疊數,默認是3,當estimator是分類器時默認使用StratifiedKFold交叉方法,其他問題則默認使用KFold
verbose:日志冗長度,int類型,0:不輸出訓練過程,1:偶爾輸出,>1:對每個子模型都輸出
pre_dispatch:控制job數量,避免job過多出現內存錯誤
GridSearchCV對象
cv_results_:用來輸出cv結果的,可以是字典形式也可以是numpy形式,還可以轉換成DataFrame格式
best_estimator_:通過搜索參數得到的最好的估計器,當參數refit=False時該對象不可用
best_score_:float類型,輸出最好的成績
best_params_:通過網格搜索得到的score最好對應的參數
GridSearchCV方法
decision_function(X):返回決策函數值(比如svm中的決策距離)
predict_proba(X):返回每個類別的概率值(有幾類就返回幾列值)
predict(X):返回預測結果值(0/1)
score(X, y=None):返回函數
get_params(deep=True):返回估計器的參數
fit(X,y=None,groups=None,fit_params):在數據集上運行所有的參數組合
transform(X):在X上使用訓練好的參數
GridSearchCV實例
from sklearn import svm, datasets from sklearn.model_selection import GridSearchCV iris = datasets.load_iris() parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]} svc = svm.SVC() clf = GridSearchCV(svc, parameters) clf.fit(iris.data, iris.target) ------------------------------------------------------ GridSearchCV(cv=None, error_score='raise',estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',max_iter=-1, probability=False, random_state=None, shrinking=True,tol=0.001, verbose=False),fit_params={}, iid=True, n_jobs=1,param_grid={'kernel': ('linear', 'rbf'), 'C': [1, 10]},pre_dispatch='2*n_jobs', refit=True, return_train_score=True,scoring=None, verbose=0)clf.cv_results_
我們可以看到,cv_result一共有四組,這正是兩個kernel和兩個C的隨機組合成四組。
clf.best_estimator_
clf.best_params_
clf.best_params_
注:本方法只適用于數據量較小的模型,不適合數據量過大的模型。
你還可以看:
機器學習模型效果評估
機器學習中非平衡數據處理
機器學習中的特征選擇
機器學習中的交叉驗證
總結
以上是生活随笔為你收集整理的机器学习中的参数调整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的小魔法(一)
- 下一篇: 实战—用户价值模型搭建