【预测模型】基于粒子群算法PSO优化极限学习机ELM实现数据预测matlab源码

1 模型

为了提高空气质量预测精度,提出一种基于粒子群算法优化极限学习机的空气质量预测模型.运用粒子群算法优化极限学习机的初始权值和偏置,在保证预测误差最小的情况下实现空气质量最优预测.选择平均绝对百分比误差,均方根误差和平均绝对误差作为评价指标,通过PSO-ELM和ELM五个模型预测结果对比发现,PSO-ELM可以有效提高空气质量预报的预测精度,可为空气质量预测提供新的方法和途径.

2 部分代码

%% 初始化

clear

close all

clc

format shortg

warning off

addpath('func_defined')

%% 读取读取

data_train=xlsread('Data-tiaoshi.xlsx','Train','A1:E90'); %%使用xlsread函数读取EXCEL中对应范围的数据即可  

data_test=xlsread('Data-tiaoshi.xlsx','Test','A1:D20'); %%使用xlsread函数读取EXCEL中对应范围的数据即可  

%输入输出数据%% 划分训练集、测试集

input=data_train(:,1:end-1);    %data的第一列-倒数第二列为特征指标

output=data_train(:,end);  %data的最后面一列为输出的指标值

% output_test=data_test(:,end)';  %data的最后面一列为输出的指标值

N=length(output);   %全部样本数目

testNum=15;   %设定测试样本数目

trainNum=N-testNum;    %计算训练样本数目

input_train = input(1:trainNum,:)';

output_train =output(1:trainNum)';

input_test =input(trainNum+1:trainNum+testNum,:)';

output_test =output(trainNum+1:trainNum+testNum)';

%% 数据归一化

[inputn,inputps]=mapminmax(input_train,-1,1);

[outputn,outputps]=mapminmax(output_train);

inputn_test=mapminmax('apply',input_test,inputps);

%% 绘制进化曲线

figure(1)

plot(Convergence_curve,'r-','linewidth',2)

xlabel('进化代数')

ylabel('均方误差')

legend('最佳适应度')

title('PSO的进化曲线')

%% 优化后的参数训练ELM极限学习机模型

[IW1,B1,LW1,TF,TYPE] = elmtrain(inputn,outputn,hiddennum_best,gbest);          %IW1   B1  LW1为优化后的ELM求得的训练参数

%% 优化后的ELM模型测试

an1=elmpredict(inputn_test,IW1,B1,LW1,TF,TYPE); 

test_simu1=mapminmax('reverse',an1,outputps);

%误差指标

[mae1,mse1,rmse1,mape1,error1,errorPercent1]=calc_error(output_test,test_simu1);

%% 作图

figure(2)

plot(output_test,'g-.o','linewidth',1)

hold on

plot(test_simu0,'b-*','linewidth',1)

hold on

plot(test_simu1,'r-v','linewidth',1)

legend('真实值','ELM预测值','PSO-ELM预测值')

xlabel('测试样本编号')

ylabel('指标值')

title('优化前后的ELM模型预测值和真实值对比图')

figure(3)

plot(error0,'b-*','markerfacecolor','r')

hold on

plot(error1,'r-v','markerfacecolor','r')

legend('ELM预测误差','PSO-ELM预测误差')

xlabel('测试样本编号')

ylabel('预测偏差')

title('优化前后的ELM模型预测值和真实值误差对比图')

disp(' ')

disp('/')

disp('打印结果表格')

disp('样本序号     实测值      ELM预测值  PSO-ELM值   ELM误差   PSO-ELM误差')

for i=1:testNum

    disp([i output_test(i),test_simu0(i),test_simu1(i),error0(i),error1(i)])

end

input_test2=data_test(:,1:end)';    %data的第一列-倒数第二列为特征指标

inputn_test2=mapminmax('apply',input_test2,inputps);

an2=elmpredict(inputn_test2,IW1,B1,LW1,TF,TYPE); 

test_simu2=mapminmax('reverse',an2,outputps);

figure(5)

plot(test_simu2,'b-')

xlabel('测试样本编号')

ylabel('指标值')

3 仿真结果

4 参考文献

[1]庄玉册, 黎蔚. 基于PSO优化极限学习机神经网络的空气质量预报[J]. 沈阳工业大学学报, 2020, 042(002):213-217.

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SVM(支持向量机)是一种常用的模式识别和机器学习方法,使用维度高的数据集以及经过训练的样本进行分类。然而,在处理大规模或高维度的数据时,优化SVM模型的计算复杂度可能会变得非常高。 为了解决这个问题,我们可以使用粒子群算法PSO)来优化SVM模型的参数。PSO是一种基于群体智能的优化算法,通过模拟鸟群在搜索食物(最优解)时的行为来优化函数。在PSO中,有许多粒子(候选解)在搜索空间中迭代移动,并以粒子的最佳位置和整个群体的最佳位置为导向。 在Matlab中,我们可以使用PSO优化SVM模型的参数。首先,我们需要定义SVM模型的目标函数,例如分类精度。然后,我们初始化一群粒子并在每个迭代中更新它们的位置和速度。每个粒子的位置表示SVM参数的取值,如惩罚参数C和核函数参数。 通过计算目标函数,我们可以评估当前粒子的适应度,并选择最佳位置来更新个体和全局最佳。通过不断迭代更新粒子的位置和速度,最终可以找到使SVM模型达到最佳性能的参数。 以下是一个简单的Matlab源代码示例,演示了如何使用粒子群算法优化SVM模型的参数(C和核函数参数)。 ```matlab % SVM模型目标函数 function acc = SVMObjective(params) % 设置SVM模型参数C和核函数参数 C = params(1); kernelParam = params(2); % 创建并训练SVM模型 % 计算分类精度 % 返回分类精度作为优化目标 end % 定义粒子群算法参数 options = optimoptions('particleswarm', 'MaxIterations', 100, 'Display', 'iter'); % 定义优化的变量范围 lb = [0.1, 0.1]; % 参数下界 ub = [10, 10]; % 参数上界 % 运行粒子群算法优化SVM模型的参数 [params, acc] = particleswarm(@SVMObjective, 2, lb, ub, options); % 输出最优参数和分类精度 disp('最优参数:'); disp(params); disp('分类精度:'); disp(acc); ``` 这个示例演示了如何使用粒子群算法(Particle Swarm Optimization, PSO优化SVM模型的参数,以使其达到最佳分类精度。在实际应用中,您可以根据自己的数据集和问题定义适当的目标函数,并调整优化参数,以获得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值