# 训练/测试集分层切分器

读取 CSV/JSON 数据集,按目标列做分层抽样的 train/validation/test 切分(默认 70/15/15,随机种子可复现),或分层 k 折交叉验证;输出每折类别分布报告与偏差条、重复行泄漏检查、SMOTE 过采样预览(仅在训练折上做最近邻插值),并可导出各折 CSV 为 ZIP。

> 标准页面: https://elysiatools.com/zh/tools/train-test-split-with-stratification

- **分类:** Data Analysis

- **关键词:** 分层切分, 训练验证测试集, k 折交叉验证, smote, 类别分布, 可复现种子

## 概述

分层切分:对每个类别分别用种子化 PRNG(mulberry32)洗牌,再按最大余数法把该类成员分配到各切分,使每折类别占比贴合原数据集;k 折模式按 StratifiedKFold 语义:每类洗牌后轮转分配到各折(第 j 个成员进第 j mod k 折)。SMOTE(Chawla 等 2002)仅在训练折上预览:对少数类样本 x_i 取其 k=5 个少数类近邻之一 x_z,合成 x_new = x_i + λ·(x_z − x_i),λ∈U(0,1),仅使用数值特征列(欧氏距离)。随机种子保证同一种子同一结果(与 numpy 的 PCG64 流不同,但行为等价且已文档化)。稀有类保护:任何类别样本数少于切分数时给出警告;k 折时 k 超过最小类别样本数则按 sklearn 行为直接拒绝。

## 输入项

- **数据集文件（CSV 或 JSON）** (file): CSV with a header row, or a JSON array of objects
- **或粘贴 CSV（含表头）** (textarea): age,income,label 23,42000,A 41,71000,B …
- **目标列（类别标签）** (text): label
- **切分模式** (select)
- **训练集百分比** (number)
- **验证集百分比** (number)
- **折数（k）** (number)
- **随机种子** (number)
- **按目标列分层** (checkbox)
- **切分前打乱行序** (checkbox)
- **SMOTE 过采样预览（训练折）** (checkbox)
- **导出切分 CSV 为 ZIP** (checkbox)

## 适用场景

- 在构建分类模型前，需要保持训练集、验证集和测试集中各类别标签比例与原始数据完全一致时。
- 面对类别不平衡数据，需要在训练子集上评估 SMOTE 插值效果并防止测试集数据泄露时。
- 进行 k 折交叉验证时，需要确保每一折验证集的类别分布均匀且划分结果完全可复现。

## 工作原理

- 解析上传的文件或文本数据，依据指定的目标列对每个类别样本分别使用种子化伪随机算法（mulberry32）与 Fisher–Yates 进行洗牌。
- 在标准模式下采用最大余数法按比例分配样本，在 k 折模式下采用轮转分配法（StratifiedKFold）将各类别样本均匀分入各折。
- 在各切分之间执行跨子集重复行碰撞检测以发现数据泄露，并根据数值列与欧氏距离为训练折计算 SMOTE 最近邻合成样本预览。
- 生成各分区的类别占比与偏差分析报告，并将划分好的各折数据集连同 split_report.json 打包为 ZIP 压缩包供下载。

## 使用案例

- 客户流失预测建模：将高流失率与低流失率客户按 70/15/15 比例分层切分，确保评估集反映真实业务分布。
- 文本情感分类验证：对包含正面、中立、负面三分类的小型文本数据集进行 4 折或 5 折分层交叉验证。
- 金融欺诈检测预处理：针对极低比例欺诈标签进行分层划分，并在训练折预览 SMOTE 过采样后的数据平衡效果。

## 常见问题

### 什么是分层抽样（Stratification）？

分层抽样可确保切分后的训练集、验证集和测试集（或每折验证集）中各类别标签的百分比与原数据集保持一致，避免因随机抽样导致少数类样本缺失。

### SMOTE 过采样会应用到测试集或验证集吗？

不会。SMOTE 仅基于训练折的少数类数值特征计算合成样本，严格避免验证集和测试集发生数据泄露。

### 如果某类别的样本数少于切分折数会发生什么？

在标准切分中若类别样本数少于切分数会触发稀有类警告；在 k 折模式下，若折数 k 大于最小类别的样本数，系统会直接报错拒绝以防生成空折。

### 相同的随机种子能保证生成完全一样的切分结果吗？

可以。工具使用确定的种子化随机数生成器（mulberry32），只要输入数据和随机种子相同，每次生成的切分结果完全一致。

### 工具支持哪些输入格式与导出格式？

支持输入 CSV 文件或 JSON 对象数组（也可以直接粘贴含表头的 CSV 文本），切分完成后可导出包含各折 CSV 文件及 split_report.json 报告的 ZIP 压缩包。

## 相关工具

- [时间序列预测与季节性分析](https://elysiatools.com/zh/tools/time-series-forecast-seasonality-analyzer): 从 CSV 或 JSON 时间序列数据中预测未来数期，并在一份报告中查看趋势、季节项和残差分解
- [CSV 转数据库迁移规划器](https://elysiatools.com/zh/tools/csv-to-database-migration-planner): 根据 CSV 数据推断关系型 schema，并为 PostgreSQL、MySQL、SQLite 或 SQL Server 生成建表和 ALTER 迁移计划
- [CSV/JSON 数据水印器](https://elysiatools.com/zh/tools/csv-json-data-watermarker): 为 CSV 或 JSON 导出注入可见或签名式水印字段，以便后续追踪共享数据
- [数据集不平衡检测与重采样](https://elysiatools.com/zh/tools/dataset-imbalance-detector-resampler): 检测 CSV 或 JSON 数据集中的类别不平衡，对比重采样策略，并预览平衡后的输出数据集
- [数据质量画像师](https://elysiatools.com/zh/tools/dataset-quality-profiler): 对 CSV 或 JSON 数据集进行质量画像，识别缺失值、重复行、格式漂移、类型推断和数值异常。
- [健身训练 PDF 生成器](https://elysiatools.com/zh/tools/fitness-workout-pdf-generator): 从 JSON 或 CSV 训练计划数据生成可打印 PDF，包含动作表格、进度格子和可选的视频二维码
- [CSV 生成 JSON-LD](https://elysiatools.com/zh/tools/json-ld-generator-from-csv): 把 CSV 或 Excel 行数据转换为适用于 Article、Product、Event 的 Schema.org JSON-LD，方便 SEO 团队直接验证
- [播客章节标记生成器（ID3 / Podcasting 2.0）](https://elysiatools.com/zh/tools/podcast-chapter-marker-builder): 粘贴时间码章节列表，一次生成全部交付格式：Podcasting 2.0 章节 JSON（v1.2.0）与 RSS podcast:chapters 标签、可选把 ID3v2.4 CHAP+CTOC 章节帧直接烧入上传的 MP3（毫秒为普通大端 uint32、偏移 0xFFFFFFFF、每章嵌 TIT2 子帧、保留原有标签帧）、Vorbis CHAPTER001 注释对（OGG/Opus）、mp4chaps 文本、YouTube 说明栏时间戳块与 SRT 副车文件，并附各播放器真实支持情况（Apple 自 2025 起支持 RSS JSON；Pocket Casts/Overcast 仅读内嵌 ID3；Spotify 两者都不读）。

## 示例

- [CSV示例](https://elysiatools.com/zh/samples/csv-samples): 各种数据类型、大小和复杂度级别的CSV示例文件
- [Python 示例](https://elysiatools.com/zh/samples/python): Python代码示例和Hello World演示
- [WebRTC 实时通信示例](https://elysiatools.com/zh/samples/webrtc-samples): 全面的 WebRTC 示例，用于点对点音视频通信、数据通道、屏幕共享和信令服务器实现
- [分布式追踪示例](https://elysiatools.com/zh/samples/distributed-tracing-samples): 使用 Jaeger、OpenTelemetry 和其他现代可观测性工具的综合分布式追踪示例，适用于微服务架构

## 相关内容

- [JSON 交换与格式翻译工具](https://elysiatools.com/zh/hubs/json-convert): 在一个专题里比较 JSON 与 CSV、YAML、TOML、GraphQL、XML、Markdown、Excel、BSON、EDN 等结构化格式之间的转换工具。
- [文本大小写、编码与规范化转换工具](https://elysiatools.com/zh/hubs/text-convert): 在一个专题中比较文本大小写转换、全半角转换、编码转换、Quoted-Printable 处理和行内文本规范化工具。
- [CSV 导出与表格转换工具](https://elysiatools.com/zh/hubs/csv-convert): 在一个专题里比较 CSV 与 Excel、JSON、HTML、Markdown、XML 和文本之间的转换工具，适合表格导出与交换工作流。
- [JSON 检查、对比与转换工具](https://elysiatools.com/zh/hubs/json-utility): 把 JSON 格式化、差异对比、路径检查、Schema 校验、合并、转换和导出工具集中到一个专题中，适合 API 与数据处理流程。
