【发布时间】:2021-07-29 07:15:01
【问题描述】:
这是我使用不同 k (3,4,5,6) 值的基本代码
from numpy import array
from sklearn.model_selection import KFold
# data sample type(data)
data = array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6])
# prepare cross validation
k = 6
kfold = KFold(k, True, 1)
# enumerate splits
for train, test in kfold.split(data):
print('train: %s, test: %s' % (data[train], data[test]))
输出是:-
k = 3
train: [0.1 0.4 0.5 0.6], test: [0.2 0.3]
train: [0.2 0.3 0.4 0.6], test: [0.1 0.5]
train: [0.1 0.2 0.3 0.5], test: [0.4 0.6]
k=4
train: [0.1 0.4 0.5 0.6], test: [0.2 0.3]
train: [0.2 0.3 0.4 0.6], test: [0.1 0.5]
train: [0.1 0.2 0.3 0.5 0.6], test: [0.4]
train: [0.1 0.2 0.3 0.4 0.5], test: [0.6]
k=5
train: [0.1 0.4 0.5 0.6], test: [0.2 0.3]
train: [0.1 0.2 0.3 0.4 0.6], test: [0.5]
train: [0.2 0.3 0.4 0.5 0.6], test: [0.1]
train: [0.1 0.2 0.3 0.5 0.6], test: [0.4]
train: [0.1 0.2 0.3 0.4 0.5], test: [0.6]
k=6
train: [0.1 0.2 0.4 0.5 0.6], test: [0.3]
train: [0.1 0.3 0.4 0.5 0.6], test: [0.2]
train: [0.1 0.2 0.3 0.4 0.6], test: [0.5]
train: [0.2 0.3 0.4 0.5 0.6], test: [0.1]
train: [0.1 0.2 0.3 0.5 0.6], test: [0.4]
train: [0.1 0.2 0.3 0.4 0.5], test: [0.6]
所有这些中的一个共同点是验证集从不重复观察,但定义是,“然后将每个折叠用作一次验证,而剩余的 k - 1 个折叠形成训练集”。 k=3,4,5 是错误的,那么只有 k=6 是正确的,对吧?
【问题讨论】:
标签: python cross-validation k-fold