(改进)滚动轴承故障诊断实例代码CNN-ResNets,随机森林 软件pycharm python=3.8 tensorflow架构 按照本科毕业sheji要求做的改进(有配套资料价另算) 一、程序说明 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 # ## CNN+ResNet-准确率得分:1.0 二、其他 ·程序可直接运行,程序和数据集一路打包发送。 ·程序有使用说明。 ·可用resnet模型作为研究,另外两个模型作为对比。 (随机森林只有准确率图)

引言

在工业设备的维护中,滚动轴承的故障诊断是一个重要的环节。通过准确的故障诊断,可以提前发现潜在问题,避免设备故障带来的经济损失。本文将介绍一个基于深度学习和传统机器学习的滚动轴承故障诊断系统,使用改进的CNN-ResNet模型和随机森林模型进行对比分析,旨在提高诊断的准确性和效率。

数据集与预处理

我们使用凯斯西储大学(Case Western Reserve University)轴承数据中心的开源数据集。该数据集包含不同工况下的轴承振动信号,非常适合用于故障诊断研究。

(改进)滚动轴承故障诊断实例代码CNN-ResNets,随机森林 软件pycharm python=3.8 tensorflow架构 按照本科毕业sheji要求做的改进(有配套资料价另算) 一、程序说明 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 # ## CNN+ResNet-准确率得分:1.0 二、其他 ·程序可直接运行,程序和数据集一路打包发送。 ·程序有使用说明。 ·可用resnet模型作为研究,另外两个模型作为对比。 (随机森林只有准确率图)

在数据预处理阶段,我们采用小波阀值降噪方法对原始信号进行降噪处理,以提高信号的质量。以下是小波降噪的代码片段:

import pywt

def wavelet_denoise(data, wavelet='db4', level=1, mode='soft', threshold=0.1):
    # 小波变换
    coeffs = pywt.wavedec(data, wavelet, level=level)
    # 应用阀值降噪
    for i in range(1, len(coeffs)):
        coeffs[i] = pywt.threshold(coeffs[i], threshold, mode)
    # 重构信号
    denoised_data = pywt.waverec(coeffs, wavelet)
    return denoised_data

模型架构与改进

我们使用改进的CNN-ResNet模型进行故障诊断。ResNet通过引入残差学习解决了深层网络中的梯度消失问题,提高了模型的训练效果。以下是ResNet的基本架构代码:

from tensorflow.keras.layers import Input, Dense, Conv1D, MaxPooling1D, GlobalAveragePooling1D, Dropout, add
from tensorflow.keras.models import Model

def resnet_block(x, filters, kernel_size=3, stride=1):
    # 残差块
    shortcut = x
    x = Conv1D(filters, kernel_size, padding='same', strides=stride)(x)
    x = Conv1D(filters, kernel_size, padding='same')(x)
    x = add([shortcut, x])
    return x

def build_resnet(input_shape, num_classes):
    input = Input(shape=input_shape)
    x = Conv1D(64, 3, padding='same')(input)
    x = MaxPooling1D(2, 2)(x)
    x = resnet_block(x, 64)
    x = resnet_block(x, 64)
    x = GlobalAveragePooling1D()(x)
    x = Dense(128, activation='relu')(x)
    x = Dropout(0.5)(x)
    output = Dense(num_classes, activation='softmax')(x)
    model = Model(inputs=input, outputs=output)
    return model

优化策略

为了进一步提高模型的性能,我们采用了以下优化策略:

  1. 余弦退火策略:动态调整学习率,帮助模型跳出局部最优。
  2. L1正则化:防止模型过拟合。
  3. Dropout算法:随机失活部分神经元,增强模型的泛化能力。

以下是余弦退火策略的代码实现:

from tensorflow.keras.callbacks import LearningRateScheduler
import math

def cosine_annealing(epoch, total_epochs=100, initial_lr=0.001):
    lr = initial_lr * 0.5 * (1 + math.cos(math.pi * epoch / total_epochs))
    return lr

lr_scheduler = LearningRateScheduler(cosine_annealing)

模型评估与结果分析

我们使用以下指标对模型进行评估:

  • 精确率(Precision):正确预测的正样本数占所有预测正样本数的比例。
  • 召回率(Recall):正确预测的正样本数占所有实际正样本数的比例。
  • F1分数(F-measure):精确率和召回率的调和平均值。
  • ROC曲线:反映模型对正负样本的区分能力。

以下是生成ROC曲线的代码:

from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

def plot_roc_curve(y_true, y_pred_prob):
    fpr, tpr, thresholds = roc_curve(y_true, y_pred_prob)
    auc_score = auc(fpr, tpr)
    plt.figure(figsize=(8, 6))
    plt.plot(fpr, tpr, label=f'AUC = {auc_score:.3f}')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('ROC Curve')
    plt.legend()
    plt.show()

实验结果

通过实验,我们得到了以下结果:

  • 随机森林模型:准确率得分为0.83。
  • CNN模型:准确率得分为0.99。
  • CNN+ResNet模型:准确率得分为1.0。

实验结果表明,改进后的CNN+ResNet模型在滚动轴承故障诊断中表现最佳,准确率达到100%。

总结

本文介绍了一个基于深度学习和传统机器学习的滚动轴承故障诊断系统。通过改进的CNN-ResNet模型和随机森林模型的对比分析,我们发现改进后的CNN+ResNet模型在准确率、召回率和F1分数等指标上均优于随机森林模型。实验结果表明,改进后的模型在滚动轴承故障诊断中具有较高的准确性和可靠性。

未来的工作可以进一步优化模型架构,探索更高效的优化策略,并尝试在更多数据集上验证模型的性能。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐