训练神经网络时的关键一步时要评估模型的泛化能力,一个模型如果性能不好,要么是因为模型过于复杂导致过拟合(高方差),要么是模型过于简单导致导致欠拟合(高偏差)。要解决这一问题,我们就要学会两种交叉验证计数——holdout交叉验证和k折交叉验证, 来评估模型的泛化能力。
计算K折 交叉验证结果的平均值作为参数来评估模型,故而使用k折交叉验证来寻找最优参数要比holdout方法更稳定。一旦我们找到最优参数,要使用这组参数在原始数据集上训练模型作为最终的模型。
1 KFold
class sklearn.model_selection.KFold(n_splits=’warn’, shuffle=False, random_state=None)
提供 train / test 索引
提供训练/测试索引以将数据拆分为训练/测试集。将数据集拆分为k个连续的折叠(默认情况下不进行混洗)。
Provides train/test indices to split data in train/test sets. Split dataset into k consecutive folds (without shuffling by default).
然后将每个折叠用作一次验证,而剩余k-1个折叠形成训练集。
n_splits : int,默认= 3
折数。必须至少为2。
在0.20版本中更改:n_splits
v0.22中的默认值将从3更改为5。
随机播放 : 布尔值,可选
在拆分成批次之前是否对数据进行混洗。
random_state : int,RandomState实例或无,可选,默认=无
如果为int,则random_state是随机数生成器使用的种子;否则为false。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是所使用的RandomState实例np.random
。当shuffle
== True时使用。
class sklearn.model_selection.StratifiedKFold(n_splits=’warn’, shuffle=False, random_state=None)
首先,它们都是应用于K交叉验证的函数。
不同的是,KFold 函数只用于
K 折交叉验证:关于StratifiedKFold 与 KFold 的区别与联系
原文:https://www.cnblogs.com/gengyi/p/11628730.html