驗證集的作用和在sklearn中的實現

2021-10-10 08:23:54 字數 1380 閱讀 2706

在機器學習中,資料一般分為訓練集,驗證集和測試集。

訓練集用於訓練模型引數,測試集用於估計模型對樣本的泛化誤差,驗證集用於「訓練」模型的超引數。

乙個機器學習模型通常包括兩個部分的引數:模型引數和超引數。其中超引數是用於控制模型行為的引數,這些引數不是通過模型本身學習而來的。想要獲得超引數,並不能直接使用訓練集進行,因為如果使用訓練集來選擇超引數,那麼超引數總是會往增加模型容量的方向發展,容易出現過擬合,那麼我們就需要單獨取出一部分資料進行超引數的確定,而這一部分就是驗證集。

參考文章:

由於我在學習機器學習,所以使用sklearn中的神器:gridsearchercv()

它使用交叉驗證的方式,對某一分類器,你制定想要調參的名稱和數值,作為乙個字典傳入進這個函式,然後它就會告訴你最佳的引數組合.(其實就是for for for都試試).

from sklearn.model_selection import gridsearchcv

defgrid

(clf, x_prove, y_prove)

: tuned_parameter =

rfc = gridsearchcv(estimator=clf, param_grid=tuned_parameter, cv=

5, n_jobs=1)

rfc.fit(x_prove, y_prove)

return rfc.best_params_[

'max_features'

], rfc.best_params_[

'n_estimators'

]

**中引數:

clf 可以是很多機器學習演算法的例項化物件,比如:clf = tree.decisiontreeclassifier(criterion=『gini』)

x_prove,y_prove:驗證集的資料和標籤。

注意一下這條語句:

tuned_parameter =

由於當時不知道隨機森林不需要交叉驗證,所以使用了該方法,所以字典中的內容其實是隨機森林,如果大家想試試這個gridsearchcv函式,就需要把字典進行修改,改為對應機器學習演算法的引數進行乙個最佳引數的選擇。

提一句:隨機森林不需要單獨的驗證集交叉驗證,他會使用bootstrap sampling方法從訓練集中找到大約63.2%的資料進行訓練,而剩下的約36.8%資料可以作為驗證集來對泛化效能進行「包外估計」(和單獨的驗證集交叉驗證我感覺功能一樣,都是為了提公升泛化效能),對應randomforestclassifier函式中引數oob_score,預設為false,需要自己手動設定為true。

訓練集 驗證集 測試集的作用

在機器學習或者深度學習中,我們需要了解我們的模型包括什麼 1 模型設計 模型架構 包括模型有多少層,每層有多少個神經元 可訓練權重引數 模型內建引數 2 模型訓練的引數 模型外接引數,如學習率 優化策略等等 訓練集 train set 用於模型擬合的資料樣本。在訓練過程中對訓練誤差進行梯度下降,進行...

和 在巨集替換中的作用

include define f a,b a b define g a a define h a g a int main 首先需要了解 和 的意義。將右邊的引數做整體的字串替換。define g a a 則g hello world hello world g sleep 1 sleep 1 對於...

訓練集 驗證集 測試集的關係與作用

通常,在訓練有監督的機器學習模型的時候,會將資料劃分為訓練集 驗證集合測試集,劃分比例一般為0.6 0.2 0.2。對原始資料進行三個集合的劃分,是為了能夠選出效果 可以理解為準確率 最好的 泛化能力最佳的模型。訓練集 training set 作用是用來擬合模型,通過設定分類器的引數,訓練分類模型...