KFold(n_splits=5, shuffle=False, random_state=None)
该函数用来做K折交叉验证。
n_splits:折数,int型,默认值为5.
shuffle:对数据进行划分前是否进行洗牌。boolean型
random_state:int, RandomState instance 或 None, 默认为None。直译为“随机状态”。
只有当shuffle=True时,random_state才有意义。
可以看到,两次的数据划分不一样,每次划分前都重新洗牌一次
import pandas as pd
import numpy as np
from sklearn.model_selection import KFold
xx=np.arange(25)
kf=KFold(n_splits=5,shuffle=True,random_state=None)
for train_index,test_index in kf.split(xx):
print('train_index:%s,test_index:%s'%(train_index,test_index))
#输出结果
train_index:[ 0 1 2 3 4 5 6 8 9 10 11 12 14 15 17 18 19 20 21 23],test_index:[ 7 13 16 22 24]
train_index:[ 0 2 4 5 6 7 8 10 11 12 13 14 15 16 17 19 20 21 22 24],test_index:[ 1 3 9 18 23]
train_index:[ 1 2 3 5 7 8 9 10 11 12 13 14 15 16 18 20 21 22 23 24],test_index:[ 0 4 6 17 19]
train_index:[ 0 1 2 3 4 6 7 9 11 12 13 16 17 18 19 20 21 22 23 24],test_index:[ 5 8 10 14 15]
train_index:[ 0 1 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 22 23 24],test_index:[ 2 11 12 20 21]
#重新运行一次
kf=KFold(n_splits=5,shuffle=True,random_state=None)
for train_index,test_index in kf.split(xx):
print('train_index:%s,test_index:%s'%(train_index,test_index))
# 输出结果
train_index:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 24],test_index:[16 20 21 22 23]
train_index:[ 1 2 3 4 5 6 7 8 9 11 12 14 15 16 17 20 21 22 23 24],test_index:[ 0 10 13 18 19]
train_index:[ 0 2 4 5 6 7 9 10 11 12 13 14 15 16 18 19 20 21 22 23],test_index:[ 1 3 8 17 24]
train_index:[ 0 1 3 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24],test_index:[ 2 4 5 6 11]
train_index:[ 0 1 2 3 4 5 6 8 10 11 13 16 17 18 19 20 21 22 23 24],test_index:[ 7 9 12 14 15]
例如指定为“1”,