news 2026/2/9 6:15:38

灰狼算法(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/2/5 3:29:28

Qt 5.14.2 Linux开发环境完整配置指南

Qt 5.14.2 Linux开发环境完整配置指南 【免费下载链接】Qt5.14.2开源版Linuxx64安装文件下载 Qt 5.14.2 开源版 Linux x64 安装文件下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/3ce16 Qt 5.14.2作为一款功能强大的跨平台C应用程序开发框架&…

作者头像 李华
网站建设 2026/2/6 14:55:10

欢迎使用Typewriter

欢迎使用Typewriter 【免费下载链接】element-ui-x Element-UI-X 开箱即用的AI组件库&#xff0c;基于Vue2 Element 项目地址: https://gitcode.com/worryzyy/element-ui-x 支持粗体和斜体代码块高亮显示 console.log(Hello World!); ### 雾化效果定制通过isFog参数&a…

作者头像 李华
网站建设 2026/2/6 12:17:39

5大核心问题解决方案:PowerShell自动化工具完全指南

5大核心问题解决方案&#xff1a;PowerShell自动化工具完全指南 【免费下载链接】awesome-powershell A curated list of delightful PowerShell modules and resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-powershell 在Windows系统管理和自动化领域…

作者头像 李华
网站建设 2026/2/9 8:23:00

15、CentOS安全防护与Samba服务配置全攻略

CentOS安全防护与Samba服务配置全攻略 在当今数字化的时代,服务器的安全性和文件共享功能至关重要。本文将详细介绍如何使用DenyHosts防止基于字典的攻击、使用ClamAV进行病毒扫描,以及如何配置Samba作为独立服务器并启用主目录共享。 1. 使用DenyHosts防止基于字典的攻击 …

作者头像 李华
网站建设 2026/2/8 1:42:16

Qwen3-8B-MLX-8bit:双模式切换开启边缘AI部署效率革命

Qwen3-8B-MLX-8bit&#xff1a;双模式切换开启边缘AI部署效率革命 【免费下载链接】Qwen3-8B-MLX-8bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-8B-MLX-8bit 导语 阿里通义千问团队推出的Qwen3-8B-MLX-8bit开源模型&#xff0c;以82亿参数实现"…

作者头像 李华