| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【预测模型】基于麻雀算法优化最小二乘支持向量机实现数据分类matlab代码 -> 正文阅读 |
|
[数据结构与算法]【预测模型】基于麻雀算法优化最小二乘支持向量机实现数据分类matlab代码 |
1 简介预测模型参数的选取对其泛化能力和预测准确度,起着至关重要作用.基于径向基核函数的最小二乘支持向量机参数主要涉及惩罚因子和核函数参数,这两个参数的选择将直接影响最小二乘支持向量机的学习和泛化能力.为了提高最小二乘支持向量机的预测结果,文章用麻雀优化算法对其参数寻优,建立数据分类模型.通过实验证明了该模型,对数据分类表现出很好的效果. 2 部分代码%_________________________________________________________________________% % 麻雀优化算法? ? ? ? ? ? ?% %_________________________________________________________________________% function [Best_pos,Best_score,curve]=SSA(pop,Max_iter,lb,ub,dim,fobj) ST = 0.6;%预警值 PD = 0.7;%发现者的比列,剩下的是加入者 SD = 0.1;%意识到有危险麻雀的比重 PDNumber = round(pop*PD); %发现者数量 SDNumber = round(pop*SD);%意识到有危险麻雀数量 if(max(size(ub)) == 1) ? ?ub = ub.*ones(1,dim); ? ?lb = lb.*ones(1,dim);?? end %种群初始化 X0=initialization(pop,dim,ub,lb); X = X0; %计算初始适应度值 fitness = zeros(1,pop); for i = 1:pop ? ?fitness(i) =? fobj(X(i,:)); end ?[fitness, index]= sort(fitness);%排序 BestF = fitness(1); WorstF = fitness(end); GBestF = fitness(1);%全局最优适应度值 for i = 1:pop ? ? X(i,:) = X0(index(i),:); end curve=zeros(1,Max_iter); GBestX = X(1,:);%全局最优位置 X_new = X; for i = 1: Max_iter ? ?? ? ? BestF = fitness(1); ? ? WorstF = fitness(end); ? ?? ? ? R2 = rand(1); ? ?for j = 1:PDNumber ? ? ? if(R2<ST) ? ? ? ? ? X_new(j,:) = X(j,:).*exp(-j/(rand(1)*Max_iter)); ? ? ? else ? ? ? ? ? X_new(j,:) = X(j,:) + randn()*ones(1,dim); ? ? ? end? ? ? ? ?end ? ?for j = PDNumber+1:pop %? ? ? ? if(j>(pop/2)) ? ? ? ? if(j>(pop - PDNumber)/2 + PDNumber) ? ? ? ? ? X_new(j,:)= randn().*exp((X(end,:) - X(j,:))/j^2); ? ? ? ?else ? ? ? ? ? %产生-1,1的随机数 ? ? ? ? ? A = ones(1,dim); ? ? ? ? ? for a = 1:dim ? ? ? ? ? ? if(rand()>0.5) ? ? ? ? ? ? ? ? A(a) = -1; ? ? ? ? ? ? end ? ? ? ? ? end? ? ? ? ? ? AA = A'*inv(A*A');? ? ? ? ? ? ? ? X_new(j,:)= X(1,:) + abs(X(j,:) - X(1,:)).*AA'; ? ? ? ?end ? ?end ? ?Temp = randperm(pop); ? ?SDchooseIndex = Temp(1:SDNumber);? ? ?for j = 1:SDNumber ? ? ? ?if(fitness(SDchooseIndex(j))>BestF) ? ? ? ? ? ?X_new(SDchooseIndex(j),:) = X(1,:) + randn().*abs(X(SDchooseIndex(j),:) - X(1,:)); ? ? ? ?elseif(fitness(SDchooseIndex(j))== BestF) ? ? ? ? ? ?K = 2*rand() -1; ? ? ? ? ? ?X_new(SDchooseIndex(j),:) = X(SDchooseIndex(j),:) + K.*(abs( X(SDchooseIndex(j),:) - X(end,:))./(fitness(SDchooseIndex(j)) - fitness(end) + 10^-8)); ? ? ? ?end ? ?end ? ?%边界控制 ? ?for j = 1:pop ? ? ? ?for a = 1: dim ? ? ? ? ? ?if(X_new(j,a)>ub(a)) ? ? ? ? ? ? ? ?X_new(j,a) =ub(a); ? ? ? ? ? ?end ? ? ? ? ? ?if(X_new(j,a)<lb(a)) ? ? ? ? ? ? ? ?X_new(j,a) =lb(a); ? ? ? ? ? ?end ? ? ? ?end ? ?end? ? ?%更新位置 ? ?for j=1:pop ? ? fitness_new(j) = fobj(X_new(j,:)); ? ?end ? ?for j = 1:pop ? ? if(fitness_new(j) < GBestF) ? ? ? ?GBestF = fitness_new(j); ? ? ? ? GBestX = X_new(j,:);? ? ? ? end ? ?end ? ?X = X_new; ? ?fitness = fitness_new; ? ? %排序更新 ? ?[fitness, index]= sort(fitness);%排序 ? ?BestF = fitness(1); ? ?WorstF = fitness(end); ? ?for j = 1:pop ? ? ? X(j,:) = X(index(j),:); ? ?end ? ?curve(i) = GBestF; end Best_pos =GBestX; Best_score = curve(end); end 3 仿真结果4 参考文献[1]陈鑫等. "基于改进麻雀搜索算法与支持向量机的光纤陀螺故障诊断." 空军工程大学学报:自然科学版 22.3(2021):8. |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 14:52:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |