一概述
1.1说明
极限学习机的实现程序。
处理的数据为西储大学的不同故障类型的轴承数据。
程序包括:预处理数据和matlab训练预测部分
原理:参考博客
1.2开发工具
matlab2018
pycharm2020
python版本:python3.7(重要)
二.程序实现
用python分段截取西储大学的原始数据,再用matlab提取为特征值,通过极限学习机训练和预测。
PS:程序中涉及的路径请改为自己的西储大学轴承数据文件的路径。
(1)数据预处理一(python)
请先下载数据
西储大学数据
PS:如果python运行有问题,请将python更新到3.7版本
python分段截取西储大学的原始数据
import numpy as np
import scipy.io as scio
from random import shuffle
def normalize(data):
'''(0,1)normalization
:param data : the object which is a 1*2048 vector to be normalized
'''
s= (data-min(data)) / (max(data)-min(data))
return s
def cut_samples(org_signals):
''' get original signals to 10*120*2048 samples, meanwhile normalize these samples
:param org_signals :a 10* 121048 matrix of ten original signals
'''
results=np.zeros(shape=(10,120,2048))
temporary_s=np.zeros(shape=(120,2048))
for i in range(10): #对应十类故障数据
s=org_signals[i]
for x in range(120): #每类数据120段样本
temporary_s[x]=s[1000*x:2048+1000*x] #每个样本信号长度1000
# temporary_s[x]=normalize(temporary_s[x]) #顺便对每个样本归一化
results[i]=temporary_s
return results
def make_datasets(org_samples):
'''输入10*120*2048的原始样本,输出带标签的训练集(占75%)和测试集(占25%)'''
train_x=np.zeros(shape=(10,90,2048))
train_y=np.zeros(shape=(10,90,10))
test_x=np.zeros(shape=(10,30,2048))
test_y=np.zeros(shape=(10,30,10))
for i in range(10):
s=org_samples[i]
#
index_s = [a for a in range(len(s))]
#shuffle(index_s) #打乱顺序
s=s[index_s]
# 对每种类型都划分训练集和测试集
train_x[i]=s[:90]
test_x[i]=s[90:120]
# 填写标签
label = np.zeros(shape=(10,))
label[i] = 1
train_y[i, :] = label
test_y[i, :] = label
#将十种类型的训练集和测试集分别合并并打乱
x1 = train_x[0]
y1 = train_y[0]
x2 = test_x[0]
y2 =