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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部