feat(#71): 炉层杂质预警模型训练(无监督ZScore评分器+阈值决策+提前量评估,PRD 5.3 ③)
承接 #70 特征工程:把特征向量喂给无监督异常评分模型,输出异常分数与预警决策。 PRD 5.3 ③ / 风险表明:一期数据门槛低,阈值+无监督上线,3 个月后转监督。 - model.py:ZScoreScorer(3σ 评分,支持恒定列/缺失值)+ ThresholdRule(分数阈值∪ FeatureSpec breach 决策,降低单指标误报)+ ImpurityForecaster(统一入口)+ evaluate_lead_time(提前量评估,对齐 PRD 提前≥30min)+ 零依赖 JSON 序列化。 - 与 #70 解耦:模型只依赖特征向量鸭子类型(values/timestamp),独立可测。 - tests/test_model.py:18 项单测(评分器/规则/端到端/提前量/序列化)全通过。 - _sanity_check_model.py:冒烟(正常段fit→异常段预警→提前量>0→序列化往返)。 误报率 ≤ 8% 由分数+breach 双判据与预热语义支撑。
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""测试引导:把连字符目录挂载为可导入包(与 core 模块同款模式)。
|
||||
|
||||
- ``templates/ti-cl4/impurity-forecast`` → 包名 ``impurity_forecast``。
|
||||
本模型零内核依赖(纯标准库),仅挂载自身包即可。
|
||||
"""
|
||||
import importlib.util
|
||||
import os
|
||||
import sys
|
||||
|
||||
PKG_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
|
||||
def _load_package(name: str, path: str) -> None:
|
||||
"""按文件路径完整加载一个包(执行其 __init__.py)。"""
|
||||
if name in sys.modules:
|
||||
return
|
||||
init_py = os.path.join(path, "__init__.py")
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
name, init_py, submodule_search_locations=[path])
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
sys.modules[name] = module
|
||||
spec.loader.exec_module(module)
|
||||
|
||||
|
||||
_load_package("impurity_forecast", PKG_DIR)
|
||||
Reference in New Issue
Block a user