跳到主内容

AI 训练集划分工具 - 免费训练/验证/测试集一键划分,支持分层(AI工具)

免费下载AI 训练集划分工具 v1.0.0
平台:Windows 10/11 (64位)大小:12 KB版本:v1.0.0更新:
提取码:7r6d(如提示需要,请输入)
下载地址 ▾
解压后双击即可运行,无需安装任何运行环境,不联网、不上传数据。
手写脚本划分训练/验证集,每次都要重写还怕划分不均

AI 训练集划分工具 运行界面

软件名称AI 训练集划分工具
版本v1.0.0
授权免费(可自由使用与转发)
运行方式本地运行,不上传数据
所属分类AI工具

这个工具解决什么问题

做模型训练的人每隔几天就要划分一次数据集:把标注好的数据切成训练集、验证集、测试集。写一次脚本不难,难的是每次换数据集都要改路径、改比例、改字段名,改完还得担心分得对不对。最容易出问题的是类别不平衡的时候——比如正例只占百分之几,纯随机划分很可能让某个类别全部落进训练集,验证集里一条都没有,模型指标看着漂亮但根本不可信。想做个分层划分,又得再写一段按标签分组的代码。

  • 原来的做法:打开编辑器写一段划分脚本,改路径改比例,跑完再手动检查各集合的类别分布是否合理,发现不均衡就调种子重跑。
  • 用这个工具:把数据文件拖进窗口,填好比例,勾上「按标签列分层划分」,点一下,训练/验证/测试三个文件和一份划分报告就写好了;标签分布直接在界面上看得到。
  • 省下来的:原来每次划分要写脚本、查分布、调种子,前后二十分钟;现在选文件点一下,十秒完成,而且类别分布一定有保证。

技术实现

C# + .NET Framework 4.8 写成 WinForms 单窗口程序,编译成单个 exe。数据划分是纯计算加文件读写,用系统自带的 .NET Framework 就够了,不需要 Python 环境,也不需要 pandas / scikit-learn 这类依赖——用户双击就能用,不用先配环境。

  • 固定种子保证划分可复现:随机划分用 new Random(种子) 而不是系统时间或 Guid。同一个种子 + 同一份数据 = 同一个划分结果,实验才能被复现。界面上种子默认为 42,改种子就得到另一组划分。
  • 分层划分单独实现:勾选分层后,先按标签列把数据分组,在每组内部按同一比例切分,再把各组结果合并,最后统一打乱。这样每个子集的标签分布与总体一致——类别不平衡时这一步是必须的,否则可能出现某个类别在验证集里一个样本都没有。小类别还会保底:样本数 ≥3 的类别,验证集至少分到 1 条。
  • 手写 CSV 切分而不是简单 Split(','):用 Split(',') 处理 CSV 是经典陷阱:字段里含逗号或引号(比如文本列里写着「你好,世界」)就会把一列切成两列。这里实现了一个带引号状态机的 SplitCsv:双引号内的逗号不算分隔符,两个连续双引号表示一个转义引号。
  • 标签列从表头自动识别:载入 CSV 后,用表头填充「标签列」下拉框,并优先选中名字是 label / target / class / y / 标签 / 类别 的那一列,找不到就默认选第 2 列(很多数据集第一列是 id)。不需要用户记「第几列」。
  • 原始行原样写回,不做任何改写:划分只负责把行分到不同文件,不解析、不改写、不重新序列化每一行的内容。这样即使数据里有特殊的引号、编码或额外列,也不会在划分这一步被破坏。
  • 输出到新目录 + 划分报告:结果写成 <源文件名>_train.csv / _val.csv / _test.csv,另加一份 _split_report.txt 记录比例、种子、是否分层、各集合条数。原文件完全不动。所有输出带 UTF-8 BOM,Excel 双击不乱码。

技术栈:C# 5.0、.NET Framework 4.8、WinForms 窗体

已知局限:只按行划分,不做数据增强、不做去重、不做按长度分桶;CSV 解析是轻量实现,不支持字段内的换行符(含换行的字段需要先用其它工具处理)。

操作教程

  1. 打开程序
    双击 exe,窗口打开:上方是文件与参数区,中间左边是数据集概况,右边是数据预览,下方是「划分并导出」按钮。
    预期结果:窗口正常显示,状态栏提示「先选择数据文件」。
  2. 载入数据
    点「选择文件」选一个 .csv / .txt / .jsonl,或直接把文件拖进窗口。CSV 会自动识别表头并填充标签列下拉框。
    预期结果:左侧显示样本总数、文件格式、表头与标签分布;右侧显示前 40 行原始内容。
  3. 设置划分比例
    填训练 / 验证 / 测试三个百分比,默认 80 / 10 / 10,三个数加起来必须等于 100。
    预期结果:比例不为 100 时点导出会提示并阻止,不会产生错误的划分。
  4. 选择是否分层
    如果数据类别不平衡(比如正例很少),勾上「按标签列分层划分」,并在下拉框里确认标签列选对了。
    预期结果:左侧标签分布随所选列变化;分层划分后各子集的类别比例与总体一致。
  5. 设置随机种子
    默认种子 42。想换一组划分就改种子;想复现之前的划分就把种子填回去。
    预期结果:相同种子 + 相同数据得到完全相同的划分结果。
  6. 划分并导出
    点「划分并导出」,选一个输出目录。工具会写出三个数据文件加一份划分报告。
    预期结果:弹窗显示各集合条数与输出目录;目录里出现 _train.csv / _val.csv / _test.csv / _split_report.txt。

整个过程在本地完成,数据不会上传到任何服务器。

常见问题

Q:为什么一定要分层划分?A:因为类别不平衡时纯随机划分不可靠。举个例子:1000 条数据里正例只有 30 条,按 80/10/10 随机切,验证集里可能一条正例都没有,模型在验证集上的指标就完全失真了。分层划分保证每个子集里各类别的比例与总体一致,小类别还会保底至少分到 1 条。
Q:划分结果是可复现的吗?A:是。划分只取决于「数据 + 比例 + 种子 + 是否打乱 + 是否分层」这几个因素。只要种子和数据不变,每次跑出来的三个文件内容完全一致,方便做实验对比。
Q:CSV 里字段含逗号会被切错吗?A:不会。工具用的是带引号状态机的 CSV 切分:字段用双引号包起来时,里面的逗号不算分隔符,两个连续双引号会被还原成一个引号。这也是标准 CSV 的处理方式。
Q:会修改我原来的数据文件吗?A:不会。工具只读原文件,输出写成新文件(带 _train / _val / _test 后缀),写在你自己选的目录里。
Q:支持多大的数据量?A:受内存限制。工具会把整个文件读进内存再划分,几十万行、几十 MB 的文本数据没有问题。如果数据量到 GB 级,建议先分块或用命令行工具处理。
Q:为什么导出的文件用 Excel 打开是乱码?A:不会乱码。导出的 CSV 带 UTF-8 BOM,Excel 双击能正确识别中文。如果用其它工具打开发现乱码,请手动指定 UTF-8 编码导入。
Q:txt / jsonl 文件能分层吗?A:不能。分层需要知道每条样本的标签,而 txt / jsonl 是一行一条、没有列的概念。这类文件只支持随机划分。如果 jsonl 里每条是带标签的 JSON,可以先转成 CSV 再划分。
Q:划分报告有什么用?A:报告记录了这次划分的全部参数(比例、种子、是否分层、各集合条数),放在数据集目录里,几个月后回头看能知道这份划分是怎么来的,也方便复现。
Q:三个比例必须加起来等于 100 吗?A:是。工具会校验,不等于 100 会弹提示并阻止导出,避免产生「训练集和验证集加起来只有 90% 数据」这种静默错误。

技术实现与后续维护

本工具由我们自行开发并持续维护,每次迭代都经过本地自测。划分算法(SplitPlain / SplitStratified)是纯内存计算,与界面和文件读写解耦;CSV 解析(SplitCsv / GetCsvField)是静态方法,可以直接拿字符串做单元测试。打包前还会用 exe 内置的无人值守自测入口(exe --selftest <数据文件> <输出目录>)跑一遍完整划分——它复用界面按钮同一条代码路径(SplitTo),确保交付的 exe 里算法真实可用。

技术构成:

  • src/MainForm.cs —— 唯一源码文件:CSV 切分 + 划分算法(普通/分层)+ 界面 + 导出与报告
  • DOCS/开发文档.md —— 工程结构、分层算法说明、可复现性约定与扩展点

运行环境:

使用 .NET Framework 4.8 自带的 csc.exe 编译,无需 Visual Studio:

csc /target:winexe /out:AI训练集划分工具.exe /platform:anycpu /optimize+ /reference:System.Windows.Forms.dll /reference:System.Drawing.dll src\MainForm.cs

也可以在 Visual Studio 2019/2022 中新建「.NET Framework 4.8」Windows 窗体项目,把 src\MainForm.cs 加入后直接生成。

可扩展方向:

  • 增加 jsonl 字段提取,支持对 jsonl 做分层划分
  • 增加去重(文本指纹)避免训练/验证集泄漏
  • 增加 K 折交叉验证的多组输出
  • 增加按长度分桶,使各集合的文本长度分布一致

本工具免费提供使用,但不对外分发源码。如果你需要在本工具基础上做功能调整、对接内部系统或长期维护,可以联系我们做二次开发,源码与工程文档可在定制合作中一并交付。

需要其它功能?可以定制

这个工具只做一件事:手写脚本划分训练/验证集,每次都要重写还怕划分不均。如果你的场景还需要别的处理,可以联系我们做二次开发,按你的实际数据格式和流程定制。

常见的定制需求:

  • 支持 jsonl 内部字段的标签提取,让 jsonl 也能分层划分
  • 增加「按长度分桶」划分,让各集合的文本长度分布也一致
  • 划分前自动去重(按文本指纹),避免同一条样本同时出现在训练集和验证集
  • 生成 K 折交叉验证的多组划分文件
  • 联系方式:邮箱/微信见站内「联系我们」页面,或在本文下方留言
  • 定制说明:请附上你的数据样例(脱敏即可)和期望结果,方便快速评估工作量
  • 交付形式:定制项目可交付可执行程序,按需一并交付源码与工程文档,支持长期维护

使用说明与免责声明

  • 本工具在本地运行,不联网、不上传任何数据到服务器。
  • 涉及文件改写的功能,请在使用前备份原始文件。
  • 软件完全免费,可自由使用与转发,请勿用于倒卖。
  • 因误操作造成的数据问题请自行承担。
免费下载AI 训练集划分工具 v1.0.0
平台:Windows 10/11 (64位)大小:12 KB版本:v1.0.0更新:
提取码:7r6d(如提示需要,请输入)
下载地址 ▾
解压后双击即可运行,无需安装任何运行环境,不联网、不上传数据。
分享到:

本文链接:https://www.biyeyuanma.cn/post/280.html

服务热线

加我微信

加我微信