一、交叉驗證
交叉驗證的基本思想是把在某種意義下將原始數據(dataset)進行分組,一部分做為訓練集(train set),另一部分做為驗證集(validation set or test set),首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來做為評價分類器的性能指標。–來自百科
二、K折交叉驗證KFold()方法
KFold():KFold 將所有的樣例劃分為 k 個組,稱為摺疊 (fold) ,每組數據都具有相同的大小。每一次分割會將其中的 K-1 組作為訓練數據,剩下的一組用作測試數據,一共會分割K次。
可以通過這張圖直觀的體現出來。(這是四折交叉驗證,即K取4)
代碼示例如下:
import numpy as npfrom sklearn.model_selection import KFoldX=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])y=np.array([1,2,3,4,5,6])kf=KFold(n_splits=4) # 定義分成幾個組#for循環中的train_index與test_index是索引而並非我們的訓練數據for train_index,test_index in kf.split(X): print("Train Index:",train_index,",Test Index:",test_index) X_train,X_test=X[train_index],X[test_index] y_train,y_test=y[train_index],y[test_index]StratifiedKFold()方法
StratifiedKFold:是KFold()的變種,採用分層分組的形式(有點類似分層抽樣), 使每個分組中各類別的比例 同整體數據中各類別的比例儘可能的相同。(它相對於KFold()方法更完善)
代碼示例如下:
import numpy as npfrom sklearn.model_selection import StratifiedKFoldX=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])y=np.array([1,1,1,2,2,2])skf=StratifiedKFold(n_splits=4)#for循環中的train_index與test_index是索引而並非我們的訓練數據for train_index,test_index in skf.split(X,y): print("Train Index:",train_index,",Test Index:",test_index) X_train,X_test=X[train_index],X[test_index]y_train,y_test=y[train_index],y[test_index]往期推薦:
推薦算法概述
推薦算法|矩陣分解模型
基於物品的協同過濾python案例演示
基於用戶的協同過濾python代碼實現