close

一、交叉驗證

交叉驗證的基本思想是把在某種意義下將原始數據(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代碼實現

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()