【预测模型-ELM分类】基于鲸鱼算法优化核极限学习机实现数据分类附matlab代码

article/2025/3/5 10:42:08

 1 内容介绍

极限学习机(extreme learning machine,ELM)作为一种新兴的机器学习方法,已经成为了一个热门的研究方向。 ELM 随机确定单隐含层网络的输入权值和隐含层节点偏置,通过简单计算即可解析得到输出权值,不仅加快了学习速度,而且具有很好的泛化能力。 核函数 ELM 将核函数引入到极限学习机理论中,可以得到最小平方优化解,解决了

ELM 算法随机初始化问题,对模型学习参数具有较好的鲁棒性,具有更稳定的、更好的泛化性能。

2 仿真代码

function omega = kernel_matrix(Xtrain,kernel_type, kernel_pars,Xt)

nb_data = size(Xtrain,1);%nxm  样本数nb
if strcmp(kernel_type,'RBF_kernel'),
    if nargin<4,
        XXh = sum(Xtrain.^2,2)*ones(1,nb_data);%nxn
        omega = XXh+XXh'-2*(Xtrain*Xtrain');
        omega = exp(-omega./kernel_pars(1));
    else
        XXh1 = sum(Xtrain.^2,2)*ones(1,size(Xt,1));
        XXh2 = sum(Xt.^2,2)*ones(1,nb_data);
        omega = XXh1+XXh2' - 2*Xtrain*Xt';
        omega = exp(-omega./kernel_pars(1));
    end
    
elseif strcmp(kernel_type,'lin_kernel')
    if nargin<4,
        omega = Xtrain*Xtrain';
    else
        omega = Xtrain*Xt';
    end
    
elseif strcmp(kernel_type,'poly_kernel')
    if nargin<4,
        omega = (Xtrain*Xtrain'+kernel_pars(1)).^kernel_pars(2);
    else
        omega = (Xtrain*Xt'+kernel_pars(1)).^kernel_pars(2);
    end
    
elseif strcmp(kernel_type,'wav_kernel')
    if nargin<4,
        XXh = sum(Xtrain.^2,2)*ones(1,nb_data);
        omega = XXh+XXh'-2*(Xtrain*Xtrain');
        
        XXh1 = sum(Xtrain,2)*ones(1,nb_data);
        omega1 = XXh1-XXh1';
        omega = cos(kernel_pars(3)*omega1./kernel_pars(2)).*exp(-omega./kernel_pars(1));
        
    else
        XXh1 = sum(Xtrain.^2,2)*ones(1,size(Xt,1));
        XXh2 = sum(Xt.^2,2)*ones(1,nb_data);
        omega = XXh1+XXh2' - 2*(Xtrain*Xt');
        
        XXh11 = sum(Xtrain,2)*ones(1,size(Xt,1));
        XXh22 = sum(Xt,2)*ones(1,nb_data);
        omega1 = XXh11-XXh22';

clc;clear;close all
%% 将鲸鱼与改进鲸鱼用于函数极小值寻优,验证改进算法的有效性
% 优化函数极小值
popsize=10;
Max_iter=100;
dim=5;
[best0,pop0,trace0]=woa(popsize,Max_iter,dim);
best0
[best,pop,trace]=vnwoa(popsize,Max_iter,dim);
best
%%
figure
subplot(121)
plot(trace0)
hold on
plot(trace)
legend('woa','vnwoa')

subplot(122)
plot(log10(trace0))%对结果取对数 使结果更加直观
hold on
plot(log10(trace))
legend('woa','vnwoa')

 

function y=boundary(x,hmin,hmax);
[m n]=size(x);
for i=1:m
    for j=1:n
    if x(i,j)>=hmax
        x(i,j)=rand*(hmax-hmin)+hmin;
    elseif x(i,j)<=hmin
        x(i,j)=rand*(hmax-hmin)+hmin;
    end
end
y=x;

end%


% ylabel('样本标签')
% legend('真实标签', '预测标签');
% title(['KELM分类精度为:',num2str(acc*100),'%'])
xlabel('Number of test samples');
ylabel('Class label');
legend('Actual output label','Desired output label');
title(['Accuracy:',num2str(acc*100),'%']);
legend('boxoff');
hold off;        
        omega = cos(kernel_pars(3)*omega1./kernel_pars(2)).*exp(-omega./kernel_pars(1));
    end
end

function [Leader_score,Leader_pos,Convergence_curve]=woa(sizepop,Max_iter,dim)
lb=-100;
ub=100;
Convergence_curve=zeros(1,Max_iter);
for i=1:sizepop
    Positions(i,:)=rand(1,dim).*(ub-lb)+lb;
end
for i=1:sizepop
    p(i)=fun(Positions(i,:)); %计算当前个体适应度值
end
[~, index]=min(p);
Leader_pos=Positions(index,:);
Leader_score=p(index);

% Main loop
for t=1:Max_iter
    a=5-t*((2)/Max_iter); 
    a2=-1+t*((-1)/Max_iter);
    for i=1:size(Positions,1)
        r1=rand; 
        r2=rand; 
        
        A=2*a*r1-a;
        C=2*r2;    
        b=1;               
        l=(a2-1)*rand+1;   
        p = rand;        
        for j=1:size(Positions,2)
            
            if p<0.5
                if abs(A)>=1
                    rand_leader_index = floor(sizepop*rand+1);
                    X_rand = Positions(rand_leader_index, :);
                    D_X_rand=abs(C*X_rand(j)-Positions(i,j)); 
                    Positions(i,j)=X_rand(j)-A*D_X_rand;      
                    
                elseif abs(A)<1
                    D_Leader=abs(C*Leader_pos(j)-Positions(i,j));
                    Positions(i,j)=Leader_pos(j)-A*D_Leader;
                end
                
            elseif p>=0.5
                distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);
            end
            
        end
        
        Positions(i,:)=boundary(Positions(i,:),lb,ub);
        
        fitness=fun(Positions(i,:));
     
        if fitness<Leader_score 
            Leader_score=fitness;
            Leader_pos=Positions(i,:);
        end
    end
    
    Convergence_curve(t)=Leader_score;
end

function f =luoyiman_localbest(x1,x2,x3,x4,x5)
%求解当前个体粒子环形邻域中的局部最优,然后用这个局部最优替换当前个体
K0=[x1;x2;x3;x4;x5];
K1=[fun(x1), ...
    fun(x2), ...
    fun(x3), ...
    fun(x4), ...
    fun(x5)];
[~ ,index]=min(K1);
f=K0(index,:);

function fit=fun(pop)
% 这3种函数的最小值都是0

%1.sphere函数
% fit=sum(pop.^2);

%2. ackly函数
% fit=-20*exp(-0.2*sqrt(mean(pop.^2)))-exp(mean(cos(2*pi.*pop)))+20+exp(1);

% 3.rastrigin's函数
fit=20+pop(1)^2+pop(2)^2-10*(cos(2*pi*pop(1))+cos(2*pi*pop(2)));


 

3 运行结果

4 参考文献

[1]吴忠强, 卢雪琴, 何怡林,等. 基于鲸鱼算法优化极限学习机的微电网故障诊断方法[J]. 智慧电力, 2022, 50(2):7.

[2]郭延华, 赵帅. 基于KPCA-WOA-KELM的岩爆烈度预测[J]. 河北工程大学学报:自然科学版, 2021, 38(2):7.

[3]裘日辉, 刘康玲, 谭海龙,等. 基于极限学习机的分类算法及在故障识别中的应用[J]. 浙江大学学报:工学版, 2016, 50(10):8.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


http://chatgpt.dhexx.cn/article/wy2icClH.shtml

相关文章

【ELM预测】基于极限学习机ELM实现数据预测matlab源码

一、极限学习机的概念 极限学习机(Extreme Learning Machine) ELM&#xff0c;是由黄广斌提出来的求解单隐层神经网络的算法。 ELM最大的特点是对于传统的神经网络&#xff0c;尤其是单隐层前馈神经网络(SLFNs)&#xff0c;在保证学习精度的前提下比传统的学习算法速度更快。 二…

【ELM数据预测】粒子群算法优化ELM数据预测(含前后对比)【含Matlab源码 449期】

⛄一、粒子群算法优化极限学习机ELM简介 PSO-ELM优化算法预测模型 ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建。在ELM模型的构建中, 只需确定初始ω和b, 而无需复杂的参数设置, 具有学习速度快、泛化…

免费不限速不限存储的网盘推荐

网盘这种东西倒闭的太多了&#xff0c;这年头存点东西真不容易&#xff0c;以前也陆陆续续用过很多网盘&#xff0c;但一直没统计&#xff0c;最近终于发现了一款好用的免费网盘推荐给大家。 替代对象&#xff1a;某度网盘 空间&#xff1a;超级会员免任务扩容至5T空间&…

“白嫖”时代进入最后倒计时,网盘行业到底是怎么由盛及衰的?

继金山网盘、UC网盘、新浪网盘、360网盘等等关停之后&#xff0c;网易网盘也要和大家说再见了。这是目前市场上最后一家完全免费的网盘&#xff0c;网易网盘的淡出也意味着网盘的免费时代终于还是画上了句号。 近日&#xff0c;网易宣布由于产品调整&#xff0c;网易网盘将于20…

在线付费听音乐平台网站源码

介绍&#xff1a; 越来越多音乐需要付费 今天免费给大家一款在线音乐源码 所有音乐免费听 付费音乐也可以 网盘下载地址&#xff1a; http://kekewl.org/PaFDdLJmVpB 图片&#xff1a;

「保护数据 人人有责」搭建免费可用的私有云 Next Cloud

前言 对于咱们个人来讲&#xff0c;早年都是白嫖各大厂商的公有云&#xff0c;各大厂商疯狂送空间&#xff0c;送起来像慈善家一样&#xff0c;一个T一个T的&#xff0c;但是随着时间的推移&#xff0c;以360网盘为代表的一批网盘倒下去了&#xff0c;上传的数据也只能再下载回…

微擎后端/知识付费阅读店铺小程序 V5.1.0 全套源码

简介&#xff1a; 更新动态&#xff1a; 版本号&#xff1a;5.1.0 – 普通版 [优化]优化后台基本设置操作体验 [优化]优化会员折扣功能的折后金额计算方式 [优化]优化视频文章预加载方式 [优化]优化全局图片懒加载流程 知识店铺内容付费阅读小程序&#xff0c;帮您轻松实现内容…

2023 诚通网盘在线解析无广告高速下载网站源码

对于用户来说&#xff0c;上传下载应该是网盘最大的痛点。而上传资源网盘肯定不会做限制&#xff0c;因为上传的资源越多&#xff0c;网盘占的市场份额会越大&#xff0c;所以只能从下载方面入手。 1.所以现在除了阿里外&#xff0c;其他的网盘不付费那就是给你几十K的速度&am…

又一知名云盘翻车:“免费不限量”变收费,用户被骗 5 年!

微信搜索逆锋起笔关注后回复编程pdf领取编程大佬们所推荐的 23 种编程资料&#xff01; 来源&#xff1a;扩展迷Extfans 互联网公司的套路有多深&#xff1f;坦白说&#xff0c;它们本质上没有任何区别。 最常见的操作大概就是&#xff1a;前期以各种免费福利圈养用户&#xff…

网盘的成本有多高?一个网盘成本是多少?

众所周知&#xff0c;中国的互联网产品都是建立在免费基础上的&#xff0c;当然这不是对企业&#xff0c;而是面向个人用户。 网盘作为现今存文件分享内容的一款新时代的云上U盘&#xff0c;几乎每个年轻人都有&#xff0c;目前比较有名的就是百度网盘&#xff0c;其他的几乎可…

百度网盘海外版免费不限速:真就是老用户与狗不得享受优惠?

去年9月30号&#xff0c;百度网盘宣布&#xff1a;以前享受2T免费空间的用户&#xff0c;有一部分将调整为100G。 当然了&#xff0c;付费用户肯定是不受影响的。 而免费的用户&#xff0c;除了空间被砍之外&#xff0c;那下载速度也…怎么说呢&#xff0c;硬是让我回忆起当年拨…

专业网盘设计分析

预计未来相当一段时间的主要精力会集中在优化一个行业专业网盘&#xff0c;其中主要的挑战是 大数据&#xff0c;某个行业第一公司一次迁移12TB 的业务资料&#xff0c;一个是并发&#xff0c;虽然是TB 业务&#xff0c;但是网盘的数据权限是企业主账户&#xff0c;一个主账户下…

新版知识付费系统付费阅读小程序源码知识付费平台

介绍&#xff1a; 2021知识付费系统付费阅读小程序源码知识付费平台源码。 知识付费的小程序源码的作用我就不多说了&#xff0c;现在都是知识付费的年代&#xff0c;也是付费学习的时代。 知识付费阅读小程序&#xff0c;带有代理&#xff0c;分销&#xff0c;课程资源更新等…

五大主流云盘横评对比,百度、腾讯、115、iCloud、OneDrive哪家更值得付费?

五大主流云盘横评对比&#xff0c;百度、腾讯、115、iCloud、OneDrive哪家更值得付费&#xff1f; 前言各大云盘免费服务对比各大云盘付费服务对比照片视频备份文件历史版本各家云盘会员购买建议百度网盘腾讯微云115网盘iCloudOneDrive 云盘安全吗&#xff1f;结尾 前言 互联网…

百度网盘无需开会员也能享受高速下载通道

实现背景 网盘属于特殊产物&#xff0c;对于大多数人而言&#xff0c;这只是一个偶尔需要用到的产品&#xff0c;所以付费意愿相对视频会员这些产品会相对没更低&#xff0c;再加上一些你懂的原因&#xff0c;让网盘的运营变得很困难&#xff0c;最终导致了目前国内的网盘现状…

【独立版】智创云享知识付费小程序V2_2.3.13知识付费小程序,含前端和资源库

应用介绍 【独立版】智创云享知识付费小程序V2_2.3.13知识付费小程序&#xff0c;含前端和资源库&#xff01; 智创云享知识付费系统是一款基于ThinkPHP6框架开发的虚拟资源知识付费小程序&#xff0c;为广大创业者、自媒体及培训机构提供知识付费、内容付费、资源变现等领域…

百度云盘停止服务器,又一家网盘关闭!不要再问为什么百度网盘要收费了

网盘一直是不少小伙伴采用的资料存储工具&#xff0c;看电影、刷剧、分享文件都非常的便捷&#xff0c;日渐变为广大用户工作、生活中必备的工具。然而&#xff0c;近年来国内的网盘运营商越来越少&#xff0c;继360云盘、金山网盘、迅雷快盘等产品之后&#xff0c;网易网盘也在…

【完美运营】创云享知识付费系统V2

创云享知识付费系统,定位于为广大创业者、自媒体及培训机构提供知识付费、内容付费、资源变现等领域的行业解决方案;全场景内容付费应用,多渠道营销推广方式、多种资源类型:付费文章、网盘资源、视频资源、音频课程、视频课程、卡密资源,轻松实现资源内容全方位运营变现。…

PHP云盘网盘系统源码+快速对接多家云存储+VIP付费下载功能

源码介绍&#xff1a; 快速对接多家云存储&#xff0c;支持腾讯云COS、阿里云OSS、自建远程服务器&#xff0c;当然&#xff0c;还有本地存储。 带3种主题和2种下载界面主题。 图片、音频、视频、文本。 移动端全站响应式布局。 文件、目录分享系统&#xff0c;可创建提取码分享…

docker实践第二版pdf 网盘_和付费网盘说再见,跟着本文自己起个网盘(Java 开源项目)

本文适合有 Java 基础知识的人群&#xff0c;跟着本文可学习和运行 Java 网盘项目。 本文作者&#xff1a;HelloGitHub-秦人 HelloGitHub 推出的《讲解开源项目》系列。 今天给大家带来一款开源 Java 版网盘项目—— kiftd-source&#xff0c;本文将用 3 分钟带大家搭建一个个人…