一、运行结果
二、ORELM简介
理论知识参考:基于MRMR的ORELM的短期风速预测
三、部分源代码
clear all;clc;
addpath(genpath('./.'));
%rng('default');
%%%------------------------------------------------------------------------
%%% Load Data
%%%------------------------------------------------------------------------
%[traindata,trainlabel,testdata,testlabel] = sinc_Huang;
[traindata,trainlabel,testdata,testlabel] = sinc_K(0.4);
%%%------------------------------------------------------------------------
%%% Global Setting
%%%------------------------------------------------------------------------
nn.hiddensize = 20;
method = {'ELM','RELM','WRELM','ORELM'};
type = {'regression','classification'};
nn.type = type{1};
nn.inputsize = size(traindata,1);
nn.activefunction = 's';
nn.orthogonal = false;
fprintf(' method | Training Acc. | Testing Acc. | Training Time \n');
%%%------------------------------------------------------------------------
%%% ELM / Original ELM
%%%------------------------------------------------------------------------
nn.method = method{1};
nn = elm_initialization(nn);
[nn, acc_train] = elm_train(traindata, trainlabel, nn);
[nn1, acc_test] = elm_test(testdata, testlabel, nn);
fprintf(' %19s | %.3f | %.5f | %.5f \n',nn.method,acc_train,acc_test,nn.time_train);
%%%------------------------------------------------------------------------
%%% RELM / Regularized ELM
%%%------------------------------------------------------------------------
nn.method = method{2};
nn = elm_initialization(nn);
nn.C = 0.0001;
[nn, acc_train] = elm_train(traindata, trainlabel, nn);
[nn2, acc_test] = elm_test(testdata, testlabel, nn);
fprintf(' %19s | %.3f | %.5f | %.5f \n',nn.method,acc_train,acc_test,nn.time_train);
%%%------------------------------------------------------------------------
%%% WRELM / Weighted Regularized ELM
%%%------------------------------------------------------------------------
nn.method = method{3};
nn.wfun = '1';
nn.scale_method = 1;
nn = elm_initialization(nn);
nn.C = 2^(-20);
[nn, acc_train] = elm_train(traindata, trainlabel, nn);
[nn3, acc_test] = elm_test(testdata, testlabel, nn);
fprintf(' %19s | %.3f | %.5f | %.5f \n',nn.method,acc_train,acc_test,nn.time_train);
%%%------------------------------------------------------------------------
%%% ORELM / Outlier-Robust ELM
%%%------------------------------------------------------------------------
nn.method = method{4};
nn = elm_initialization(nn);
nn.C = 2^(-40);
[nn, acc_train] = elm_train(traindata, trainlabel, nn);
[nn4, acc_test] = elm_test(testdata, testlabel, nn);
fprintf(' %19s | %.3f | %.5f | %.5f \n',nn.method,acc_train,acc_test,nn.time_train);
%%%------------------------------------------------------------------------
%%% Plot
%%%------------------------------------------------------------------------
function [nn, acc_test] = elm_test(X,Y,nn)
ndata = size(X, 2);
tempH = nn.W*X + repmat(nn.b,1,ndata);
switch lower(nn.activefunction)
case{'s','sig','sigmoid'}
H = 1 ./ (1 + exp(-tempH));
case{'t','tanh'}
H = tanh(tempH);
end
Y_hat = nn.beta*H;
if ismember(nn.type,{'c','classification','Classification'})
[~,label_actual] = max(Y_hat,[],1);
[~,label_desired] = max(Y,[],1);
acc_test = sum(label_actual==label_desired)/ndata;
else
normfro = norm(Y-Y_hat,'fro');
acc_test = sqrt(normfro^2/ndata);
% acc_test = sqrt(mse(Y-Y_hat));
end
nn.testlabel = Y_hat;
nn.acc_test = acc_test;
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
[6]王琦,关添升,秦本双.基于MRMR的ORELM的短期风速预测[j].可再生能源. 2018,36(01)