代码运行要求:tensorflow版本>=2.4.0,Python>=3.6.0即可,无需修改数据路径。
1.数据集介绍:
采集数据的设备照片
变压器在电力系统中扮演着非常重要的角色。尽管它们是电网中最可靠的部件,但由于内部或外部的许多因素,它们也容易发生故障。可能有许多启动器会导致变压器故障,但可能导致灾难性故障的启动器如下:机械故障,电介质故障等
这些数据是从2019年6月25日到2020年4月14日通过物联网设备收集的,每15分钟更新一次。
第一个文件打开 (10列特征)
第二个文件打开 (6列特征,最后一列是标签,正常状态为0,故障为1)
参数说明:
电流电压:
VL1-相线1
VL2-相线2
VL3-相线3
IL1-电流线路1
IL2-电流线路2
IL3-电流线路3
VL12-电压线1 2
VL23-电压线2 3
VL31-电压线3 1
INUT-中性点电流
概述:
OTI-机油温度指示器
WTI-绕组温度指示器
ATI-环境温度指示器
OLI-油位指示器
OTI_A-油温指示器报警
OTI_T-油温指示器跳闸
MOG_A-标签:正常未0,故障为1.
2.整个代码流程:
-
导入和配置库:导入了所需的数据处理、数据可视化和机器学习相关的库,并进行了matplotlib和seaborn的样式和参数配置。
-
数据预处理:读取了两个CSV文件(Overview.csv和CurrentVoltage.csv),将它们转换为DataFrame,并对其中的日期时间列进行了格式转换。
-
数据合并:将两个DataFrame(tf和cv)根据时间戳列(DeviceTimeStamp)合并为一个新的DataFrame(transformer)。
-
数据可视化:使用matplotlib和seaborn库绘制了多个图表,包括散点图、折线图、计数柱状图和饼图,来可视化不同传感器数据的变化趋势、分布情况等。
-
机器学习模型训练和评估:使用scikit-learn库中的机器学习模型(Logistic Regression、SVM、K-Nearest Neighbors)对数据进行了训练,并进行了模型准确率的评估。具体步骤包括:
- 数据预处理:特征缩放,将特征值缩放到0到1的范围内。
- 训练集和测试集划分:将数据集划分为训练集和测试集。
- 模型训练:分别使用Logistic Regression、SVM和K-Nearest Neighbors模型对训练集进行训练。
- 预测和评估:使用训练好的模型对测试集进行预测,并计算模型的训练准确率和测试准确率。
- 分类报告和混淆矩阵:打印出分类报告,包括精确率、召回率和F1分数等指标,同时绘制混淆矩阵来展示模型的分类结果。
3.原始数据特征展示:
3.1.使用sns.relplot函数绘制tf DataFrame中的OTI、ATI和WTI列的关系图,根据MOG_A列进行着色。
3.2. 绘制油温指示器图
3.3.绘制绕组温度指示器警报图
3.4.绘制油温指示器警报 OTIT 图
3.5.绘制温度指示器行程图
3.6 绘制油位指示器图
3.7.绘制磁性油位指示器图
3.8分别绘制OTI_T列和MOG_A列的计数柱状图和饼图
4.三种不同模型下的诊断准确率(log:逻辑回归,svc:支持向量机,knn方法)
训练集和测试集的特征输入。
训练集和测试集的标签输入。
三种方法下测试集的混淆矩阵
数据和代码放在了压缩包里,下载后无需修改数据路径,解压缩后直接运行
import numpy as np # 导入NumPy库用于数值计算
import pandas as pd # 导入Pandas库用于数据处理和CSV文件读写
import os # 导入os库用于操作系统相关功能
for dirname, _, filenames in os.walk('/data'):
for filename in filenames:
print(os.path.join(dirname, filename))
import pandas as pd # 导入Pandas库
import numpy as np # 导入NumPy库
import seaborn as sns # 导入Seaborn库用于数据可视化
import matplotlib.pyplot as plt # 导入Matplotlib库用于绘图
import datetime # 导入datetime库用于日期时间处理
import warnings # 导入warnings库用于警告管理
from matplotlib import pyplot as plt
#压缩包:https://mbd.pub/o/bread/ZJybm5dq