訓練集、測試集和驗證集(使用sklearn進行劃分)
阿新 • • 發佈:2019-01-22
一、訓練集和測試集
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. 驗證集與測試集
首先的想法就是,使用測試集來評估超引數選擇的優劣。但是當我們通過測試集選擇了最優的超引數,我們就無法再使用測試集來評估模型的泛化能力了。因此,我們應該從資料集中再劃分出一部分用來選擇超引數,這部分資料集稱為驗證集
三、訓練集、驗證集和測試集
訓練集:用來訓練模型;
驗證集:用來選擇超引數;
測試集:評估模型的泛化能力;