本文基于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%。
若是有什么错误欢迎指出,也欢迎讨论。安全