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

引言

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

数据

基于神经网络的变压器故障分类诊断_第1张图片

思路介绍

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

代码

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%。
如果有什么错误欢迎指出,也欢迎讨论。

你可能感兴趣的:(算法)