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

如何不使用sklearn.train_test_split拆分数据集为训练集和测试集

手动拆分Pandas训练集/测试集的解决方法

注意:你现有代码里第一步读取的变量名为data,第二步采样用的变量是dataset,请先统一变量名避免运行报错,以下方案默认你已将读取到的数据集赋值给dataset变量。


方案1:推荐无循环高效实现

该方法不需要手动写校验逻辑,运行效率远高于for循环,适合任意数据量场景:

  • 采样训练集时建议固定随机种子,保证每次运行拆分结果可复现:
    random_training = dataset.sample(n=75, random_state=42)
  • 直接通过删除训练集索引的方式获取测试集:
    random_testing = dataset.drop(random_training.index)

执行完成后random_testing就是剩余25行的测试集DataFrame,可直接用于后续数据处理。


方案2:按需求的for循环实现

如果你必须通过for循环校验索引的逻辑来实现,可参考以下代码:

  • 初始化空列表存储测试集数据
    random_testing = []
  • 遍历原数据集索引逐一校验:
for idx in dataset.index:
    # 判断当前索引是否不在训练集的索引列表中
    if idx not in random_training.index:
        # 符合条件的行加入测试集列表
        random_testing.append(dataset.loc[idx])
# 可选:将列表转为Pandas DataFrame格式方便后续处理
random_testing = pd.DataFrame(random_testing)

完整可运行代码示例

import pandas as pd

# 读取Excel数据集
dataset = pd.read_excel('file.xlsx')
# 随机抽取75行作为训练集
random_training = dataset.sample(n=75, random_state=42)
# 获取测试集
random_testing = dataset.drop(random_training.index)

# 验证拆分结果
print(f"训练集行数:{len(random_training)}")
print(f"测试集行数:{len(random_testing)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:04