news 2026/4/1 5:21:52

灰狼算法(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/3/24 1:14:23

15亿参数撬动终端AI革命:Janus-Pro-1B开启多模态轻量化时代

15亿参数撬动终端AI革命&#xff1a;Janus-Pro-1B开启多模态轻量化时代 【免费下载链接】Janus-Pro-1B Janus-Pro-1B&#xff1a;打造下一代统一多模态模型&#xff0c;突破传统框架局限&#xff0c;实现视觉编码解耦&#xff0c;提升理解与生成能力。基于DeepSeek-LLM&#xf…

作者头像 李华
网站建设 2026/3/20 4:53:26

如何把数字光纤传感器放大器FS-N41P作为延迟计时器

[引言]传感器检测到一个零件的掉落后,若零件的掉落速度很快,传感器马上就灭了,如何让传感器信号能持续150毫秒(使得PLC可以检测到这个信号)?使用keyence的FS_N41P这款放大器可以实现此功能 步骤如下: 1. 按M键保持3秒以上进入设置模式。 2.多次按M键查找结束,按左右…

作者头像 李华
网站建设 2026/3/30 12:20:55

8、CentOS系统管理实用指南

CentOS系统管理实用指南 在企业级服务器的运行和维护中,CentOS系统是常用选择之一。本文将详细介绍CentOS系统管理中的几个重要操作,包括创建管理用户、邮件配置、任务自动化等方面的内容。 创建管理用户并使用切换用户命令成为root 在服务器管理中,常规以root用户管理服…

作者头像 李华
网站建设 2026/3/31 10:33:02

14、保障CentOS系统安全:IPTables与Fail2ban配置指南

保障CentOS系统安全:IPTables与Fail2ban配置指南 在网络环境中,保障服务器的安全至关重要。CentOS系统提供了强大的工具来增强安全性,本文将详细介绍如何使用IPTables配置防火墙以及如何使用Fail2ban保护SSH服务。 1. 使用IPTables配置防火墙 IPTables是CentOS系统默认安…

作者头像 李华
网站建设 2026/3/27 16:54:32

Hoppscotch批量编辑:从手动逐个修改到一键批量处理的效率革命

Hoppscotch批量编辑&#xff1a;从手动逐个修改到一键批量处理的效率革命 【免费下载链接】hoppscotch 一个开源的API开发工具&#xff0c;可以帮助你轻松发送和测试API请求&#xff0c;查看响应结果&#xff0c;支持多种HTTP方法和数据格式&#xff0c;还提供团队协作功能。源…

作者头像 李华
网站建设 2026/3/28 21:15:54

3、云计算:从概念到应用的深度解析

云计算:从概念到应用的深度解析 1. 云计算已融入日常 我们可能在不知不觉中已经广泛使用云计算。以个人小生意为例,有以下多种应用场景: - 电子邮件与办公服务 :使用Google Apps付费版(每年每位用户50美元),hshco.com域名的电子邮件由Google托管,Postini(2007年被…

作者头像 李华