简单来说,就是将数据划分为n分,(n-1)份用于训练,1份用于验证,大概就是n折交叉验证了。
假如我的训练集有100个样本,在训练的时候使用5折交叉验证,就是把这100个样本分为5份,4份用于训练,1份用于验证。而分成的5份分别做一次验证集,就是交叉了5次。
这里举个例子:
import numpy as np
from sklearn.model_selection import KFold
# K折交叉验证在训练集上
kf = KFold(n_splits=5, shuffle=True, random_state=42)
val_accuracies = []
for train_index, val_index in kf.split(range(100)):
print(train_index)
print("数据的长度为:",len(train_index))
print("-----------------------")
print(val_index)
print("数据的长度为:",len(val_index))
print("**********************************************************************")
[ 1 2 3 5 6 7 8 9 11 13 14 15 16 17 19 20 21 23 24 25 26 27 28 29 32 34 35 36 37 38 40 41 42 43 46 47 48 49 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 74 75 78 79 81 82 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99] 数据的长度为: 80 ----------------------- [ 0 4 10 12 18 22 30 31 33 39 44 45 53 70 73 76 77 80 83 90] 数据的长度为: 20 ********************************************************************** [ 0 1 2 3 4 6 7 8 10 12 13 14 17 18 19 20 21 22 23 24 25 27 29 30 31 32 33 34 36 37 38 39 41 43 44 45 46 48 49 50 51 52 53 54 56 57 58 59 60 61 62 63 64 67 68 70 71 73 74 75 76 77 78 79 80 81 82 83 84 86 87 89 90 91 92 94 95 97 98 99] 数据的长度为: 80 ----------------------- [ 5 9 11 15 16 26 28 35 40 42 47 55 65 66 69 72 85 88 93 96] 数据的长度为: 20 ********************************************************************** [ 0 1 2 4 5 9 10 11 12 14 15 16 18 20 21 22 23 26 28 29 30 31 32 33 35 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 90 91 92 93 94 96 97 98 9