原创新方法!格拉姆角场-CNN-DOA-LSSVM一键实现东南大学齿轮箱故障诊断!超多图!适合新手小白!

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

目录

原理详解

创新点

①创新点一:最新优化算法自动参数调优

②创新点二:格拉姆角场实现一维信号转二维图像

③创新点三:CNN-LSSVM新颖深度学习分类架构

结果展示

部分代码展示

完整代码获取


很久没给大家带来故障诊断类的作品了。今天,给大家带来一期原创未发表的新颖代码,格拉姆角场+深度学习结合,一键运行即可实现东南大学齿轮箱数据故障诊断,不像其他程序一样需要运行很多次,并且附带详细的注释与使用说明!非常适合新手小白!精度高达99%!

    当然,我们提出的这个方法,非常适合用来发文!目前,知网和WOS上都还没人用过!不信的小伙伴可以看下面截图:

    知网:

    WOS:

    你先用,你就是创新!

    您只需做的工作:下载压缩包,解压后运行main文件即可出图!

    原理详解

    此处使用的数据是东南大学官方的齿轮箱数据!首先说一下该数据集的处理步骤以及来源:

    1.数据预处理。取官方下载的东南大学齿轮箱数据集,选择以下几个文件:

    Chipped_20_0:故障状态为齿轮上有裂纹

    Health_20_0:健康状态

    Miss_20_0:故障状态为断齿

    Root_20_0:故障状态为齿轮根部裂纹

    Surface_20_0:故障状态为齿面磨损

    提取五个数据的第三列,设置滑动窗口w为1000,每个数据的故障样本点个数s为2048 。将所有的数据滑窗设置完毕之后,将所有的数据和类别综合到一个Excel中(此处Excel已直接整理好,可直接进行后续步骤)。

    2.格拉姆角场转换。也就是将一维轴承振动信号通过格拉姆矩阵转化为二维的格拉姆图像,我们先将时间序列映射到极坐标系(半径设置为100),然后基于角度构建出二维矩阵来表示序列之间的相互关系(相加或相减),从而在保留原始数据信息的同时包含了时间相关性。

    上图以格拉姆角场差为例,展示了5种不同故障状态的时频图,我们再将图像输入到二维CNN中进行特征提取。

    3.故障诊断。按照上述流程处理完数据集后,就是我们常见的机器学习分类数据集了。此处,我们划分70%为训练集,30%为测试集,将数据送入CNN中进行特征提取,再取CNN的全连接层结果作为LSSVM模型的输入,并利用2025年新出的梦境优化算法DOA对LSSVM的参数c和g实现自适应寻优,就能得到故障诊断结果!

    创新点

    ①创新点一:最新优化算法自动参数调优

    梦境优化算法(Dream Optimization Algorithm, DOA)2025年3月发表在SCI一区Top期刊《Computer Methods in Applied Mechanics and Engineering实验结果表明,DOA算法在大部分函数上均取得了最优结果!性能非常不错,解决了LSSVM模型参数难以人工准确设定的问题!之前推文有做过DOA和经典算法SCA的比较,效果显而易见!链接如下

    2025年3月SCI一区新算法-梦境优化算法(DOA)-公式原理详解与性能测评 Matlab代码免费获取

    ②创新点二:格拉姆角场实现一维信号转二维图像

    将原始振动信号通过GAF转换为图像形式,既能保留时间序列的时序特征,又能在图像域内展现局部与全局的相互关联。这种将一维数据映射到二维图像的方式为后续深度网络提取特征提供了可视化和空间结构上的优势。

    ③创新点三:CNN-LSSVM新颖深度学习分类架构

    将CNN作为前端的特征提取器,最后一层的全连接层表征输出送入LSSVM进行最终分类。CNN负责学习故障图像的表示,LSSVM在特征空间中进行判别分类,相比于单一模型可获得更好的鲁棒性与泛化能力。

    结果展示

    此处采用的CNN-DOA-LSSVM模型,知网上还没人用过,大家也可以自行替换成想要的优化算法!

    首先看一下模式识别前后的样本分布情况:

    可以看到,模型识别前,故障类别较为无序,无法很好地区分。经过模型识别后,样本分布都集中在了一起,能够很好地区分与辨识!

    接着是分类效果图,包括训练集与测试集:

    其次是混淆矩阵图,包括训练集与测试集:

    可以看到,经过我们新方法得到的故障诊断准确率结果相当之高,测试集预测结果在99%以上!

    以及CNN网络结构图:

    以上所有图片,作者都已精心整理过代码,都可以一键运行main直接出图,不像其他代码一样需要每个文件运行很多次!

    不信的话可以看下面文件夹截图,非常清晰明了,并且有使用说明!

    其中,刚刚讲到的数据预处理部分已帮大家整理成Excel格式,特征提取部分已单独放到了txt文件中可自行下载。并且,我们也给了一键运行与节约时间两种版本,方便大家自行选择喜欢的版本!

    部分代码展示

    %%  导入图像数据与标签
    input  = resizeimg(:,1);            % 第 1 列:图像数据
    output = resizeimg(:,2);            % 第 2 列:对应标签
    
    %%  分析数据
    res = resizeimg';                            
    num_res = size(res, 1);             % 样本数(每一行,是一个样本)
    res = res(randperm(num_res), :);    % 打乱数据集(不打乱数据时,注释该行)
    num_size    = 0.7;                  % 训练集占数据集的比例
    allLabels   = cell2mat(res(:, 2));  
    uniqueLabel = unique(allLabels);        
    num_class   = length(uniqueLabel);  % 类别数
    
    %%  设置变量存储数据
    P_train = {};  T_train = {};
    P_test  = {};  T_test  = {};
    
    %%  划分数据集
    for i = 1 : num_class
        currentClass = uniqueLabel(i);                   % 找到第 i 类样本所在行
        idx_this     = find(allLabels == currentClass);
        mid_res      = res(idx_this, :);                 % 该类所有样本
        mid_size  = size(mid_res, 1);                    % 该类的样本数
        mid_tiran = round(num_size * mid_size);          % 训练集样本数
    
        % 前 mid_tiran 行用于训练,其余用于测试
        P_train = [P_train; mid_res(1 : mid_tiran, 1)];  % 图像
        T_train = [T_train; mid_res(1 : mid_tiran, 2)];  % 标签
    
        P_test  = [P_test;  mid_res(mid_tiran+1 : end, 1)];
        T_test  = [T_test;  mid_res(mid_tiran+1 : end, 2)];
    end
    
    %%  整合 4D 图像数组 + categorical 标签
    M = size(P_train, 1);    % 训练集样本数
    N = size(P_test,  1);    % 测试集样本数
    imgExample = P_train{1};
    [H, W, C]  = size(imgExample);

    完整代码获取

    如果需要以上完整代码,只需点击下方小卡片,再后台回复关键字,不区分大小写:

    GZZDE

    格拉姆(GAF,Gramian Angular Field)是一种将时间序列数据转换为像的方法。这种方法通过将时间序列数据映射到一个单位圆上,然后计算这些点之间的度关系来生成像。GAF方法在时间序列分析和预测中具有广泛应用,特别是在机器学习和深度学习领域。 以下是使用Matlab实现GAF方法的步骤: ### 1. 标准化时间序列数据 首先,将时间序列数据标准化到[-1, 1]范围内。 ```matlab function [X_scaled] = scale_to_01(X) X_min = min(X); X_max = max(X); X_scaled = (X - X_min) / (X_max - X_min) * 2 - 1; end ``` ### 2. 将时间序列数据映射到单位圆上 将标准化后的数据映射到单位圆上,得到度。 ```matlab function [theta] = scale_to_pi(X_scaled) theta = acos(X_scaled); end ``` ### 3. 计算格拉姆 计算映射后的度之间的余弦值,得到格拉姆。 ```matlab function [GAF] = gramian_angular_field(theta) GAF = cos(theta + theta') - cos(theta - theta'); end ``` ### 4. 完整实现 将上述步骤整合在一起,形成完整的GAF计算函数。 ```matlab function [GAF] = compute_GAF(X) X_scaled = scale_to_01(X); theta = scale_to_pi(X_scaled); GAF = gramian_angular_field(theta); end ``` ### 5. 示例 使用示例时间序列数据计算GAF并可视化。 ```matlab % 示例时间序列数据 X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; % 计算格拉姆 GAF = compute_GAF(X); % 可视化格拉姆 imagesc(GAF); colorbar; title('Gramian Angular Field'); xlabel('Time'); ylabel('Time'); ``` ### 6. 结果 运行上述代码后,会生成一个像,表示时间序列数据的格拉姆
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值