KFold#

sklearn.model_selection.KFold(n_splits=5, *, shuffle=False, random_state=None)[源]#

K-折交叉验证器。

提供训练/测试索引,将数据分割为训练/测试集。将数据集分成 k 个连续的折叠(默认不打乱)。

每个折叠都会被用作一次验证集,而其余 k - 1 个折叠则构成训练集。

详情请阅读用户指南

有关交叉验证行为的可视化以及常见 scikit-learn 分割方法之间的比较,请参阅在 scikit-learn 中可视化交叉验证行为

参数:
n_splitsint, 默认为 5

折叠数。必须至少为 2。

0.22 版本中更改: n_splits 默认值从 3 更改为 5。

shufflebool, 默认为 False

是否在分割成批次之前打乱数据。请注意,每个分割内的样本不会被打乱。

random_stateint, RandomState 实例或 None, 默认为 None

shuffle 为 True 时,random_state 会影响索引的顺序,从而控制每个折叠的随机性。否则,此参数无效。传递一个整数可在多次函数调用中获得可重现的输出。请参阅术语表

另请参阅

StratifiedKFold

考虑类别信息,以避免构建类别分布不平衡的折叠(适用于二元或多类别分类任务)。

GroupKFold

具有不重叠组的 K 折迭代器变体。

RepeatedKFold

重复 K 折 n 次。

备注

n_samples % n_splits 个折叠的大小为 n_samples // n_splits + 1,其他折叠的大小为 n_samples // n_splits,其中 n_samples 是样本数。

随机化的交叉验证分割器在每次调用 split 时可能会返回不同的结果。通过将 random_state 设置为整数,可以使结果保持一致。

示例

>>> import numpy as np
>>> from sklearn.model_selection import KFold
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([1, 2, 3, 4])
>>> kf = KFold(n_splits=2)
>>> kf.get_n_splits(X)
2
>>> print(kf)
KFold(n_splits=2, random_state=None, shuffle=False)
>>> for i, (train_index, test_index) in enumerate(kf.split(X)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[2 3]
  Test:  index=[0 1]
Fold 1:
  Train: index=[0 1]
  Test:  index=[2 3]
get_metadata_routing()[源]#

获取此对象的元数据路由。

请查阅用户指南以了解路由机制的工作原理。

返回:
routingMetadataRequest

一个封装路由信息的 MetadataRequest 对象。

get_n_splits(X=None, y=None, groups=None)[源]#

返回交叉验证器中的分割迭代次数。

参数:
X对象

始终被忽略,仅为兼容性而存在。

y对象

始终被忽略,仅为兼容性而存在。

groups对象

始终被忽略,仅为兼容性而存在。

返回:
n_splitsint

返回交叉验证器中的分割迭代次数。

split(X, y=None, groups=None)[源]#

生成将数据分割为训练集和测试集的索引。

参数:
X形状为 (n_samples, n_features) 的类数组

训练数据,其中 n_samples 是样本数,n_features 是特征数。

y形状为 (n_samples,) 的类数组

监督学习问题的目标变量。

groups对象

始终被忽略,仅为兼容性而存在。

生成:
trainndarray

该分割的训练集索引。

testndarray

该分割的测试集索引。