elm预测matlab,ELM预测算法,可以运行的
大家好,我修改了一下ELM预测代码,可以跑出来的,大家有需要的可以拿走。但是有个问题,算法里面的数据是随机训练和预测的,但我想让前64组数据做训练,后5组数据做预测,应该怎么修改呢,麻烦大神帮帮忙,谢谢啦。
%% 极限学习机的回归拟合及分类
clear all
clc
%% 训练集/测试集产生
%load spectra_data.mat
NIR=[60 0.1 0.5 50
60 0.1 1 49
60 0.1 1.5 47
60 0.1 2 44
60 0.15 0.5 40
60 0.15 1 39
60 0.15 1.5 37
60 0.15 2 34
60 0.2 0.5 50
60 0.2 1 49
60 0.2 1.5 47
60 0.2 2 44
60 0.25 0.5 40
60 0.25 1 39
60 0.25 1.5 37
60 0.25 2 34
80 0.1 0.5 50
80 0.1 1 49
80 0.1 1.5 47
80 0.1 2 44
80 0.15 0.5 40
80 0.15 1 39
80 0.15 1.5 37
80 0.15 2 34
80 0.2 0.5 50
80 0.2 1 49
80 0.2 1.5 47
80 0.2 2 44
80 0.25 0.5 40
80 0.25 1 39
80 0.25 1.5 37
80 0.25 2 34
100 0.1 0.5 50
100 0.1 1 49
100 0.1 1.5 47
100 0.1 2 44
100 0.15 0.5 40
100 0.15 1 39
100 0.15 1.5 37
100 0.15 2 34
100 0.2 0.5 50
100 0.2 1 49
100 0.2 1.5 47
100 0.2 2 44
100 0.25 0.5 40
100 0.25 1 39
100 0.25 1.5 37
100 0.25 2 34
120 0.1 0.5 50
120 0.1 1 49
120 0.1 1.5 47
120 0.1 2 44
120 0.15 0.5 40
120 0.15 1 39
120 0.15 1.5 37
120 0.15 2 34
120 0.2 0.5 50
120 0.2 1 49
120 0.2 1.5 47
120 0.2 2 44
120 0.25 0.5 40
120 0.25 1 39
120 0.25 1.5 37
120 0.25 2 34
70 0.12 0.6 50
90 0.15 0.8 49
90 0.16 1 47
100 0.18 1 44
110 0.2 1.2 40]
octane=[1440.8
1576.8
1837.1
2013.9
1609.1
1960.1
2334.1
2742
1425.2
1958.6
2404.7
2869.2
1706.4
2326.4
2878.4
3463.3
1583.9
1947.3
2280
2638.8
1909.5
2446.1
2924.4
3448.1
1880.6
2432.3
3001
3594.3
2236.6
2911.3
3615.8
4364.4
1894.4
2312.7
2715.2
3150.4
2325.7
2924.8
3503.8
4139.7
2231.5
2896.5
3583.2
4300.7
2551
3485
4336.2
5242.8
2232.9
2574
3144.4
3654
2659.1
3398
4074.9
4820.2
2478.7
3153.5
4154.5
4692.8
3101.3
3849.8
4743.6
5704
1590.6
2221.7
2504.3
2922.8
3703.8]
% 随机产生训练集和测试集
temp =randperm(size(NIR,1));
% 训练集——64个样本
P_train = NIR(temp(1:64),:)';
T_train = octane(temp(1:64),:)';
% 测试集——5个样本
P_test = NIR(temp(65:end),:)';
T_test = octane(temp(65:end),:)';
N = size(P_test,2);
%% 数据归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train);
Pn_test = mapminmax('apply',P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train);
Tn_test = mapminmax('apply',T_test,outputps);
%% ELM创建/训练
[IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
%% ELM仿真测试
tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
% 反归一化
T_sim = mapminmax('reverse',tn_sim,outputps);
%% 结果对比
result = [T_test' T_sim'];
% 均方误差
E = mse(T_sim - T_test);
% 决定系数
N = length(T_test);
R2=(N*sum(T_sim.*T_test)-sum(T_sim)*sum(T_test))^2/((N*sum((T_sim).^2)-(sum(T_sim))^2)*(N*sum((T_test).^2)-(sum(T_test))^2));
%% 绘图
figure(1)
plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')
grid on
legend('真实值','预测值')
xlabel('样本编号')
ylabel('仿真结果')
string = {'测试集预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};
title(string)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
