您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > ELM代码matlab
Elmtrain.m(训练代码)function[IW,B,LW,TF,TYPE]=elmtrain(P,T,N,TF,TYPE)%ELMTRAINCreateandTrainaExtremeLearningMachine%Syntax%[IW,B,LW,TF,TYPE]=elmtrain(P,T,N,TF,TYPE)%Description%Input%P-InputMatrixofTrainingSet(R*Q)%T-OutputMatrixofTrainingSet(S*Q)%N-NumberofHiddenNeurons(default=Q)%TF-TransferFunction:%'sig'forSigmoidalfunction(default)%'sin'forSinefunction%'hardlim'forHardlimfunction%TYPE-Regression(0,default)orClassification(1)%Output%IW-InputWeightMatrix(N*R)%B-BiasMatrix(N*1)%LW-LayerWeightMatrix(N*S)%Example%Regression:%[IW,B,LW,TF,TYPE]=elmtrain(P,T,20,'sig',0)%Y=elmtrain(P,IW,B,LW,TF,TYPE)%Classification%[IW,B,LW,TF,TYPE]=elmtrain(P,T,20,'sig',1)%Y=elmtrain(P,IW,B,LW,TF,TYPE)%SeealsoELMPREDICT%YuLei,11-7-2010%Copyright:1.0$ifnargin2error('ELM:Arguments','Notenoughinputarguments.');endifnargin3N=size(P,2);endifnargin4TF='sig';endifnargin5TYPE=0;endifsize(P,2)~=size(T,2)error('ELM:Arguments','ThecolumnsofPandTmustbesame.');end[R,Q]=size(P);ifTYPE==1T=ind2vec(T);end[S,Q]=size(T);%RandomlyGeneratetheInputWeightMatrixIW=rand(N,R)*2-1;%RandomlyGeneratetheBiasMatrixB=rand(N,1);BiasMatrix=repmat(B,1,Q);%CalculatetheLayerOutputMatrixHtempH=IW*P+BiasMatrix;switchTFcase'sig'H=1./(1+exp(-tempH));case'sin'H=sin(tempH);case'hardlim'H=hardlim(tempH);end%CalculatetheOutputWeightMatrixLW=pinv(H')*T';Elmpredict.m(预测代码)functionY=elmpredict(P,IW,B,LW,TF,TYPE)%ELMPREDICTSimulateaExtremeLearningMachine%Syntax%Y=elmtrain(P,IW,B,LW,TF,TYPE)%Description%Input%P-InputMatrixofTrainingSet(R*Q)%IW-InputWeightMatrix(N*R)%B-BiasMatrix(N*1)%LW-LayerWeightMatrix(N*S)%TF-TransferFunction:%'sig'forSigmoidalfunction(default)%'sin'forSinefunction%'hardlim'forHardlimfunction%TYPE-Regression(0,default)orClassification(1)%Output%Y-SimulateOutputMatrix(S*Q)%Example%Regression:%[IW,B,LW,TF,TYPE]=elmtrain(P,T,20,'sig',0)%Y=elmtrain(P,IW,B,LW,TF,TYPE)%Classification%[IW,B,LW,TF,TYPE]=elmtrain(P,T,20,'sig',1)%Y=elmtrain(P,IW,B,LW,TF,TYPE)%SeealsoELMTRAIN%YuLei,11-7-2010%Copyright:1.0$ifnargin6error('ELM:Arguments','Notenoughinputarguments.');end%CalculatetheLayerOutputMatrixHQ=size(P,2);BiasMatrix=repmat(B,1,Q);tempH=IW*P+BiasMatrix;switchTFcase'sig'H=1./(1+exp(-tempH));case'sin'H=sin(tempH);case'hardlim'H=hardlim(tempH);end%CalculatetheSimulateOutputY=(H'*LW)';ifTYPE==1temp_Y=zeros(size(Y));fori=1:size(Y,2)[max_Y,index]=max(Y(:,i));temp_Y(index,i)=1;endY=vec2ind(temp_Y);end极限学习机在回归拟合问题中的应用研究(主程序)%%清空环境变量clearallclc%%导入数据loaddata%随机生成训练集、测试集k=randperm(size(input,1));%训练集——1900个样本P_train=input(k(1:1900),:)';T_train=output(k(1:1900));%测试集——100个样本P_test=input(k(1901:2000),:)';T_test=output(k(1901:2000));%%归一化%训练集[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,20,'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))%%绘图figureplot(1:length(T_test),T_test,'r*')holdonplot(1:length(T_sim),T_sim,'b:o')xlabel('测试集样本编号')ylabel('测试集输出')title('ELM测试集输出')legend('期望输出','预测输出')figureplot(1:length(T_test),T_test-T_sim,'r-*')xlabel('测试集样本编号')ylabel('绝对误差')title('ELM测试集预测误差')%%极限学习机在分类问题中的应用研究%%清空环境变量clearallclcwarningoff%%导入数据loaddata.mat%随机产生训练集/测试集a=randperm(569);Train=data(a(1:500),:);Test=data(a(501:end),:);%训练数据P_train=Train(:,3:end)';T_train=Train(:,2)';%测试数据P_test=Test(:,3:end)';T_test=Test(:,2)';tic%%ELM创建/训练[IW,B,LW,TF,TYPE]=elmtrain(P_train,T_train,100,'sig',1);%%ELM仿真测试T_sim_1=elmpredict(P_train,IW,B,LW,TF,TYPE);T_sim_2=elmpredict(P_test,IW,B,LW,TF,TYPE);toc%%结果对比result_1=[T_train'T_sim_1'];result_2=[T_test'T_sim_2'];%训练集正确率k1=length(find(T_train==T_sim_1));n1=length(T_train);Accuracy_1=k1/n1*100;disp(['训练集正确率Accuracy='num2str(Accuracy_1)'%('num2str(k1)'/'num2str(n1)')'])%测试集正确率k2=length(find(T_test==T_sim_2));n2=length(T_test);Accuracy_2=k2/n2*100;disp(['测试集正确率Accuracy='num2str(Accuracy_2)'%('num2str(k2)'/'num2str(n2)')'])%%显示count_B=length(find(T_train==1));count_M=length(find(T_train==2));rate_B=count_B/500;rate_M=count_M/500;total_B=length(find(data(:,2)==1));total_M=length(find(data(:,2)==2));number_B=length(find(T_test==1));number_M=length(find(T_test==2));number_B_sim=length(find(T_sim_2==1&T_test==1));number_M_sim=length(find(T_sim_2==2&T_test==2));disp(['病例总数:'num2str(569)...'良性:'num2str(total_B)...'恶性:'num2str(total_M)]);disp(['训练集病例总数:'num2str(500)...'良性:'num2str(count_B)...'恶性:'num2str(count_M)]);disp(['测试集病例总数:'num2str(69)...'良性:'num2str(number_B)...'恶性:'num2str(number_M)]);disp(['良性乳腺肿瘤确诊:'num2str(number_B_sim)...'误诊:'num2str(number_B-number_B_sim)...'确诊率p1='num2str(number_B_sim/number_B*100)'%']);disp(['恶性乳腺肿瘤确诊:'num2str(number_M_sim)...'误诊:'num2s
本文标题:ELM代码matlab
链接地址:https://www.777doc.com/doc-4949180 .html