技术 · ZH

基于AI编程的传感器故障检测和预测

使用Isolation Forest,XGBoost等python库,分析并预测单一传感器的状态。

智能传感器故障检测与预测性维护项目——功能介绍

1. 项目概述

本项目面向传感器设备的运行监测与预测性维护场景,构建了一套从模拟数据生成、异常/故障识别、未来趋势预测,到维修需求判定和结果可视化的机器学习原型。项目以电源/电压、电流、信号强度、响应频率、时间戳等运行指标为输入,帮助使用者发现异常设备、预测短期运行状态,并对设备是否需要维护给出辅助判断。

项目包含功能拆分版本、改进版本及整合版本:其中 Function 1 实现故障检测和未来状态预测,Function 2 实现维修判断;Improved Version of AI 针对简化的功率和信号强度数据提供可交互的改进流程;Conbination Function 则将数据生成、异常检测和维护预测串联为一体。

2. 核心功能

2.1 模拟传感器数据生成

项目可自动生成多种结构的 CSV 模拟数据,解决原型开发中真实传感器数据不足的问题。

  • 基础功率与信号数据:生成 sensor_IDpowersignal_strength,并可附加分钟级 timestamp
  • 训练集生成:生成带 malfunction 标签的数据,用于训练或评估故障、维修判定模型。
  • 测试集与标准答案生成:测试数据会去除 malfunction 列,而答案文件保留该列,便于进行盲测和预测准确率比较。
  • 人工干预数据生成:按指定文件名输出带故障标签的样本,供人工维修判定流程使用。
  • 多指标运行数据生成:生成时间戳、设备编号、电压、电流、信号强度和响应频率;其中约 10% 的记录被模拟为电压突降、电流异常、弱信号或频率异常等故障情形。
  • 预测专用时间序列生成:按小时连续生成带时间戳的功率与信号强度序列,为趋势预测提供输入。

故障标签主要依据低功率/低电压或信号强度过低等规则生成,因此数据既包含正常工作区间,也包含可识别的异常区间。

2.2 无监督故障与异常检测

项目采用 IsolationForest(孤立森林)进行无监督异常检测,不依赖每条输入数据都人工标注。主要流程如下:

  1. 读取 CSV 数据并检查必需字段;
  2. 对数值特征进行标准化或 Min-Max 归一化;
  3. 使用电压、电流、信号强度、响应频率等特征训练孤立森林;
  4. 将模型输出转换为正常/异常标签,并导出异常记录;
  5. 对已有标准答案的测试集计算预测准确率。

系统会在多个随机 contamination(预期异常比例)候选值上进行试验,记录每次试验的异常比例及其与预设故障比例的差异,选择对应的检测参数。结果输出包括:

  • anomalies.csv:筛选出的异常设备/异常记录;
  • contamination_analysis.csv:不同污染比例参数的试验结果;
  • results.csv:基于功率和信号强度测试集的故障预测结果。

改进版故障检测还会利用训练集、测试集及测试答案文件,输出实际故障设备编号、模型识别出的异常设备编号和准确率,便于直观核验模型效果。

2.3 交互式异常结果查看

Interactive-Improved-AI for Malfunction Detection.py 提供 Plotly 交互式散点图:

  • 横轴为功率,纵轴为信号强度;
  • 以颜色区分模型预测的正常与故障状态;
  • 鼠标悬停可查看传感器编号和状态;
  • 分别展示训练数据和测试数据的预测分布。

这使使用者能从数据空间中快速观察异常点是否偏离正常运行区域。

2.4 未来运行状态预测

项目使用 Facebook/Meta Prophet 时间序列模型对传感器趋势进行短期预测。

  • 可预测功率信号强度
  • 将时间戳转换为 Prophet 所需的 ds 字段,将目标指标作为 y 字段;
  • 对缺失值使用中位数填补;
  • 使用日季节性和周季节性建模;
  • 默认预测未来 24 小时
  • 输出预测值 yhat 及上下置信区间 yhat_loweryhat_upperforecast_data.csv

针对多指标版本,程序会在终端提示用户选择预测“功率”或“信号强度”。基础功能版本还支持以电压历史数据为输入,完成未来 24 小时电压预测。

2.5 预测结果多样式可视化

趋势预测模块会将预测结果保存为多种图表,辅助理解未来状态及不确定性:

  • 折线预测图:显示预测均值与置信区间;
  • 面积图:突出预测范围;
  • 按小时箱线图:观察不同小时预测值的分布;
  • 柱状图:以误差线展示预测值及其区间;
  • 电压趋势图:展示未来电压预测及置信区间。

2.6 是否需要维修的智能判定

项目使用 XGBoost 分类器实现维修需求判断,输出 0(正常/无需维护)或 1(需要维护)。实现了两类场景:

  • 四特征维修判定:以电压、电流、信号强度、响应频率作为特征,并对模拟数据进行训练、测试划分和分类评估;
  • 人工干预维修判定:读取含 powersignal_strengthmalfunction 的训练和测试 CSV,将故障状态作为维修需求标签,对新设备数据进行预测。

整合版还会将孤立森林检测出的异常状态作为监督学习标签,并结合小时特征训练 XGBoost 模型,从而把“异常发现”进一步转换为“维护建议”。预测结果保存到 prediction_result.csv

2.7 模型评估与可解释性

项目提供多种模型评估输出:

  • 准确率(Accuracy);
  • 分类报告(精确率、召回率、F1 分数);
  • 混淆矩阵;
  • ROC 曲线与 ROC-AUC(整合版);
  • 特征重要性图,用于识别哪些运行指标对维修判断影响更大。

这些结果让使用者不仅能看到“是否预测正确”,也能评估分类器的区分能力和特征贡献。

2.8 维护状态与数据分布可视化

维修判定模块可输出以下分析图:

  • 训练样本各特征按维护状态划分的密度分布图;
  • 特征重要性条形图;
  • 混淆矩阵热力图;
  • 预测类别数量图;
  • 需要维护与正常设备的比例饼图;
  • 功率—信号强度分类散点图;
  • 需要维护设备的功率、信号强度箱线图。

这些图表将模型预测转换为可直接查看的运行与维护状态概览。

2.9 十六进制温度转换工具

独立脚本 Transformation of temperature.py 提供传感器编码解析工具:将 10 位十六进制字符串视为 40 位数值,并线性映射到默认的 20°C 至 30°C 温度范围,输出保留两位小数的温度值。该工具可用于将原始设备编码转换为更容易理解的温度读数。

3. 项目流程

模拟/读取传感器数据

        ├── 数据清洗、时间处理、标准化/归一化

        ├── 孤立森林异常检测 ──→ 异常设备清单与参数分析

        ├── Prophet 时间序列预测 ──→ 未来 24 小时趋势与置信区间

        └── XGBoost 维修分类 ──→ 是否需要维护、模型指标与可视化

4. Function 1:故障检测与未来状态预测

拟定题目:基于孤立森林与 Prophet 的传感器故障检测及短期状态预测系统

Function 1 面向“设备当前是否异常、未来运行趋势如何”两个问题,形成从监测数据到风险预警的分析流程。模块首先生成或读取包含时间戳、电压、电流、信号强度和响应频率的传感器数据,并对数值特征完成缺失值处理、时间处理及归一化。随后利用孤立森林识别偏离正常运行范围的记录,通过多次尝试 contamination 参数,输出异常比例、参数差异分析和异常记录清单;图形版进一步生成污染率分析曲线,方便比较参数选择结果。

在趋势预测部分,Function 1 将历史时间戳和电压数据输入 Prophet 模型,预测未来 24 小时的电压变化,并输出预测均值和上下置信区间。预测结果既保存为 CSV,也可绘制电压趋势图。因此,该模块能够同时回答“哪些设备/时刻已经存在故障迹象”和“设备在接下来一段时间可能呈现什么状态”,适合作为预警与预防性检修的前置分析模块。

主要输出: anomalies.csvcontamination_analysis.csvcontamination_analysis_plot.pngforecast_data.csvvoltage_forecast.png

5. Function 2:设备维修需求智能判定

拟定题目:基于 XGBoost 的多传感器特征设备维修需求判定模型

Function 2 面向“设备是否需要维修”的决策问题,将传感器运行指标转换为二分类维护建议。模块使用电压、电流、信号强度和响应频率作为输入特征,以 needs_maintenance 作为目标标签;程序会将数据划分为训练集和测试集,训练 XGBoost 分类模型,并输出每台待测设备的正常或需要维护预测结果。

除基础判定外,图形版还提供完整的模型分析能力:输出准确率和分类报告,生成特征重要性图和混淆矩阵;展示不同维护状态下的特征分布;并以预测结果计数图呈现待测设备的维护需求。由此,使用者既可以获得明确的维修建议,也可以了解模型主要依据哪些运行指标作出判断,以及模型的预测可靠性。

主要输出: 维护预测标签、feature_importance.pngconfusion_matrix.pngdata_distribution.pngprediction_results.png

6. 主要输入与输出

类型代表文件作用
原始/训练数据train_data.csvsensor_data.csvintervention_data.csv保存传感器特征及部分故障标签
测试数据test_data.csv用于模型预测,不含或弱化故障标签
测试答案test_data_answer.csv用于核验故障检测结果
异常检测结果anomalies.csvresults.csv输出被识别为异常或故障的记录
参数分析结果contamination_analysis.csv保存不同异常比例参数的试验数据
预测结果forecast_data.csvprediction_result.csv分别保存时间序列预测和维修预测结果
可视化结果feature_importance.pngconfusion_matrix.pngroc_curve.png展示模型效果、特征贡献和运行趋势

7. 技术栈

  • 数据处理:Pandas、NumPy
  • 异常检测与预处理:scikit-learn(IsolationForestStandardScalerMinMaxScaler
  • 维修分类:XGBoost
  • 时间序列预测:Prophet
  • 静态可视化:Matplotlib、Seaborn
  • 交互式可视化:Plotly

8. 项目价值

该项目展示了预测性维护的完整原型闭环:先用模拟数据快速验证方案,再通过异常检测发现未知故障,利用时间序列模型预判短期风险,最后通过分类模型提供维护建议和可解释的评估图表。它适合作为物联网设备监控、通信/传感器状态分析及机器学习竞赛类项目的基础实现,并可在接入真实设备数据后继续扩展为实时告警和运维决策系统。