%_________________________________________________________________________%
% 基于VMD和麻雀算法优化的核极限学习机(VMD-SSA-KELM)和VMD核极限学习机(VMD-KELM)时间序列预测
%_________________________________________________________________________%
clear
close all
clc
%% 导入数据
WTData = xlsread('WTData.xlsx', 'Sheet1', 'B2:B3673');
vmd(WTData,'NumIMFs',3)
[imf,res] = vmd(WTData,'NumIMFs',3);
Data=[imf res];
for k = 1 : size(Data, 2)
disp(['第 ',num2str(k),' 个分量的预测: '])
data(:,k) = Data(:, k);
delay=1; %时滞
data1 = [];
for i=1:length(data(:,k))-delay
data1(i,:)=data(i:i+delay,k)';
end
P = data1(:,1:end-1);
T = data1(:,end);
% 设定训练集与测试集
Len = size(data1, 1);
% testNum = 300;
testNum = round(Len*0.3);
trainNum = Len - testNum;
% 训练集
P_train = P(1:trainNum, :)';
T_train = T(1:trainNum, :)';
% 测试集
P_test = P(trainNum+1:trainNum+testNum,:)';
T_test = T(trainNum+1:trainNum+testNum,:)';
%% 归一化
[Pn_train ,ps]= mapminmax(P_train, 0, 1);
[Tn_train, ts] = mapminmax(T_train, 0, 1);
%测试集的归一化
Pn_test = mapminmax('apply', P_test, ps);
Tn_test = mapminmax('apply', T_test, ts);
%% 麻雀参数设置
pop=20; %种群数量
Max_iteration=30; % 设定最大迭代次数
dim = 2;% 维度为2,即优化两个参数,正则化系数 C 和核函数参数 S
lb = [0.0001,0.0001];%下边界
ub = [50,50];%上边界
fobj = @(x) fun(x,Pn_train,Tn_train,Pn_test,T_test,ts);
[Best_pos,Best_score,SSA_curve]=SSA(pop,Max_iteration,lb,ub,dim,fobj); %开始优化
figure
plot(SSA_curve,'linewidth',1.5);
grid on;
xlabel('迭代次数')
ylabel('适应度值')
title('麻雀收敛曲线')
%% 获取最优正则化系数 C 和核函数参数 S
Regularization_coefficient = Best_pos(1);
Kernel_para = Best_pos(2);
Kernel_type = 'rbf';
%% 训练
[~,OutputWeight] = kelmTrain(Pn_train,Tn_train,Regularization_coefficient,Kernel_type,Kernel_para);
% 测试
InputWeight = OutputWeight;
[TestOutT] = kelmPredict(Pn_train,InputWeight,Kernel_type,Kernel_para,Pn_test);
TestOut(k,:) = mapminmax('reverse',TestOutT,ts);
%% 基础KELM进行预测
Regularization_coefficient1 = 10;
Kernel_para1 = [4]; %核函数参数矩阵
Kernel_type = 'rbf';
%% 训练
[~,OutputWeight1] = kelmTrain(Pn_train,Tn_train,Regularization_coefficient1,Kernel_type,Kernel_para1);
%% 预测
InputWeight1 = OutputWeight1;
[TestOutT1] = kelmPredict(Pn_train,InputWeight1,Kernel_type,Kernel_para1,Pn_test);
TestOut1(k,:) = mapminmax('reverse',TestOutT1,ts);
end
TestOutT = sum(TestOut);
TestOutT1 = sum(TestOut1);
T = sum(data');
T_test = T(end - testNum + 1 : end);
disp('VMD-KELM误差指标计算: ')
[e1,ape1]=caculate_perf(T_test, TestOutT1);
disp(' ')
disp('VMD-SSA-KELM误差指标计算: ')
[e,ape]=caculate_perf(T_test, TestOutT);
figure
plot(T_test, 'b-','LineWidth',1.0)
hold on
plot(TestOutT1, 'k-','LineWidth',1.0)
hold on
plot(TestOutT, 'r-','LineWidth',1.0)
xlabel('测试样本')
ylabel('值')
legend('实际值', 'VMD-KELM', 'VMD-SSA-KELM')
grid on
title('基于VMD的SSA优化KELM模型测试集的预测值和实际值对比图')
figure
plot(e1, 'k-','LineWidth',1.0)
hold on
plot(e, 'r-','LineWidth',1.0)
xlabel('测试样本')
ylabel('误差')
legend('VMD-KELM', 'VMD-SSA-KELM')
grid on
title('基于VMD的SSA优化KELM模型测试集的预测误差对比图')
没有合适的资源?快使用搜索试试~ 我知道了~
MATLAB实现VMD-SSA-KELM和VMD-KELM变分模态分解结合麻雀算法优化核极限学习机时间序列预测(完整源码和数据)
共14个文件
m:8个
png:5个
xlsx:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 32 浏览量
2023-01-14
19:36:30
上传
评论 10
收藏 356KB ZIP 举报
温馨提示
MATLAB实现VMD-SSA-KELM和VMD-KELM变分模态分解结合麻雀算法优化核极限学习机时间序列预测(完整源码和数据) 1.Matlab实现VMD-SSA-KELM和VMD-KELM变分模态分解结合麻雀算法优化核极限学习机时间序列预测; 2.输入数据为单变量时间序列数据,即一维数据; 3.运行环境Matlab2018b及以上,WTData为数据集,运行主程序MainVMDSSAKELMTS,其余为函数文件无需运行,所有程序和数据放在一个文件夹; 4.麻雀算法优化两个参数,正则化系数 C 和核函数参数 S; 5.命令窗口输出MAE、MAPE、MSE、RMSE和R2; 6.预测效果:https://blog.csdn.net/kjm13182345320/article/details/128688197?spm=1001.2014.3001.5502
资源推荐
资源详情
资源评论
收起资源包目录
时序预测:VMD-SSA-KELM.zip (14个子文件)
VMD-SSA-KELMTS1.png 105KB
VMD-SSA-KELMTS5.png 37KB
VMD-SSA-KELMTS4.png 50KB
VMD-SSA-KELMTS2.png 39KB
VMD-SSA-KELMTS3.png 65KB
VMD_SSA_KELMTS
kelmPredict.m 805B
WTData.xlsx 76KB
kelmTrain.m 950B
initialization.m 567B
SSA.m 3KB
caculate_perf.m 513B
kernel_matrix.m 2KB
fun.m 659B
MainVMD_SSA_KELMTS.m 3KB
共 14 条
- 1
资源评论
- weixin_443767502023-04-26发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
- TOTOBOYY2023-04-02资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
- 丿。。。。2023-03-07这个资源总结的也太全面了吧,内容详实,对我帮助很大。
- ctrl+c+v工程师2023-09-02支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
机器学习之心
- 粉丝: 1w+
- 资源: 931
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功