• 分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测


    分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测

    分类效果

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    基本描述

    1.Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测(完整源码和数据)
    2.优化参数为:学习率,批量处理大小,正则化参数。
    3.图很多,包括分类效果图,混淆矩阵图。
    4.附赠案例数据可直接运行main一键出图~
    注意程序和数据放在一个文件夹,运行环境为Matlab2020及以上。
    5.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
    6.输入多个特征,分四类。

    程序设计

    %%  优化算法参数设置
    SearchAgents_no = 8;                   % 数量
    Max_iteration = 5;                    % 最大迭代次数
    
    %% 建立模型
    lgraph = layerGraph();                                                   % 建立空白网络结构
    tempLayers = [
        sequenceInputLayer([num_dim, 1, 1], "Name", "sequence")              % 建立输入层,输入数据结构为[num_dim, 1, 1]
        sequenceFoldingLayer("Name", "seqfold")];                            % 建立序列折叠层
    lgraph = addLayers(lgraph, tempLayers);                                  % 将上述网络结构加入空白结构中
    tempLayers = [
        convolution2dLayer([3, 1], 16, "Name", "conv_1", "Padding", "same")  % 建立卷积层,卷积核大小[3, 1]16个特征图
        reluLayer("Name", "relu_1")                                          % Relu 激活层
    
    lgraph = addLayers(lgraph, tempLayers);                                  % 将上述网络结构加入空白结构中
    
    tempLayers = [
        sequenceUnfoldingLayer("Name", "sequnfold")                          softmaxLayer("Name", "softmax")                                  % softmax激活层
        classificationLayer("Name", "classification")];                  % 分类层
    lgraph = addLayers(lgraph, tempLayers);                              % 将上述网络结构加入空白结构中
    lgraph = connectLayers(lgraph, "seqfold/out", "conv_1");             % 折叠层输出 连接 卷积层输入
    lgraph = connectLayers(lgraph, "seqfold/miniBatchSize", "sequnfold/miniBatchSize"); 
                                                                         % 折叠层输出连接反折叠层输入
    lgraph = connectLayers(lgraph, "relu_2", "sequnfold/in");            % 激活层输出 连接 反折叠层输入
    
    %% 参数设置
    options = trainingOptions('adam', ...     % Adam 梯度下降算法
        'MaxEpochs', 500,...                 % 最大训练次数 
        'InitialLearnRate', best_lr,...          % 初始学习率为0.001
        'L2Regularization', best_l2,...         % L2正则化参数
        'LearnRateSchedule', 'piecewise',...  % 学习率下降
        'LearnRateDropFactor', 0.1,...        % 学习率下降因子 0.1
        'LearnRateDropPeriod', 400,...        % 经过训练后 学习率为 0.001*0.1
        'Shuffle', 'every-epoch',...          % 每次训练打乱数据集
        'ValidationPatience', Inf,...         % 关闭验证
        'Plots', 'training-progress',...      % 画出曲线
        'Verbose', false);
    
    %% 训练
    net = trainNetwork(p_train, t_train, lgraph, options);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    参考资料

    [1] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502
    [2] https://blog.csdn.net/kjm13182345320/article/details/128690229

  • 相关阅读:
    MySQL之char、varchar类型简析
    Spark读取elasticsearch数据指南
    .NET对象的内存布局
    YB1205B 外置MOS异步升压恒流LED驱动控制器
    电力移动应用及终端安全溯源管控技术研究与实践
    还不知道光场相机吗?
    经典OJ题:环形节点是否存在!
    Django ORM:最全面的数据库处理指南
    请讲一讲JS中的 for...in 与 for...of (上)
    Kubernetes 能取代 Docker吗?
  • 原文地址:https://blog.csdn.net/kjm13182345320/article/details/133365684