本目录是自包含的数据与预处理包:不依赖主项目任何脚本或路径,所有代码与数据均在本文件夹内。主项目文件只读复制,不做任何修改,以保证原有实验结果可复现。
ai_processed_data/
├── README.md # 本文档
├── requirements.txt # Python 依赖
├── pkg_bootstrap.py # 包路径自举(注入 src/ 并重写数据路径)
├── build_package.py # 从主项目复制数据/参考文件(仅写入本目录)
│
├── scripts/
│ ├── build_aligned.py # 从原始 xlsx 重建 aligned_clean.parquet
│ ├── export_splits.py # 导出 Train/Val/Test 切分 CSV/Parquet
│ └── verify_data.py # 校验数据完整性
│
├── src/pv_data/ # 预处理源码(复制自主项目,路径已适配)
│ ├── config.py # 路径、时间边界、特征列
│ ├── raw_loader.py # 功率/辐照 xlsx 加载
│ ├── cleaner.py # 5min 对齐与物理清洗
│ ├── solar_geometry.py # 太阳高度角计算
│ ├── aligned_pipeline.py # Stage-1 对齐流水线
│ ├── aligned_loader.py # 读取 aligned_clean.parquet
│ ├── features.py # sin_hour / cos_hour 特征工程
│ └── splitter.py # Train/Val/Test 时间切分
│
├── data/
│ ├── raw/
│ │ ├── source/ # 原始数据(复制自主项目 data/md_data/)
│ │ │ ├── 总有功功率.xlsx
│ │ │ └── 26年辐照度数据/
│ │ └── aligned_clean.parquet # 5min 对齐底表(canonical)
│ ├── splits/ # 按时间边界导出的切分表
│ │ ├── train_5min.csv / .parquet
│ │ ├── val_5min.csv / .parquet
│ │ ├── test_5min.csv / .parquet
│ │ └── split_meta.json
│ └── processed/ # 轨道元数据
│ ├── hourly_sliding/manifest.json
│ └── ultra_short/manifest.json
│
└── reference/ # 主项目实验对照(只读存档)
├── split_manifest.json
└── hourly_sliding_manifest.json
| 文件 | 来源(主项目) | 说明 |
|---|---|---|
data/raw/source/总有功功率.xlsx |
data/md_data/总有功功率.xlsx |
仪表 281ZYHF00010 有功功率 |
data/raw/source/26年辐照度数据/ |
data/md_data/26年辐照度数据/ |
气象站水平辐照 GHI(10min 原始) |
| 项 | 值 |
|---|---|
| 路径 | data/raw/aligned_clean.parquet |
| 时间 | 2026-01-01 00:00 ~ 2026-04-12 23:55 |
| 分辨率 | 5 min |
| 行数 | 28,214 |
| 列 | timestamp, power, ghi, solar_elevation, station_id, is_daytime |
预处理步骤(src/pv_data/,对应主项目 pv_prediction/ Stage-1):
- 加载功率 xlsx、辐照 xlsx
- 对齐到 5 min 等间隔网格
- 短缺口线性插值(≤ 25 min)
- 计算太阳高度角(pvlib)
- 负值裁 0;长缺口行丢弃
- 输出 parquet
与报告及 pv_ml_models.config 完全一致:
| 集合 | 时间范围 | 5min 行数 |
|---|---|---|
| Train | 2026-01-01 ~ 2026-03-20 23:55 | 21,590 |
| Val | 2026-03-21 ~ 2026-03-31 23:55 | 3,168 |
| Test | 2026-04-01 ~ 2026-04-12 23:55 | 3,456 |
注意:实验代码(如
ai_LightGBM、主项目pv_ml_models)不在此包内落盘滑窗样本,而是每次加载aligned_clean.parquet后由TemporalSplitter+WindowBuilder动态切分。data/splits/下的 CSV 是按同一时间边界导出的原始时序切分,便于查阅与交付。
| 实验包 / 模块 | 使用的数据 | 说明 |
|---|---|---|
| 报告 10 模型(CNN/MLP/…/LightGBM) | aligned_clean.parquet + 代码切分 |
主项目 outputs/processed/aligned_clean.parquet 的副本 |
ai_LightGBM |
同上(包内独立副本) | 小时级 LightGBM 专用交付包 |
ai_processed_data(本包) |
原始 xlsx + 对齐底表 + 切分导出 | 数据与预处理的一站式归档 |
在 ai_processed_data/ 目录下执行。
cd ai_processed_data
python build_package.py
pip install -r requirements.txt
python scripts/verify_data.py期望输出末尾:[PASS]
python scripts/verify_data.pypython scripts/build_aligned.py # 若已存在则跳过
python scripts/build_aligned.py --force # 强制重建python scripts/export_splits.py输出至 data/splits/train_5min.csv 等。
| 本包模块 | 主项目来源 | 作用 |
|---|---|---|
raw_loader.py |
pv_prediction/data_loader.py |
读取原始 xlsx |
cleaner.py |
pv_prediction/cleaner.py |
5min 对齐与清洗 |
solar_geometry.py |
pv_prediction/solar_geometry.py |
太阳高度角 |
aligned_pipeline.py |
pv_prediction/pipeline.py Stage-1 |
生成 aligned_clean |
features.py |
pv_ml_models/data/features.py |
时间特征工程 |
splitter.py |
pv_ml_models/data/splitter.py |
时间切分 |
aligned_loader.py |
pv_ml_models/data/loader.py |
读取 parquet |
所有复制代码均已将路径改为包内 data/,不 import 主项目模块。
- 将整个
ai_processed_data/文件夹拷贝到目标机器 pip install -r requirements.txt- 若包内尚无数据:
python build_package.py(需在含主项目的机器上运行一次) - 验证:
python scripts/verify_data.py - 下游模型训练:读取
data/raw/aligned_clean.parquet,按src/pv_data/splitter.py时间边界切分
无需安装主项目 meidi 仓库的其他模块。
整理日期:2026-08-12 · 对应「不依赖未来气象版」实验数据归档