KFold#
- class sklearn.model_selection.KFold(n_splits=5, *, shuffle=False, random_state=None)[源代码]#
K-Fold交叉验证器。
提供训练/测试索引以拆分训练/测试集中的数据。将数据集拆分为k个连续折叠(默认情况下不进行洗牌)。
然后每个折叠被使用一次作为验证,而剩余的k - 1个折叠形成训练集。
阅读更多的 User Guide .
有关交叉验证行为的可视化以及常见scikit-learn拆分方法之间的比较,请参阅 在scikit-learn中可视化交叉验证行为
- 参数:
- n_splitsint,默认=5
折叠次数。必须至少为2。
在 0.22 版本发生变更:
n_splits
默认值从3更改为5。- shuffle布尔,默认=假
在拆分为批次之前是否对数据进行洗牌。请注意,每个拆分中的样本不会被打乱。
- random_stateint,RandomState实例或无,默认=无
当
shuffle
是真的,random_state
影响指数的顺序,从而控制每个折叠的随机性。否则,该参数没有任何作用。传递int以获得跨多个函数调用的可重复输出。看到 Glossary .
参见
StratifiedKFold
考虑类信息,以避免构建类分布不平衡的折叠(对于二进制或多类分类任务)。
GroupKFold
具有非重叠组的K折叠迭代器变体。
RepeatedKFold
重复K折叠n次。
注意到
第一
n_samples % n_splits
褶皱有尺寸n_samples // n_splits + 1
,其他折痕有大小n_samples // n_splits
,在哪里n_samples
是样本数量。随机CV拆分器可能会为每次拆分调用返回不同的结果。您可以通过设置使结果相同
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()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。