多种滚动轴承诊断数据集(凯斯西储大学、辛辛那提大学、西安交通大学)故障诊断系统,一维时间序列分类和二维图像处理分类,采用多种模型进行对比实验
滚动轴承故障诊断数据集。故障诊断,预测、分类,轴承故障诊断需要数据支撑数据集,![]()
1.CWRU西储大学轴承数据集2、辛辛那提IMS数据3.FEMTO-ST 轴承退化数据集4.哈工大航空发动机轴承数据集5.德国帕德博恩轴承数据集6.江南大学轴承数据集7.加拿大渥太华变转速工况轴承数据集8.华中科技大学齿轮箱数据集9.美国康涅狄格大学齿轮数据使用Python和TensorFlow框架来构建这个系统,多种滚动轴承数据集(凯斯西储大学、辛辛那提大学、西安交通大学)故障诊断系统,一维时间序列分类和二维图像处理分类,采用多种模型进行对比实验
文章目录
- 滚动轴承故障诊断数据集。故障诊断,预测、分类,轴承故障诊断需要数据支撑数据集,
- 1. 数据预处理
- 一维时间序列数据预处理
- 二维图像数据预处理
- 2. 构建模型
- 一维CNN模型示例
- 二维CNN模型示例
- 3. 训练模型
- 4. 模型评估与可视化
- 5. 多特征输入多特征输出
仅供参考
凯斯西储大学滚动轴承数据集、辛辛那提大学滚动轴承数据集、西交大轴承数据集各种滚动轴承数据集
一维、二维分类 python
1、一维时间序列卷积神经网络分类
cnn cnn-lstm(bilstm) cnn-XGboost KNN Adboost rf DNN VGG Resnet等
TCN、cnn-TCN等,并包含各种基础模型作为模型对比
2、二维图像处理分类,利用连续小波变换CWT、短时傅立叶变换、WVD、格拉姆角场(GAF)、马尔可夫变迁场(MTF)、递归图(RP)各个方法将一维转二维,数据预处理。
多种滚动轴承数据集(如凯斯西储大学、辛辛那提大学、西安交通大学等)的故障诊断系统,包括一维时间序列分类和二维图像处理分类,并采用多种模型进行对比实验,。使用Python和TensorFlow框架来构建这个系统。
1. 数据预处理
一维时间序列数据预处理
对于一维时间序列数据,首先需要加载数据并将其转换为适合输入到神经网络中的格式。这里以CWRU数据集为例:
importscipy.ioassioimportnumpyasnpfromsklearn.model_selectionimporttrain_test_splitdefload_data(file_path):mat=sio.loadmat(file_path)data=mat['variable_name']# 根据.mat文件结构调整变量名labels=mat['labels']# 假设.mat文件中包含标签信息returndata,labels data,labels=load_data('path_to_cwru_dataset.mat')X_train,X_val,y_train,y_val=train_test_split(data,labels,test_size=0.2,random_state=42)二维图像数据预处理
利用连续小波变换(CWT)、短时傅立叶变换(STFT)等方法将一维信号转换为二维图像。
fromscipy.signalimportcwt,morletimportmatplotlib.pyplotaspltdeftime_series_to_image(data,method='cwt'):ifmethod=='cwt':widths=np.arange(1,31)cwtmatr=cwt(data,morlet,widths)returncwtmatrelifmethod=='stft':f,t,Zxx=signal.stft(data,fs=12000,nperseg=1024)returnnp.abs(Zxx)else:raiseValueError("Unsupported method")# 示例:将单个样本转换为图像image_data=time_series_to_image(X_train[0])plt.imshow(image_data,aspect='auto',cmap='jet')plt.show()2. 构建模型
一维CNN模型示例
importtensorflowastffromtensorflow.kerasimportlayers,modelsdefbuild_1d_cnn(input_shape,num_classes):model=models.Sequential()model.add(layers.Conv1D(64,kernel_size=3,activation='relu',input_shape=input_shape))model.add(layers.MaxPooling1D(pool_size=2))model.add(layers.Flatten())model.add(layers.Dense(128,activation='relu'))model.add(layers.Dense(num_classes,activation='softmax'))model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])returnmodel input_shape=(X_train.shape[1],1)model=build_1d_cnn(input_shape,num_classes=10)二维CNN模型示例
defbuild_2d_cnn(input_shape,num_classes):model=models.Sequential()model.add(layers.Conv2D(32,kernel_size=(3,3),activation='relu',input_shape=input_shape))model.add(layers.MaxPooling2D(pool_size=(2,2)))model.add(layers.Flatten())model.add(layers.Dense(128,activation='relu'))model.add(layers.Dense(num_classes,activation='softmax'))model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])returnmodel input_shape=(image_data.shape[0],image_data.shape[1],1)model=build_2d_cnn(input_shape,num_classes=10)3. 训练模型
history=model.fit(np.expand_dims(X_train,axis=-1),tf.keras.utils.to_categorical(y_train),epochs=50,batch_size=32,validation_data=(np.expand_dims(X_val,axis=-1),tf.keras.utils.to_categorical(y_val)))4. 模型评估与可视化
fromsklearn.metricsimportclassification_report,confusion_matriximportseabornassns y_pred=model.predict(np.expand_dims(X_val,axis=-1))print(classification_report(y_val,np.argmax(y_pred,axis=1)))cm=confusion_matrix(y_val,np.argmax(y_pred,axis=1))sns.heatmap(cm,annot=True,fmt='d')plt.show()# 使用t-SNE进行可视化fromsklearn.manifoldimportTSNE tsne=TSNE(n_components=2,verbose=1,perplexity=40,n_iter=300)tsne_results=tsne.fit_transform(model.layers[-2].output)plt.figure(figsize=(16,10))sns.scatterplot(x=tsne_results[:,0],y=tsne_results[:,1],hue=y_val,palette=sns.color_palette("hls",10),legend="full",alpha=0.3)plt.show()5. 多特征输入多特征输出
可以使用Keras的Functional API来构建接受多个输入的模型:
input_a=layers.Input(shape=(input_shape_a))input_b=layers.Input(shape=(input_shape_b))x=layers.Dense(64,activation='relu')(input_a)x=layers.Dense(64,activation='relu')(x)x=models.Model(inputs=input_a,outputs=x)y=layers.Dense(64,activation='relu')(input_b)y=layers.Dense(64,activation='relu')(y)y=models.Model(inputs=input_b,outputs=y)combined=layers.concatenate([x.output,y.output])z=layers.Dense(64,activation='relu')(combined)z=layers.Dense(num_classes,activation='softmax')(z)model=models.Model(inputs=[x.input,y.input],outputs=z)model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])一维时间序列分类和二维图像处理分类的方法。调整模型结构、数据预处理步骤以及评估指标
