回歸問題中的K折驗證

2021-10-11 18:45:11 字數 1320 閱讀 4218

回歸問題中,為了調節網路引數(如訓練輪數)的同時對網路進行評估,一般將資料集分為訓練集和驗證集。但有時由於資料集比較小,驗證集會非常小。因此會導致驗證結果會有很大波動,無法對模型進行可靠的評估,此時,最佳的做法就是使用k折交叉驗證。

k折交叉驗證的思路就是將資料集劃分為k個分割槽,通常k=4或k=5,建立k個相同的模型,將每個模型在k-1個分割槽上訓練,並在剩下的乙個分割槽進行驗證評估,最後模型的驗證分數等於k個驗證分數的平均值。**實現如下:

import numpy as np

#輸入k值(預設5折)

#訓練輪數

#訓練資料

#訓練目標資料(標籤)

def k_fold(k=5, val_samples_num, num_epchos=100,train_data, train_target):  #訓練集均分為k份

val_samples_num = len(train_data) // k

all_scores =

for i in range(k):

print('now is %d fold' % i)

val_data = train_data[i*val_samples_num:(i+1)*val_samples_num]

val_targets = train_target[i*val_samples_num:(i+1)*val_samples_num]

partial_train_data = np.concatenate([train_data[:i*val_samples_num],

train_data[(i+1)*val_samples_num :]],

axis=0)

partial_train_targets = np.concatenate([train_target[:i*val_samples_num],

train_target[(i+1)*val_samples_num :]],

axis=0)

model = build_model()

model.fit(partial_train_data, partial_train_targets, epochs=num_epchos, batch_size=1, verbose=0)

val_mse, val_mae = model.evaluate(val_data, val_targets, verbose=0)

mae_mean = np.mean(all_scores)

print(mae_mean)

可以通過畫出每輪mae的走勢圖來觀察訓練情況,判斷是否有過擬合,同時找到乙個相對好的輪數值。

回歸問題中的K折驗證

回歸問題中,為了調節網路引數 如訓練輪數 的同時對網路進行評估,一般將資料集分為訓練集和驗證集。但有時由於資料集比較小,驗證集會非常小。因此會導致驗證結果會有很大波動,無法對模型進行可靠的評估,此時,最佳的做法就是使用k折交叉驗證。k折交叉驗證的思路就是將資料集劃分為k個分割槽,通常k 4或k 5,...

回歸問題中的

skullfang 關注 0.32018.01.19 15 18 字數 913 閱讀 39609 喜歡 13 分類問題的評價指標是準確率,那麼回歸演算法的評價指標就是mse,rmse,mae r squared。下面一一介紹 mse mean squared error 叫做均方誤差。看公式 這裡的...

k折交叉驗證

在做機器學習這方面研究的時候,例如pcr和pls等演算法時常會遇到最佳潛變數的選取,神經元個數的選取 這些引數的選取對模型的質量產生極大的影響。如果人為選取,這樣是十分不可靠的也是不現實的。進行交叉驗證是乙個優秀模型形成必不可少的過程。交叉驗證的目的是為了得到更為穩健可靠的模型。交叉驗證的方法有許多...