fix: DualStream Pipeline 三项修复 — StandardScaler + 部署导出 + 推理拆弹

任务1: Pipeline 插入 StandardScaler
  imputer → FeatureUnion → cleaner → scaler(StandardScaler) → SVR
  MNF(≈1e4量级)与物理指数(≈1e0量级)统一尺度后入SVR

任务2: .npz 导出 scaler_mean / scaler_scale
  C++端可复现 (X - mean) / scale

任务3: 推理端 train_wavelengths 缺失时直接抛异常
  不再静默裸退308列导致 SimpleImputer 维度不匹配崩溃
This commit is contained in:
duxin
2026-07-29 15:41:25 +08:00
parent 7ecdf6a2a0
commit 3edb73b652
2 changed files with 12 additions and 3 deletions

View File

@ -446,8 +446,11 @@ class WaterQualityInference:
"""
train_wl = metadata.get('train_wavelengths', None)
if train_wl is None or len(train_wl) == 0:
print("[DualStream_MNF] ⚠ 模型无 train_wavelengths,fallback 原样输入")
return spectra.values
raise ValueError(
"推理失败:metadata 中缺失 train_wavelengths。"
"DualStream_MNF 必须对齐训练波段以完成光谱重采样。"
"请使用包含 train_wavelengths 元数据的模型文件。"
)
# 提取纯光谱列
spec_cols = []