1. 程式人生 > >訓練集、測試集和驗證集(使用sklearn進行劃分)

訓練集、測試集和驗證集(使用sklearn進行劃分)

一、訓練集和測試集

1.      概念

我們訓練機器學習模型,目的是使用已有資料來預測未知的資料,通常我們稱模型對未知資料的預測能力稱為泛化能力。為了評估一個模型的泛化能力,通常我們會將資料分成訓練集和測試集,訓練集用來訓練模型,測試集用來評估模型的泛化能力。

2.      使用sklearn劃分訓練集和測試集

from sklearn.model_selection import train_test_split
from sklearn import datasets
iris = datasets.load_iris()
# 30%用於測試集,70%用於訓練集
X_train,X_test,y_train,y_test= train_test_split(iris.data,iris.target,test_size=0.3,random_state=0)

二、超引數和驗證集 

1.      超引數

大多數的機器學習演算法都有超引數,這些引數用來控制演算法的行為。通常超引數的值不是通過學習演算法本身學習出來的。例如對於多項式模型的階就是超引數,例如當階為1時的多項式模型為:

當階為2時的多項式模型為:

當我們選定了超引數(多項式模型的階)後,再使用學習演算法求的模型的引數w.

那麼,我們怎麼選擇超引數?用怎麼評估超引數選擇的好壞?

2.      驗證集與測試集

首先的想法就是,使用測試集來評估超引數選擇的優劣。但是當我們通過測試集選擇了最優的超引數,我們就無法再使用測試集來評估模型的泛化能力了。因此,我們應該從資料集中再劃分出一部分用來選擇超引數,這部分資料集稱為驗證集

三、訓練集、驗證集和測試集

訓練集:用來訓練模型;

驗證集:用來選擇超引數;

測試集:評估模型的泛化能力;