You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数据集拆分为5折交叉验证独立子集以替代传统80-20划分

5折交叉验证子集拆分实现

你可以直接使用scikit-learn中的KFold工具完成拆分,以下是完整可运行代码:

首先导入依赖库:

import pandas as pd
from sklearn.model_selection import KFold

示例数据集定义(和你提供的一致):

X = pd.DataFrame({'a': [1, 3, 5, 7, 4, 5, 6, 4, 7, 9],
                  'b': [3, 5, 6, 2, 4, 6, 7, 8, 7, 8],
                  'c': [2, 3, 4, 5, 6, 7, 8, 9, 2, 1]} )
y = [2, 3, 1, 1, 3, 2, 1, 3, 2, 2]

执行5折拆分逻辑:

# 初始化5折拆分器,shuffle=True表示先打乱数据集再拆分,random_state固定保证结果可复现
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# 存储所有折的特征和标签子集
X_folds = []
y_folds = []

for _, test_idx in kf.split(X):
    X_folds.append(X.iloc[test_idx].reset_index(drop=True))
    y_folds.append([y[i] for i in test_idx])

# 按需求赋值为X1~X5、y1~y5变量
X1, X2, X3, X4, X5 = X_folds
y1, y2, y3, y4, y5 = y_folds

补充说明:

  • 拆分得到的5个子集相互无重叠,示例数据集共10条样本,每折刚好包含2条样本
  • 如果不需要打乱原始数据顺序,把shuffle=True改为shuffle=False即可
  • 如果是分类任务,希望每折的标签类别分布和原始数据集保持一致,可以将KFold替换为StratifiedKFold,使用方法完全相同

内容的提问来源于stack exchange,提问作者user12587364

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:36:01