機器學習 演算法調參

2021-09-03 08:54:49 字數 2309 閱讀 7926

# -*- coding: utf-8 -*-

"""演算法調參.ipynb

automatically generated by colaboratory.

original file is located at

### 超引數優化

這是機器學習模型解決問題的最後乙個步驟,並不是整個解決方案的最後一步。不會調參就不能說會機器學習。引數分為了兩種:

- 影響模型在訓練集上的準確度,防止模型過擬合的引數

- 與準確度和過擬合無關的引數

其中調參調的是第一類引數。

這裡介紹兩類演算法:

- 網格搜尋

- 隨機搜尋

#### 網格搜尋

通過遍歷已定義的引數列表,來評估演算法的引數,從而找到最優引數。使用方法是`gridsearchcv`,實現對引數的跟蹤,調整和評估,最終找到最優引數。**網格搜尋適用於三四個超引數或者更少的情況,否則計算量會非常大,此時要轉成隨機搜尋。**

"""# 網格搜尋**

from pandas import read_csv

from sklearn.linear_model import ridge

from sklearn.model_selection import gridsearchcv

# 匯入資料

filename =

''names =

['preg'

,'plas'

,'pres'

,'skin'

,'test'

,'mass'

,'pedi'

,'age'

,'class'

]data = read_csv(filename, names=names)

# 資料劃分

array = data.values

x = array[:,

0:8]

y = array[:,

8]model = ridge(

)# 設定要遍歷的引數

param_grid =

# 網格搜尋

grid = gridsearchcv(estimator=model, param_grid=param_grid)

grid.fit(x,y)

print

('最高得分:%.3f'

% grid.best_score_)

print

('最優引數:%s'

% grid.best_estimator_.alpha)

"""其中,`param_grid`是 乙個字典物件,演算法需要的引數名是`key`,需要遍歷的引數值列表為`value`。可以設定多個`key-value`對,同時查詢多個最優引數值。

### 隨機搜尋優化

這個需要牽涉到隨機的方法,即取樣的方法。

"""from pandas import read_csv

from sklearn.linear_model import ridge

from sklearn.model_selection import randomizedsearchcv

from scipy.stats import uniform

# 匯入資料

filename =

''names =

['preg'

,'plas'

,'pres'

,'skin'

,'test'

,'mass'

,'pedi'

,'age'

,'class'

]data = read_csv(filename, names=names)

# 資料劃分

array = data.values

x = array[:,

0:8]

y = array[:,

8]model = ridge(

)# 設定要遍歷的引數

param_grid =

# 網格搜尋

grid = randomizedsearchcv(estimator=model, param_distributions=param_grid, n_iter=

100, random_state=7)

grid.fit(x,y)

print

('最高得分:%.3f'

% grid.best_score_)

print

('最優引數:%s'

% grid.best_estimator_.alpha)

end.

參考:《機器學習python實踐》

機器學習 調參

在實際調整引數之前,我們先要搞清楚兩個事情 1.調參的目的是什麼?2.調參調的東西具體是什麼?第乙個問題 調參的目的是什麼?調參的最終目的是要使訓練之後的模型檢測物體更精確,向程式的方向更靠近一步的話,就是使得損失函式 例如ssd中的loss 盡量小 因為利用訓練集訓練出來的模型質量在訓練過程中只能...

機器學習 關於調參

關於引數 feature scaling 機器學習中對於引數的理解不是數學中的數字,而是代表的是一種邏輯的趨勢的數字,這種邏輯是人類對場景的邏輯,也可以看作是人思想上對場景與數字引數的經驗,所以機器學習中的運算,不是數字的運算,而是邏輯的運算,如何設計出符合人類邏輯規律的運算,才能更好的 趨勢,這種...

機器學習調參方法

網格搜尋交叉驗證 通常是在全量資料上做的,會自動切分成幾折 有時候會注意做分層抽樣去保證資料分布 參考的kaggle kernel early stopping 這個通常需要切分訓練集和驗證集,我們會根據驗證集去確定最佳的輪次,但是除掉迭代輪次以外其他的引數需要通過經驗或者gridsearch敲定。...