ELM极限学习机与BP神经网络两种预测方法对比
极限学习机
ELM
%%
clc
clear all
%%
a = xlsread('BP_shiwaituishinei'); %导入数据
n = randperm(size( a,1)) %产生随机数
a1 = a(n(1:800),:) %训练数据 输入集
a2 = a(n(800:end),:) %训练数据输入集
P_train = a1(:,(1:5))' %测试数据输入量
T_train = a1(:,6)' %输出量
P_test = a2(:,(1:5))' %输入量
T_test = a2(:,6)' %输出量
%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train,-1,1);
Pn_test = mapminmax('apply',P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train,-1,1);
Tn_test = mapminmax('apply',T_test,outputps);
tic
%% ELM创建/训练
[IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,9,'sig',0);
%% ELM仿真测试
Tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
% 反归一化
T_sim = mapminmax('reverse',Tn_sim,outputps);
toc
%% 结果对比
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
subplot(2,1,1)
plot(1:length