
CNN-ResNet随机森林滚动轴承故障诊断实例文章目录## 随机森林-准确率得分0.83## CNN-准确率得分0.99## CNNResNet-准确率得分1.01. 环境准备2. 数据加载与预处理3. 构建CNN-ResNet模型4. 训练模型5. 模型评估与可视化6. 随机森林分类器软件pycharm python3.8tensorflow架构预实现功能一、1.程序可生成精确率P(Precision)、召回率R(Recall)以及F1(F-measure)3个评价指标2.可生成训练集和验证集准确率曲线训练集和验证集的损失值曲线ROC曲线3.可生成混淆矩阵图。4.可生成模型内部各层的T-SNE图。5.可把每轮迭代的准确率和损失值保存到表格中。6.程序使用余弦退火策略动态调整学习率L1正则化Dropout算法小波阀值降噪。7.四个工况各生成一张数据图片、预处理后数据图像。.使用的凯斯西储大学Case Western Reserve University轴承数据中心的开源数据集。(可更换为MFPT数据集、帕德博恩数据集)## 随机森林-准确率得分0.83## CNN-准确率得分0.99## CNNResNet-准确率得分1.0基于凯斯西储大学CWRU轴承数据集的滚动轴承故障诊断系统示例代码。使用CNN-ResNet模型和随机森林进行故障分类1. 环境准备确保安装了必要的库pipinstallnumpy scipy matplotlib seaborn scikit-learn tensorflow pywavelets pandas openpyxl2. 数据加载与预处理假设数据已经下载并解压到本地目录。首先加载数据并进行预处理importscipy.ioassioimportnumpyasnpfromsklearn.model_selectionimporttrain_test_splitimportpywtdefload_data(file_path):matsio.loadmat(file_path)datamat[variable_name]# 替换为实际变量名labelsmat[labels]# 假设.mat文件中包含标签信息returndata,labelsdefwavelet_denoising(data):coeffspywt.wavedec(data,db4,level1)thresholdnp.std(coeffs[-1])*np.sqrt(2*np.log(len(data)))coeffs[1:][pywt.threshold(i,threshold,modesoft)foriincoeffs[1:]]returnpywt.waverec(coeffs,db4)data,labelsload_data(path_to_cwru_dataset.mat)datawavelet_denoising(data)# 应用小波阈值降噪X_train,X_val,y_train,y_valtrain_test_split(data,labels,test_size0.2,random_state42)3. 构建CNN-ResNet模型importtensorflowastffromtensorflow.kerasimportlayers,modelsclassResidualUnit(layers.Layer):def__init__(self,filters,strides1,activationrelu,**kwargs):super().__init__(**kwargs)self.activationtf.keras.activations.get(activation)self.main_layers[layers.Conv1D(filters,3,stridesstrides,paddingsame,use_biasFalse),layers.BatchNormalization(),self.activation,layers.Conv1D(filters,3,strides1,paddingsame,use_biasFalse),layers.BatchNormalization()]self.skip_layers[]ifstrides1:self.skip_layers[layers.Conv1D(filters,1,stridesstrides,paddingsame,use_biasFalse),layers.BatchNormalization()]defcall(self,inputs):Zinputsforlayerinself.main_layers:Zlayer(Z)skip_Zinputsforlayerinself.skip_layers:skip_Zlayer(skip_Z)returnself.activation(Zskip_Z)defbuild_cnn_resnet(input_shape,num_classes):inputslayers.Input(shapeinput_shape)xlayers.Conv1D(64,kernel_size7,strides2,paddingsame)(inputs)xlayers.BatchNormalization()(x)xlayers.Activation(relu)(x)xlayers.MaxPooling1D(pool_size3,strides2,paddingsame)(x)prev_filters64forfiltersin[64]*3[128]*4[256]*6[512]*3:strides1iffiltersprev_filterselse2xResidualUnit(filters,stridesstrides)(x)prev_filtersfilters xlayers.GlobalAvgPool1D()(x)outputslayers.Dense(num_classes,activationsoftmax)(x)modelmodels.Model(inputs,outputs)returnmodel input_shape(X_train.shape[1],1)modelbuild_cnn_resnet(input_shape,num_classeslen(np.unique(y_train)))4. 训练模型使用余弦退火策略动态调整学习率、L1正则化和Dropoutfromtensorflow.keras.callbacksimportCSVLoggerfromtensorflow.keras.optimizers.schedulesimportCosineDecay cosine_decayCosineDecay(initial_learning_rate0.1,decay_steps1000)model.compile(optimizertf.keras.optimizers.Adam(learning_ratecosine_decay),losssparse_categorical_crossentropy,metrics[accuracy])csv_loggerCSVLogger(training.log,separator,,appendFalse)historymodel.fit(np.expand_dims(X_train,axis-1),y_train,epochs50,batch_size32,validation_data(np.expand_dims(X_val,axis-1),y_val),callbacks[csv_logger])5. 模型评估与可视化fromsklearn.metricsimportclassification_report,confusion_matriximportseabornassnsimportmatplotlib.pyplotaspltfromsklearn.manifoldimportTSNE# 准确率得分y_predmodel.predict(np.expand_dims(X_val,axis-1))print(classification_report(y_val,np.argmax(y_pred,axis1)))# 混淆矩阵图cmconfusion_matrix(y_val,np.argmax(y_pred,axis-1))sns.heatmap(cm,annotTrue,fmtd)plt.show()# T-SNE可视化tsneTSNE(n_components2,verbose1,perplexity40,n_iter300)tsne_resultstsne.fit_transform(model.layers[-2].output)plt.figure(figsize(16,10))sns.scatterplot(xtsne_results[:,0],ytsne_results[:,1],huey_val,palettesns.color_palette(hls,len(np.unique(y_val))),legendfull,alpha0.3)plt.show()6. 随机森林分类器fromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score rf_modelRandomForestClassifier()rf_model.fit(X_train,y_train)y_pred_rfrf_model.predict(X_val)print(fRandom Forest Accuracy:{accuracy_score(y_val,y_pred_rf)})构建基于CWRU轴承数据集的滚动轴承故障诊断系统包括CNN-ResNet模型和随机森林分类器并实现了多种评估指标和可视化方法。根据具体需求和数据集特点可以进一步调整和优化上述代码。仅供参考。