当前位置: 首页 > news >正文

基于 MiniRocket 的 NGAFID 维护前后航班二分类:复现与工程化实践

1.问题背景

航空运维场景里,常需要根据飞行记录判断:该架次更接近维护前还是维护后。公开论文A Large-Scale Annotated Multivariate Time Series Aviation Maintenance Dataset from the NGAFID提供了带标注的多元时序数据,适合作为二分类基准。

本笔记记录一套可落地的复现方案:用 MiniRocket 在 2days 基准子集上完成 5 折交叉验证,并把原先分散的 notebook 流程收敛为一键脚本、可断点续跑、结果可归档、指标可写报告。侧重工程可复现,而非另起炉灶改模型架构。

  1. 输入:单次飞行为一条多元时间序列(多通道传感器),长度不一。
  2. 输出:二分类标签before_after(实现中与数据表一致:0 = 维护后,1 = 维护前)。
  3. 难点
    • 维度高、序列长,端到端训练成本大;
    • 需严格对齐数据里的 fold 划分,保证可复现;
    • 研究代码若停留在 notebook,易出现参数难追溯、长跑中断后难接续、结果难对比。

三、解决思路

模型选择:原文分别使用了ConvMHSA Inception MiniRocket 这三个模型进行训练,根据实际情况,本人选择 MiniRocket实现复现。

  1. 模型:MiniRocket(快速卷积风格特征 + 浅层分类头),通过tsai与 FastAI 训练流程对接。
  2. 数据:使用本地 2days 子集(flight_data.pklflight_header.csvstats.csv),与表头中的foldbefore_after对齐。
  3. 预处理
    • 固定最大长度max_length,取每条序列末尾一段,不足则填充;
    • stats.csv的 min/max 做归一化,并对极差过小的通道做防除零处理,避免数值不稳。
  4. 训练与评估
    • 5 折交叉验证:每折在「非本折」上训练、本折上验证;
    • 默认sample_ratio=0.5:每折只用训练/验证集的各一半样本,便于个人工作站稳定复跑(与文档中的基准设定一致);
    • 验证集上除准确率外,额外报告 Balanced Accuracy、F1、ROC-AUC,便于写论文/实验报告。
  5. 工程化
    • 单入口脚本scripts/run_cv.py
    • --start-fold/--num-folds支持断点续跑;
    • 所有折的指标写入fold_metrics.json,最终汇总写入summary.json,训练曲线导出为minirocket_fold*_history.csv

四、环境与数据准备

依赖安装(在仓库根目录 / 项目根目录):

pip install -r requirements.txt

数据目录(两种常见结构任选其一,与代码约定一致):

  • 扁平:<数据根>/2days/flight_data.pklflight_header.csvstats.csv
  • 嵌套(你从归档里常能见到的多一层):<数据根>/2days/2days/下同样三个文件

--data-dir的含义:指向上述<数据根>——即「包含名为2days子文件夹的那一层」。
例如你把数据放进仓库里的data/

  • 文件在data/2days/*.pkldata/2days/2days/*.pkl时,运行时写--data-dir data即可。
    若数据仍在其他盘符,把data换成你的本机路径,例如--data-dir"D:\datasets\ngafid_subset"(该路径下仍需有子目录2days/,其内为上述两种结构之一)。

五、一键运行与快速验证

不需要设置PYTHONPATH;请在项目根目录执行下面的命令(Windows / Linux / macOS 相同;Windows 可用py -3代替python)。

完整基准(5 折,50 epoch,子采样 0.5,与 README 报告一致):

python scripts/run_cv.py --data-dir data --dataset-name 2days --sample-ratio 0.5 --epochs 50 --num-folds 5

默认结果目录为results/benchmark_2days/;若要显式写出,可与下面等价:

python scripts/run_cv.py --data-dir data --dataset-name 2days --sample-ratio 0.5 --epochs 50 --num-folds 5 --output-dir results/benchmark_2days

环境冒烟(少折、少 epoch、小子采样):

python scripts/run_cv.py --data-dir data --dataset-name 2days --sample-ratio 0.1 --epochs 3 --num-folds 1 --output-dir results/smoke

中断后从某一折续跑(示例:从第 4 折开始只跑 1 折,其余参数与完整基准一致):

python scripts/run_cv.py --data-dir data --dataset-name 2days --sample-ratio 0.5 --epochs 50 --start-fold 4 --num-folds 1 --output-dir results/benchmark_2days

训练曲线与 5 折指标图(在对应实验跑完后,默认读取results/benchmark_2days/):

python scripts/generate_figures.py

图会保存在results/benchmark_2days/figures/

产物位置(以results/benchmark_2days/为例):

路径说明

summary.json

总体汇总(各指标均值、标准差、每折列表)

fold_metrics.json

逐折明细

minirocket_fold*_history.csv

各折训练过程,可用于画曲线

models/

MiniRocket 等与训练相关的权重/中间产物

figures/*.png

运行generate_figures.py后生成的图

Windows 可选:仓库根目录的reproduce.bat会先执行pip install -r requirements.txt再跑run_cv.py,可在末尾追加与上文相同的参数。

六、关键实现要点(代码层面)

  1. 样本构造:按flight_headerMaster Indexflight_data对齐;每条样本为[max_length, channels],标签为before_after,并保留fold用于划分。
  2. 归一化:x减去mins再除以maxs - mins;若某通道max - min过小,则用安全分母,避免除零。
  3. MiniRocket 流程:在训练子集上fit特征变换 → 拼接 train/valid 特征 →MiniRocketHead+fit_one_cycle→ 用get_preds在验证集上算 sklearn 指标,与训练日志互补。
  4. 指标落盘:每折结束追加写入fold_metrics.json;5 折结束后写summary.json(含均值与标准差)。

七、实验结果(本次本地复现)

设定:数据集2dayssample_ratio=0.5epochs=50seed=42,5 折交叉验证。指标在各折验证集上由预测结果计算。

7.1 逐折结果

FoldAccuracyBalanced AccuracyF1ROC-AUC

0

0.5773

0.5774

0.5739

0.6124

1

0.5997

0.6008

0.5814

0.6309

2

0.5892

0.5872

0.5591

0.6289

3

0.5699

0.5685

0.5436

0.6062

4

0.6110

0.6100

0.5906

0.6444

7.2 五折汇总

指标均值标准差

Accuracy

0.5894

0.0148

Balanced Accuracy

0.5888

0.0151

F1

0.5697

0.0166

ROC-AUC

0.6246

0.0137

简要解读:准确率略高于随机猜测(0.5),ROC-AUC 约 0.62,说明排序意义上仍有一定区分度;该子任务本身难度较高,与数据集噪声、标签定义及仅使用维护前后二分类设定有关。更细的误差分析可结合混淆矩阵与按机型/故障类别分层(若标签列可用)另文展开。

八、结果可视化建议

  1. 训练曲线:用 Excel 或 Python 读取minirocket_fold0_history.csv,绘制 train_loss / valid_loss / accuracy 随 epoch 变化。
  2. 柱状图:5 折 Accuracy 或 ROC-AUC 柱状图,误差线用表中标准差或各折单值展示离散程度。

九、小结

项目内容

任务

NGAFID 场景下维护前/后航班二分类

方法

MiniRocket + 浅层头,5 折 CV

数据

2days 基准子集,sample_ratio=0.5

工程

一键脚本、续跑、JSON/CSV 归档、多指标评估

本次结果

Acc 0.5894±0.0148,ROC-AUC 0.6246±0.0137

完整代码与配置文件见:0221lele/ngafid-minirocket

http://www.jsqmd.com/news/584981/

相关文章:

  • ERP到底是一个怎么样的存在?为何有那么多的方面?如何学习?
  • CLIP ViT-H-14图像特征服务实操手册:GPU显存监控与批处理调优技巧
  • 口碑好的太原传媒艺考机构推荐
  • FFX风格AI绘画实战:用SPIRAN ART SUMMONER生成史诗级游戏场景
  • 手把手教你用lora-scripts训练LoRA:从数据准备到模型导出全流程详解
  • 视频格式总是不兼容?这6款工具让你一键搞定
  • 长提示词优化:5 大核心技巧,让大模型复杂任务输出稳定可控
  • lychee-rerank-mm多场景落地:高校实验室显微图像库按实验条件语义排序
  • OpenCV课程学习报告
  • 5年光伏设计师真心话:主流设计软件实测,这款一站式工具最适合分布式
  • OpenClaw-Observability:基于 DuckDB 构建 OpenClaw 的全链路可观测体系
  • Gemma-3-270m文本摘要实战:从原理到应用开发
  • 82 年架构师自研「马年万能架构底座」开源!67 个模块全量 3D 元宇宙引擎,源码直接给!
  • PyTorch自监督学习超快
  • 2026 程序员提速真相:与其死磕底层代码,不如把这几款 AI 工具玩透
  • Intv_ai_mk11集成Node.js环境配置:快速构建实时聊天应用
  • 2026年靠谱的西安网站推广/西安网站优化热门推荐榜 - 行业平台推荐
  • Qwen3-14B在Keil5 MDK开发中的奇思妙用:注释生成与调试日志分析
  • Z-Image-Turbo-辉夜巫女应用指南:打造个人动漫角色生成器
  • 2026年质量好的热风烘干机/不锈钢烘干机精选厂家推荐 - 行业平台推荐
  • 数据库分类一次讲清|转行学DB第2天
  • 国产包装件压力试验机厂家
  • NanoHttpd POST 请求中文乱码问题解决方案
  • 2026年评价高的西安网站开发/西安网站优化/西安网站搭建/西安网站制作真实评价榜 - 行业平台推荐
  • RMBG-2.0开源模型教程:微调BiRefNet适配特定行业(如医疗影像标记)
  • 告别复杂代码!AutoGen Studio低代码界面,让AI智能体开发像搭积木一样简单
  • 2026年比较好的E0 级进口地板/北京易打理进口地板/北京耐高温进口地板/中国进口地板主流厂家对比评测 - 行业平台推荐
  • Qwen3-14B私有部署镜像实战:基于AI Agent的自动化工作流设计
  • 2026年热门的网带式抛丸机/钢管抛丸机厂家哪家好 - 行业平台推荐
  • 拒绝“空中楼阁”!从战略到执行的四级流程梳理法(附架构图谱)