You need to enable JavaScript to run this app. 如何在Ludwig中指定单文件数据集的训练、测试行划分范围
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ludwig中指定单文件数据集的训练、测试行划分范围

针对你需求的Ludwig适配方案

你目前遇到的拆分逻辑问题,Ludwig提供了多种原生配置可以直接匹配,不需要额外编写自定义拆分脚本,按实用性排序分别是:

1. 配置YAML实现固定行顺序拆分

不需要拆分原文件,直接在model_definitions.yml的preprocessing段添加拆分规则,即可实现严格按文件行顺序切分的效果:

preprocessing:
  split:
    # 关闭随机打散,保证完全按照CSV原始行顺序处理
    shuffle: false
    # 采用固定顺序切分模式,不做随机采样
    mode: fixed
    # 切分比例顺序为[训练集占比, 验证集占比, 测试集占比]
    # 按你15500行总规模,前9500行训练、后6000行测试的需求计算占比
    probabilities: [0.6129, 0.0, 0.3871]

配置完成后再执行原来的ludwig experiment命令,Ludwig会自动截取前9500行划入训练集,剩余6000行划入测试集,完全符合你的拆分规则。

2. 基于标记列的零计算拆分

如果不想手动计算拆分占比,可以给原CSV加一个临时的拆分标记列,把所有前9500行的标记列值填为train,后6000行的标记列值填为test,然后在配置中指定按该列拆分:

preprocessing:
  split:
    # 按指定列的取值自动划分数据集,匹配列值为train/validation/test的样本
    mode: column
    # 替换为你新增的临时拆分标记列的列名
    column_name: split_marker

该配置下不需要手动核算行数占比,Ludwig会自动匹配标记值把样本划入对应的数据集,拆分逻辑更直观。

3. 直接传入独立的训练/测试文件

如果对流程可复现性要求较高,可以直接将原CSV拆分为两个独立文件:

  • 截取前9500行保存为train_set.csv
  • 截取后6000行保存为test_set.csv
    执行实验时替换原有的--dataset参数为独立的数据集路径:
ludwig experiment --training_set train_set.csv --test_set test_set.csv --config_file model_definitions.yml

该方式拆分逻辑完全可控,不受Ludwig默认拆分规则的影响。

注意:你原本直接传入单个--dataset参数的执行逻辑,默认会开启随机打散,按7:1:2的比例随机切分全量数据。该逻辑一方面会把后6000行无标签的样本随机混入训练集,触发标签缺失的报错;另一方面也会把前9500行的有标签样本随机划到测试集,完全不符合你“全量用有标签样本训练、全量用无标签样本测试”的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 15:24:03