基于神经网络的变压器故障分类诊断

引言

本文基于BP神经网络对变压器的故障进行分类和诊断。变压器根据五种特征气体对应四种故障类型(高能放电、低能放电、过热和正常)。对已知类型的训练样本进行计算,构造BP神经网络,而后对测试样本进行分类。该方法的正确率达88%。
变压器是电力系统中分布普遍、造价昂贵、结构复杂的电气设备,担负着电能传送和电压转换的重任,其正常运行直接影响了整个电力系统的安全性和稳定性。对油浸式变压器来讲,随着运行的持续,油与中间的固体有机材料会逐渐老化和分解,因为不一样的故障类型,产生的气体含量和比例也不一样,因此可利用对油中气体的分析,来判断故障类型。本文已知50个训练数据和25个测试样本。并经过对训练数据进行BP神经网络的模型创建,来对测试样本进行故障诊断。python

数据

部分数据

思路介绍

这是咱们模式识别的做业,书上是用BP神经网络作的,而后我就在Python里面找到了MLPRegressor这个库,这个库的意思是多层感知器,我用的是回归的,由于书上思路是将四类进行编码,好比说第一类就是1000,第二类就是0100,第三类是0010,第四类是0001,而后呢五种气体,因此输入值是5,我这里采用了一层神经网络,多了反而效果很差。输出就是四个值的连续的数,找到里面的最大值,他就属于哪一类。web

代码

import pandas as pd
from sklearn.neural_network import MLPRegressor
data = pd.read_excel('样本数据.xlsx')
label = pd.read_excel('类别.xlsx')
data_tr = data.iloc[0:50,1:6]
label_tr = label.iloc[0:50,:]
data_te = data.iloc[50:,1:6]
model = MLPRegressor(activation='logistic',solver='lbfgs',
	alpha=0.01,hidden_layer_sizes=(30),random_state=1,max_iter=500,learning_rate_init=0.05)
model.fit(data_tr,label_tr)    # 模型训练
pre = model.predict(data_te)   # 模型预测
k=[0]*25  # 存放类别
cnt = 0   # 计算正确个数
for i in range(25):
    k[i] = list(pre[i]).index(max(pre[i]))+1   
    if k[i] == data.iloc[i+50,7]:
        cnt += 1
acc = cnt/25

结果

真实类别 预测类别
2 2
2 2
2 1
2 1
2 2
2 2
1 1
1 1
3 3
3 3
3 3
3 3
3 3
3 3
3 3
3 3
3 3
3 3
3 3
3 3
3 3
4 4
4 4
4 3
4 4

若是我没打错的话,上面25个测试样本里面应该是错3个,因此正确率为88%。
若是有什么错误欢迎指出,也欢迎讨论。安全