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

confidence.py

目录
  • 1. 整体概览
  • 2. 配置与依赖说明
  • 3. 核心数据结构解析
    • 3.1 confidence_code_table
    • 3.2 confidence_table_repeat_list(二次检测 / 局部框)
    • 3.3 confidence_table_default(本地默认置信度)
  • 4. 函数逐个解析
    • 4.1 get_confidence_table()
      • 4.1.1 关键逻辑
      • 4.1.2 返回值
    • 4.2 get_confidence_inner()
      • 4.2.1 规则
    • 4.3 get_confidence_fault()
      • 4.3.1 拼接故障名
      • 4.3.2 局部框优先级处理
      • 4.3.3 统一名称(局部 → 大框)
      • 4.3.4 判断是否成功获取接口表
      • 4.3.5 旧版接口(dict,不带车号)
      • 4.3.6 新版接口(list,带车号)
      • 4.3.7 异常兜底
  • 5. 全局变量初始化
  • 6. 最终总结一句话版

1. 整体概览

这份代码的核心目标只有一个

为“故障类型”计算一个最终置信度(confidence)

这个置信度来源有 三层(优先级从高到低):

  1. 远程接口返回的置信度表(可配置、可动态调整)
  2. 本地默认置信度表 confidence_table_default
  3. 系统兜底默认值 settings.CONFIDENCE_DEFAULT

同时支持:

  • 旧版接口(不区分车号)
  • 新版接口(区分车号 train_code)
  • “二次检测 / 局部框” 的特殊处理

2. 配置与依赖说明

import requests
from config import settings
from config.logger_config import process_logger
  • requests:用于从接口拉取置信度配置
  • settings:存放接口地址、默认置信度等配置
  • process_logger:统一日志输出

3. 核心数据结构解析

3.1 confidence_code_table

confidence_code_table = {"受流器_集电靴丢失或折断": "0001",...
}

作用:把“故障中文描述”映射为“数据库 / 接口使用的编码”

例如:

受流器_集电靴丢失或折断 → 0001

用途

  • 当接口返回的是 {code: confidence} 格式时
  • 需要先通过这个表把中文故障名转换成 code,再去接口结果里查

3.2 confidence_table_repeat_list(二次检测 / 局部框)

confidence_table_repeat_list = ["空气弹簧_空气弹簧破损_局部",...
]

含义

  • 这些是“局部框 / 二次检测框”
  • 一旦检测到这些类型:
    • 直接返回置信度 1.0
    • 并且屏蔽对应的大框

代码里的逻辑是:

if fault+"_局部" in confidence_table_repeat_list:return 1.0

这是一个强规则覆盖,优先级非常高。


3.3 confidence_table_default(本地默认置信度)

confidence_table_default = {"受流器_集电靴丢失或折断": 0.5,...
}

作用:当接口拉取失败或未配置某个故障,就使用这里的默认值

这是整个系统的安全兜底核心表


4. 函数逐个解析


4.1 get_confidence_table()

def get_confidence_table(get_traincode=False):

功能:从远程接口获取置信度配置表

4.1.1 关键逻辑

response = requests.get(settings.API_GET_CONFIDENCE_TABLE_NEW if get_traincode else settings.API_GET_CONFIDENCE_TABLE,headers=headers, verify=False
)
  • get_traincode=False
    • 使用 旧接口
    • 返回 dict(不区分车号)
  • get_traincode=True
    • 使用 新接口
    • 返回 list(支持车号 trainList)

4.1.2 返回值

  • 成功 → confidence_table
  • 失败 → None(后续逻辑会自动走默认置信度)

4.2 get_confidence_inner()

def get_confidence_inner(fault):

功能:从本地默认表中取置信度

4.2.1 规则

  • 如果 faultconfidence_table_default
    • 返回对应值
  • 否则
    • 打 warning 日志
    • 返回 settings.CONFIDENCE_DEFAULT

这是所有异常情况的兜底函数


4.3 get_confidence_fault()

def get_confidence_fault(area, name, train_code=None):

这是整个文件最重要的函数

4.3.1 拼接故障名

fault = str(area) + "_" + str(name)

例如:

area = "空气弹簧"
name = "空气弹簧破损"
→ fault = "空气弹簧_空气弹簧破损"

4.3.2 局部框优先级处理

if fault+"_局部" in confidence_table_repeat_list:return 1.0
  • 只要是二次检测的局部框
  • 直接返回 1.0
  • 不再参与后续任何逻辑

4.3.3 统一名称(局部 → 大框)

fault = fault.replace("_局部", "").replace("-局部", "")

目的

  • 局部框的置信度
  • 实际使用的是“大框”的配置

4.3.4 判断是否成功获取接口表

if confidence_table is None:return get_confidence_inner(fault)
  • 接口失败 → 只用本地默认

4.3.5 旧版接口(dict,不带车号)

if isinstance(confidence_table, dict):

流程:

  1. 通过 confidence_code_table 找到 code
  2. 用 code 去接口表中查
  3. 返回:max(接口置信度, 本地默认置信度)

永远不低于本地默认值


4.3.6 新版接口(list,带车号)

elif isinstance(confidence_table, list):

接口返回结构类似:

{"sceneName": "空气弹簧_空气弹簧破损","confidenceLevel": 0.6,"trainList": ["CR400AF", "CRH380A"]
}

规则:

  • sceneName 匹配当前 fault

  • 如果:

    • train_codetrainList
    • 直接返回 1.0
  • 否则:

    max(接口置信度, 本地默认置信度)
    

4.3.7 异常兜底

任何异常:

return settings.CONFIDENCE_DEFAULT

5. 全局变量初始化

confidence_table = get_confidence_table(get_traincode=False)
  • 程序启动时:立即拉取一次置信度配置
  • 后续所有 get_confidence_fault 都用这个全局表

6. 最终总结一句话版

这段代码实现了一个多级置信度计算系统
支持 接口动态配置 + 本地默认兜底 + 二次检测强制覆盖 + 车号定制规则
并通过 get_confidence_fault 统一对外提供最终置信度。

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

相关文章:

  • 分类精度上不去?R语言随机森林5个常被忽略的性能陷阱,90%的人都踩过
  • 什么是IP专线
  • 2026年比较好的高定衣柜灯/护墙灯衣柜灯TOP实力厂家推荐榜 - 品牌宣传支持者
  • ChromeDriver下载地址汇总?先了解它在自动化测试中的作用
  • 你真的会用R做系统发育信号检测吗:trait数据建模常见误区与纠正
  • Mathtype公式编辑太复杂?其实你可以这样结合AI语音讲解
  • 新手教程:数字电路中触发器的基础应用详解
  • 2025年商用净水服务公司年度排名:上海浩潭环保科技实力如何? - myqiye
  • 2025丽江信誉好的装修专业公司TOP5推荐:本地业主信赖的装修品牌企业甄选指南 - 工业推荐榜
  • 微PE官网工具箱强大,但别忘了还有AI语音这类生产力工具
  • 【进化生物学研究利器】:R语言构建贝叶斯系统发育树的5大关键步骤
  • 什么是IS-IS
  • 新闻播报自动化尝试:IndexTTS 2.0生成标准普通话语音
  • springboot+ssm医院住院信息管理系统论文vue
  • 从文本到自然语音:IndexTTS 2.0结合Qwen-3的情感驱动机制剖析
  • 【读书笔记】《第二大脑》
  • 系统发育比较方法全解析,用R实现PGLS与性状演化建模
  • AI语音合成进入零样本时代:IndexTTS 2.0引领创新潮流
  • 【读书笔记】《苦乐参半》
  • 基于Java的妇联网上服务智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 嵌入式学习之路-->stm32篇-->(5)系统定时器
  • 基于Java的套餐智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 零膨胀模型不会做?手把手教你用R语言搞定复杂计数数据,科研效率提升80%
  • React应用整合AI语音:IndexTTS 2.0助力用户体验升级
  • 基于Java的奢侈品销售智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • L298N电机驱动原理深度剖析:双H桥架构全面讲解
  • 完整指南:UDS 19服务支持的DTC状态掩码配置
  • 基于Java的奶粉仓储智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • XDMA在高负载下稳定传输的调参技巧
  • 结构对称性对氧化铋能带的影响(开题报告)