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

如何将完整数据集按50:50比例拆分为训练集和测试集

全量DATASET按50:50拆分为训练集、测试集操作方法

你找到的仅拆分X变量的方案,大多是默认用户已经提前把数据集拆成了特征矩阵X和标签向量y的场景,直接对完整数据集做拆分不需要提前切分X、y,以下是两种最常用环境下可直接运行的操作步骤:

Python 环境(机器学习场景最常用)

  • 前置依赖安装:打开终端执行命令安装需要的库,已经装过可以跳过
    pip install pandas scikit-learn
  • 如果你已经把全量数据读取到变量名为DATASET的DataFrame中,直接运行以下代码即可完成拆分:
from sklearn.model_selection import train_test_split

# test_size=0.5 代表测试集占比50%,random_state设固定值保证每次拆分结果可复现
train_set, test_set = train_test_split(
    DATASET,
    test_size=0.5,
    random_state=42
)

# 运行后打印结果验证拆分比例
print(f"训练集样本量:{len(train_set)},测试集样本量:{len(test_set)}")
  • 关键说明:直接传入完整DATASET时,函数会按行做随机抽样拆分,所有列(包括特征列、标签列、其他附属列)都会完整保留在两个子集中,不会出现只拆分X变量的情况。

R 语言环境(统计分析场景常用)

  • 不需要安装额外第三方包,直接使用基础R函数即可完成拆分,代码如下:
# 固定随机种子保证结果可复现
set.seed(42)

# 生成占比50%的随机抽样行索引
sample_idx <- sample(1:nrow(DATASET), size = floor(0.5 * nrow(DATASET)))

# 按索引拆分全量数据集
train_set <- DATASET[sample_idx, ]
test_set <- DATASET[-sample_idx, ]

# 打印结果验证拆分比例
cat(sprintf("训练集样本量:%d,测试集样本量:%d", nrow(train_set), nrow(test_set)))

新手避坑提示:如果后续建模需要单独取X、y变量,在拆分完成后再从train_set和test_set里分别提取即可,不要在拆分前就把全量数据切成X和y单独拆分,避免出现行对应错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.13 16:15:54