SVM预测进阶:郊狼算法优化SVM数据回归

1 简介

提出一种基于郊狼优化算法(COA)和支持向量机(SVM)的股价预测方法.针对SVM预测模型参数难以确定的问题,采用COA算法对SVM中惩罚因子及核函数参数进行优化,构建COA-SVM股价预测模型。

支持向量机是利用已知数据类别的样本为训练样本,寻找同类数据的空间聚集特征,从而对测试样本进行分类验证,通过验证可将分类错误的数据进行更正。本文以体检数据为数据背景,首先通过利用因子分析将高维数据进行降维,由此将所有指标整合成几个综合性指标;为降低指标之间的衡量标准所引起的误差,本文利用 MATLAB软件将数据进行归一化处理,结合聚类分析将数据分类;最后本文利用最小二乘支持向量机分类算法进行分类验证,从而计算出数据分类的准确率,并验证了数据分类的准确性和合理性。

图片

图片


2 部分代码

function [fbst, xbst, performance] = hho( objective, d, lmt, n, T, S)%Harris hawks optimization algorithm% inputs: %   objective - function handle, the objective function%   d - scalar, dimension of the optimization problem%   lmt - d-by-2 matrix, lower and upper constraints of the decision varable%   n - scalar, swarm size%   T - scalar, maximum iteration%   S - scalar, times of independent runs% data: 2021-05-09% author: elkman, github.com/ElkmanY/%% Levy flightbeta = 1.5;sigma = ( gamma(1+beta)*sin(pi*beta/2)/gamma((1+beta)/2)*beta*2^((beta-1)/2) ).^(1/beta);Levy = @(x) 0.01*normrnd(0,1,d,x)*sigma./abs(normrnd(0,1,d,x)).^(1/beta);%% algorithm proceduretic;for s = 1:S    %%  Initialization    X = lmt(:,1) + (lmt(:,2) - lmt(:,1)).*rand(d,n);    for t = 1:T        F = objective(X);        [f_rabbit(s,t), i_rabbit] = min(F);        x_rabbit(:,t,s) = X(:,i_rabbit);        xr = x_rabbit(:,t,s);        J = 2*(1-rand(d,1));        E0 = 2*rand(1,n)-1;        E(t,:) = 2*E0*(1-t/T);         absE = abs(E(t));        p1 = absE>=1;   %eq(1)        r = rand(1,n);        p2 = (r>=0.5) & (absE>=0.5) & (absE<1); %eq(4)        p3 = (r>=0.5) & (absE<0.5);  %eq(6)        p4 = (r<0.5) & (absE>=0.5) & (absE<1); %eq(10)        p5 = (r<0.5) & (absE<0.5); %eq(11)        %% update locations         rh = randi([1,n],1,n);        flag1 = rand(1,n)>=0.5;        Y = xr - E(t,:).*abs( J.*xr - X );        Z = Y + rand(d,n).*Levy(n);        flag2 = (objective(Y)<objective(Z)) & (objective(Y)<F);        flag3 = (objective(Y)>objective(Z)) & (objective(Z)<F);        flag4 = (~flag2) & (~flag3);        X_ =    p1.*(   (X(:,rh) - rand(1,n).*abs( X(:,rh) - 2*rand(1,n).*X )).*flag1 +...            ((X(:,rh) - mean(X)) - rand(1,n).*( lmt(:,1) + (lmt(:,2) - lmt(:,1)).*rand(d,n) )).*(~flag1)   )...            +   p2.*(   xr - X - E(t,:).*abs( J.*xr - X )   )...            +   p3.*(   xr - E(t,:).*abs( xr - X )   )...            +   p4.*(   Y.*flag2 + Z.*flag3 + ( lmt(:,1) + (lmt(:,2) - lmt(:,1)).*rand(d,n) ).*flag4  )...            +   p5.*(   Y.*flag2 + Z.*flag3 + ( lmt(:,1) + (lmt(:,2) - lmt(:,1)).*rand(d,n) ).*flag4  );        X_(:,i_rabbit) = xr;        X = X_;    endend%% Êä³ö-outputsperformance = [min(f_rabbit(:,T));mean(f_rabbit(:,T));std(f_rabbit(:,T))];timecost = toc;[fbst, ibst] = min(f_rabbit(:,T));xbst = x_rabbit(:,T,ibst);%% »æͼ-plot data% Convergence Curvefigure('Name','Convergence Curve');box onsemilogy(1:T,mean(f_rabbit,1),'b','LineWidth',1.5);xlabel('Iteration','FontName','Aril');ylabel('Fitness/Score','FontName','Aril');title('Convergence Curve','FontName','Aril');if d == 2    % Trajectory of Global Optimal    figure('Name','Trajectory of Global Optimal');    x1 = linspace(lmt(1,1),lmt(1,2));    x2 = linspace(lmt(2,1),lmt(2,2));    [X1,X2] = meshgrid(x1,x2);    V = reshape(objective([X1(:),X2(:)]'),[size(X1,1),size(X1,1)]);    contour(X1,X2,log10(V),100); % notice log10(V)    hold on    plot(x_rabbit(1,:,1),x_rabbit(2,:,1),'r-x','LineWidth',1);    hold off    xlabel('\it{x}_1','FontName','Time New Roman');    ylabel('\it{x}_2','FontName','Time New Roman');    title('Trajectory of Global Optimal','FontName','Aril');endend

3 仿真结果






免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空