Skip to content
Back to skills

Stratified Sampler

ASecurity

'结构化数据分层采样工具。读取 JSONL、JSON、CSV、TSV、XLSX、XLS 等结构化数据,按指定字段分层后无放回抽取样本,输出保留原字段结构的采样结果。

  • 539 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 11, 2026
datapythongobash

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add cas-bigdatalab/piflow --skill stratified_sampler --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stratified Sampler?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stratified Sampler
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cas-bigdatalab-stratified-sampler/badge)](https://www.skillsdirectory.com/skills/cas-bigdatalab-stratified-sampler)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: stratified_sampler
description: '结构化数据分层采样工具。读取 JSONL、JSON、CSV、TSV、XLSX、XLS 等结构化数据,按指定字段分层后无放回抽取样本,输出保留原字段结构的采样结果。

  当用户提到分层采样、类别平衡采样、按标签抽样、训练集分层划分等需求时使用此skill。

  即使用户没有明确说出"stratified_sampler",只要任务涉及按字段分层并进行代表性抽样,就应该使用此skill。

  不负责随机采样、领域均衡采样、批量切分、时间窗口抽样或格式转换。

  '
name_zh: 分层采样算子
input_params:
- name: input
  type: string
  required: true
  description: 输入结构化数据文件路径
- name: output
  type: string
  required: true
  description: 输出结构化数据文件路径
- name: strata_field
  type: string
  required: true
  description: 分层字段(如 category, label 等)
- name: sample_size
  type: string
  required: false
  description: 总采样数量(与 sample_ratio、sample_num 三选一)
- name: sample_ratio
  type: string
  required: false
  description: 每层采样比例(与 sample_size、sample_num 三选一)
- name: sample_num
  type: string
  required: false
  description: 每层固定采样数量(与 sample_size、sample_ratio 三选一)
- name: min_samples
  type: string
  required: false
  default: "0"
  description: 每层最小采样数量,仅用于 sample_size 和 sample_ratio 模式
- name: seed
  type: string
  required: false
  default: "42"
  description: 随机种子
- name: log_file
  type: string
  required: false
  description: 日志文件路径
output_params:
- name: output
  type: file
  description: 分层采样后的结果文件
- name: strata_stats
  type: object
  description: 各层采样统计
tag: 数据筛选
publisher: COMMUNITY
---

# Stratified Sampler 分层采样 Skill

## 功能概述

本 skill 面向结构化数据进行分层抽样,可按指定字段拆分样本分布后再进行无放回采样,尽量保持各层比例与总体一致。
采样过程中保留原始字段结构,适用于训练集划分、类别平衡验证、代表性样本抽样等场景。

## 触发条件

当用户请求以下任务时,应使用此 skill:
- 分层采样
- 类别平衡采样
- 按标签抽样
- 训练集分层划分

## 核心参数说明

### 必需参数

- `--input`:输入结构化数据文件路径
- `--output`:输出结构化数据文件路径
- `--strata_field`:分层字段名

### 可选参数

- `--sample_size`:总采样数量
- `--sample_ratio`:每层采样比例
- `--sample_num`:每层固定采样数量
- `--min_samples`:每层最小采样数量,默认 `0`
- `--seed`:随机种子,默认 `42`
- `--log_file`:日志文件路径

## 输入文件格式

输入文件可以是 JSONL、JSON、CSV、TSV、XLSX、XLS 等结构化数据文件。至少需要包含一个可用于分层的字段。

示例:
```jsonl
{"id": 1, "category": "A", "text": "A-1"}
{"id": 2, "category": "A", "text": "A-2"}
{"id": 3, "category": "B", "text": "B-1"}
```

## 使用方法

### 按总量分层采样
```bash
python scripts/run_stratified_sampler.py \
  --input data.jsonl \
  --output sampled.jsonl \
  --strata_field category \
  --sample_size 1000 \
  --seed 42
```

### 按比例分层采样
```bash
python scripts/run_stratified_sampler.py \
  --input data.csv \
  --output sampled.csv \
  --strata_field category \
  --sample_ratio 0.1 \
  --min_samples 1 \
  --seed 42
```

### 按每层固定数量采样
```bash
python scripts/run_stratified_sampler.py \
  --input data.xlsx \
  --output sampled.xlsx \
  --strata_field label \
  --sample_num 20 \
  --seed 42
```

## 输出示例

```text
[OK] Stratified sampling completed
   Input: data.csv
   Output: sampled.csv
   Total records: 12
   Strata field: category
   Sampled records: 6
   Strata distribution:
      A: 2/4 (50.0%)
      B: 1/3 (33.3%)
      C: 2/4 (50.0%)
      D: 1/1 (100.0%)
```

## 环境要求

- Python 3.x
- pandas
- 读取 Excel 文件时需要对应引擎依赖

## 注意事项

1. 采样是无放回的,每条记录最多被选中一次
2. 设置相同的种子可以得到相同的采样结果
3. `sample_size`、`sample_ratio`、`sample_num` 三者只能选择一个
4. `min_samples` 只用于 `sample_size` 和 `sample_ratio` 模式
5. 如果某层比例分配后采样数为 0,但该层存在样本且总采样数大于 0,脚本会保底抽取 1 条
6. 如果 `sample_size` 大于可用总量,结果会尽量返回全部数据

Files in this skill

  • SKILL.md4.5 KB
  • scripts/data_io.py3.5 KB
  • scripts/example_input.json124 B
  • scripts/run_stratified_sampler.py9 KB
  • skill.json3.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in data →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.