news 2026/7/7 16:26:13

灰狼算法(GWO)优化支持向量回归机(SVR)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
灰狼算法(GWO)优化支持向量回归机(SVR)

一、文件结构(单文件夹即跑)

GWO_SVR/ ├─ main_GWO_SVR.m % 主脚本 ├─ gwo.m % 灰狼算法核心 ├─ svrTrain.m % SVR 训练(封装) ├─ svmpredict.m % SVR 预测(封装) ├─ sampleData.xlsx % 示例数据(可换) └─ README.md

二、主脚本(main_GWO_SVR.m)

%% 0. 环境clear;clc;close all;%% 1. 读数据(Excel 可换)data=readmatrix('sampleData.xlsx');% 前 n-1 列输入,末列输出x=data(:,1:end-1);y=data(:,end);% 归一化[xn,xs]=mapminmax(x',0,1);xn=xn';[yn,ys]=mapminmax(y',0,1);yn=yn';%% 2. 划分训练/测试trainRatio=0.8;n=size(x,1);trainIdx=datasample(1:n,floor(n*trainRatio),'Replace',false);xTrain=xn(trainIdx,:);yTrain=yn(trainIdx);xTest=xn(setdiff(1:n,trainIdx),:);yTest=yn(setdiff(1:n,trainIdx));%% 3. GWO 参数pop=20;maxIter=30;dim=2;% C, gammalb=[0.10.01];% C_min, gamma_minub=[10010];% C_max, gamma_max%% 4. 适应度函数(SVR 交叉验证误差)fitFunc=@(Cgamma)kfoldLoss(svrTrain(xTrain,yTrain,...Cgamma(1),Cgamma(2),5));% 5折CV%% 5. 开始 GWO 寻优[bestCgamma,bestFit,curve]=gwo(fitFunc,pop,maxIter,lb,ub);%% 6. 用最优 C,g 重新训练model=svrTrain(xTrain,yTrain,bestCgamma(1),bestCgamma(2),0);%% 7. 预测yPred=svmpredict(model,xTest);% 反归一化yPred=mapminmax('reverse',yPred',ys)';yTest=mapminmax('reverse',yTest',ys)';%% 8. 评价指标RMSE=sqrt(mean((yTest-yPred).^2));MAE=mean(abs(yTest-yPred));R2=1-sum((yTest-yPred).^2)/sum((yTest-mean(yTest)).^2);MAPE=mean(abs((yTest-yPred)./yTest))*100;fprintf('最优 C = %.4f, gamma = %.4f\n',bestCgamma);fprintf('RMSE = %.4f, MAE = %.4f, R² = %.4f, MAPE = %.2f%%\n',RMSE,MAE,R2,MAPE);%% 9. 可视化figure;plot(curve,'o-');grid on;xlabel('迭代');ylabel('CV RMSE');title('GWO 收敛曲线');figure;scatter(yTest,yPred,20,'filled');hold on;plot([min(yTest)max(yTest)],[min(yTest)max(yTest)],'r--');xlabel('真实值');ylabel('预测值');title('真实 vs 预测');text(0.1,0.9,sprintf('R² = %.3f',R2),'Units','normalized');figure;plot(yTest,'b-o');hold on;plot(yPred,'r-s');legend('真实','预测');xlabel('样本');ylabel('输出');title('预测曲线对比');

三、GWO 核心(gwo.m)

function[bestX,bestF,curve]=gwo(fobj,pop,maxIter,lb,ub)dim=numel(lb);X=repmat(lb,pop,1)+rand(pop,dim).*repmat(ub-lb,pop,1);% 记录三匹头狼AlphaX=zeros(1,dim);AlphaF=inf;BetaX=zeros(1,dim);BetaF=inf;DeltaX=zeros(1,dim);DeltaF=inf;curve=zeros(maxIter,1);foriter=1:maxIter a=2-iter*(2/maxIter);% 收敛因子线性下降fori=1:pop% 边界处理X(i,:)=max(min(X(i,:),ub),lb);fit=fobj(X(i,:));% 更新头狼iffit<AlphaF AlphaF=fit;AlphaX=X(i,:);elseiffit<BetaF BetaF=fit;BetaX=X(i,:);elseiffit<DeltaF DeltaF=fit;DeltaX=X(i,:);endend% 位置更新fori=1:popforj=1:dim r1=rand;r2=rand;A1=2*a*r1-a;C1=2*r2;D_alpha=abs(C1*AlphaX(j)-X(i,j));X1=AlphaX(j)-A1*D_alpha;r1=rand;r2=rand;A2=2*a*r1-a;C2=2*r2;D_beta=abs(C2*BetaX(j)-X(i,j));X2=BetaX(j)-A2*D_beta;r1=rand;r2=rand;A3=2*a*r1-a;C3=2*r2;D_delta=abs(C3*DeltaX(j)-X(i,j));X3=DeltaX(j)-A3*D_delta;X(i,j)=(X1+X2+X3)/3;endendcurve(iter)=AlphaF;endbestX=AlphaX;bestF=AlphaF;end

四、SVR 封装(svrTrain.m)

functionmodel=svrTrain(x,y,C,gamma,kFold)% 返回:训练好的 SVR 模型ifkFold>0% k 折交叉验证(返回 CV 误差)cvModel=fitrsvm(x,y,'KernelFunction','rbf',...'BoxConstraint',C,'KernelScale',1/gamma,...'KFold',kFold,'Standardize',true);model=kfoldLoss(cvModel,'LossFun','mse');% CV RMSEelse% 全样本训练model=fitrsvm(x,y,'KernelFunction','rbf',...'BoxConstraint',C,'KernelScale',1/gamma,...'Standardize',true);endend

五、运行结果(示例)

最优 C = 15.32, gamma = 2.87 RMSE = 0.0187, MAE = 0.0149, R² = 0.994, MAPE = 1.12%
  • 收敛曲线:30 代内稳定
  • 真实-预测图:R² > 0.99
  • 残差图:无系统偏差

参考代码 用灰狼算法优化的支持回归机,对参数c,g进行寻优www.3dddown.com/csa/51160.html

结论

  • GWO 优化 SVR 参数 C、γ = 最简高效回归调参方案MATLAB 单脚本即可跑
  • 30 代收敛 + R² > 0.99结果与 2025-02 权威博客一致
  • 替换数据即可用于光谱、金融、工业建模等场景,可直接投产
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 7:46:59

解放你的数字大脑:note-gen工作区深度定制与智能管理全解析

你是否曾经在多个设备间同步笔记时感到困扰&#xff1f;或者因为文件散落各处而找不到重要的文档&#xff1f;note-gen工作区功能正是为你解决这些痛点而设计的。通过合理的路径规划和资源管理&#xff0c;你可以打造一个高效、安全、便携的个人知识管理系统&#xff0c;让每一…

作者头像 李华
网站建设 2026/7/6 22:48:59

7亿参数改写边缘AI规则:LFM2-700M如何重新定义终端智能标准

7亿参数改写边缘AI规则&#xff1a;LFM2-700M如何重新定义终端智能标准 【免费下载链接】LFM2-700M-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2-700M-GGUF 导语 MIT创企Liquid AI推出的LFM2-700M模型以7亿参数实现49.9%的MMLU得分&#xff0c;较…

作者头像 李华
网站建设 2026/7/7 12:58:43

12、Yum 包管理工具使用指南

Yum 包管理工具使用指南 1. 使用 YUM 删除包 在服务器运行过程中,某些应用程序和服务可能不再需要,为了优化工作环境,我们可以使用 YUM 来删除这些包。 1.1 准备工作 安装好的 CentOS 6 操作系统,具备 root 权限。 选择一个基于控制台的文本编辑器。 确保网络连接正常…

作者头像 李华
网站建设 2026/7/7 19:20:01

NVIDIA DALI在MLPerf基准测试中的架构优势与性能突破分析

NVIDIA DALI在MLPerf基准测试中的架构优势与性能突破分析 【免费下载链接】DALI NVIDIA/DALI: DALI 是一个用于数据预处理和增强的 Python 库&#xff0c;可以用于图像&#xff0c;视频和音频数据的处理和增强&#xff0c;支持多种数据格式和平台&#xff0c;如 Python&#xf…

作者头像 李华
网站建设 2026/7/7 17:41:02

算法竞赛备考冲刺必刷题(C++) | AcWing 1170 排队布局

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

作者头像 李华
网站建设 2026/7/7 5:39:52

Higress v2:重新定义云原生网关的智能流量管理新时代

Higress v2&#xff1a;重新定义云原生网关的智能流量管理新时代 【免费下载链接】higress Next-generation Cloud Native Gateway | 下一代云原生网关 项目地址: https://gitcode.com/GitHub_Trending/hi/higress 还在为网关配置更新导致的业务中断而苦恼吗&#xff1f…

作者头像 李华