fix: 推理端 DualStream_MNF 直通 Pipeline — 不再走旧重采样+WQI路径
- 训练时 Pipeline 保存了完整 MNFTransformer(mean_/W_mnf_) 和 PhysicalFeatureExtractor(wavelengths/_feat_cols_) - 推理端新增快速通道:检测到 DualStream_MNF 时,直接调用 Pipeline 的 imputer.transform + preproc.transform,复用训练时 fit 好的变换矩阵,无需手动光谱重采样和 WQI 补齐 - 旧模型(非 DualStream_MNF)保持原有逻辑不变
This commit is contained in:
@ -475,6 +475,21 @@ class WaterQualityInference:
|
||||
|
||||
model = self.loaded_model_data['model']
|
||||
metadata = self.loaded_model_data.get('metadata', {})
|
||||
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# ★ DualStream_MNF 快速通道:Pipeline 已内置 MNF + 物理指数
|
||||
# 无需手动重采样或 WQI 补齐,直接走 Pipeline 的 preproc 步骤
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
if actual_preprocess_method == "DualStream_MNF" and isinstance(model, Pipeline):
|
||||
print("[DualStream_MNF] 推理直通 Pipeline(MNF+物理指数已内置)")
|
||||
# Pipeline 的 imputer + preproc 步骤会处理一切
|
||||
spectra_processed = model.named_steps['imputer'].transform(spectra.values)
|
||||
spectra_processed = model.named_steps['preproc'].transform(spectra_processed)
|
||||
spectra_processed = np.nan_to_num(spectra_processed, nan=0.0, posinf=0.0, neginf=0.0)
|
||||
print(f"[DualStream_MNF] 预处理完成: {spectra_processed.shape}")
|
||||
print(f"[特征对齐] 最终输入维度: {spectra_processed.shape}")
|
||||
return spectra_processed
|
||||
|
||||
train_wavelengths = metadata.get('train_wavelengths', None)
|
||||
# 旧模型无 train_wavelengths → 不做波长匹配,走下方分支 B 的 linspace 路径
|
||||
train_columns = metadata.get('train_columns', None)
|
||||
|
||||
Reference in New Issue
Block a user