機器學習 交叉驗證 python資料集劃分

2021-08-18 20:16:51 字數 1667 閱讀 2796

模型選擇的兩種方法:正則化(典型方法)、交叉驗證。

這裡介紹交叉驗證及其python**實現。

交叉驗證

如果給定樣本資料充足,進行模型選擇的一種簡單方法是隨機地將資料集切分為3部分,分為訓練集、驗證集和測試集。

訓練集:訓練模型

驗證集:模型的選擇

測試集:最終對模型的評估

在學習到不同複雜度的模型中,選擇對驗證集有最小**誤差的模型。由於驗證集有足夠多的資料,用它進行模型選擇也是有效的。在許多實際應用中資料不充分的情況下,可以使用交叉驗證方法。

基本思路:重複地使用資料,把給定資料進行切分,分為訓練集和測試集,在此基礎上反覆地進行訓練、測試以及模型選擇。

簡單交叉驗證:

隨機將資料劃分為兩部分,訓練集和測試集。一般 70%的資料為訓練集,30%為測試集。

**(劃分訓練集,測試集):

from sklearn.cross_validation import train_test_split

# data (全部資料) labels(全部目標值) x_train 訓練集(全部特徵) y_train 訓練集的目標值

x_train, x_test, y_train, y_test = train_test_split(data,labels, test_size=0.25, random_state=0) #這裡訓練集75%:測試集25%

其中的

random_state

原始碼解釋 :

int, randomstate instance or none, optional (default=none)

int, randomstate instance or none, optional (default=none)if int, random_state is the seed used by the random number generator;

if randomstate instance, random_state is the random number generator;

if none, the random number generator is the randomstate instance used

by `np.random`.

大意就是:如果設定乙個具體值的話,比如

random_state=10

,則每次劃分後的資料都一樣,執行多次也一樣。如果設為none, 即

random_state=none

,則每次劃分後的資料都不同,每一次執行劃分的資料都不同。

**(劃分訓練集,驗證集,測試集)

from sklearn import cross_validation

train_and_valid, test = cross_validation.train_test_split(data, test_size=0.3,random_state=0) # 先分為兩部分:訓練和驗證 , 測試集

train, valid = cross_validation.train_test_split(data, test_size=0.5,random_state=0) # 再把訓練和驗證分為:訓練集 ,驗證集

機器學習 交叉驗證

假設我們需要從某些候選模型中選擇最適合某個學習問題的模型,我們該如何選擇?以多元回歸模型為例 我們假設模型集合為有限集 假設樣本集為s,根據經驗風險最小化原則 erm 可能會使用這樣的演算法 1.在s上訓練每個模型 2.選擇訓練誤差最小的假設函式,即為我們需要的函式。然而,這樣的演算法實際上並不有效...

機器學習 交叉驗證

交叉驗證是最好的測試方法 乙個問題叫做交叉驗證,是指假設要將乙份資料拆分成訓練集和測試集,這個時候怎麼評估出它的誤差?交叉驗證是把集合拆成五份,取四份做訓練集 乙份做測試集,並且每次選擇不同的那乙份做測試級,最後測出五個結果再做平均,這被認為是最好的測試方法。交叉驗證確實是乙個還不錯的驗證的方法,但...

機器學習 KFold交叉驗證

section i brief introduction on stratifiedkfold from sebastian raschka,vahid mirjalili.python機器學習第二版.南京 東南大學出版社,2018.section ii code and analyses from...