K 折交叉验证:关于StratifiedKFold 与 KFold 的区别与联系

训练神经网络时的关键一步时要评估模型的泛化能力,一个模型如果性能不好,要么是因为模型过于复杂导致过拟合(高方差),要么是模型过于简单导致导致欠拟合(高偏差)。要解决这一问题,我们就要学会两种交叉验证计数——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。

扫描二维码关注公众号,回复: 7433321 查看本文章

在0.20版本中更改:n_splits v0.22中的默认值将从3更改为5。

随机播放 : 布尔值,可选

在拆分成批次之前是否对数据进行混洗。

random_state : int,RandomState实例或无,可选,默认=无

如果为int,则random_state是随机数生成器使用的种子;否则为false。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是所使用的RandomState实例np.randomshuffle== True时使用。

class sklearn.model_selection.StratifiedKFold(n_splits=’warn’, shuffle=False, random_state=None)

 

首先,它们都是应用于K交叉验证的函数。

不同的是,KFold 函数只用于

猜你喜欢

转载自www.cnblogs.com/gengyi/p/11628730.html