%% 清空环境变量 GA+elm
clc
clear
close all
format compact
%% 读取数据
traindata=xlsread('最终数据(1).xlsx','训练样本1','B3:E37');%3分类
testdata=xlsread('最终数据(1).xlsx','测试样本','B3:E11');
input_train=traindata(:,1:end-1)';
input_test=testdata(:,1:end-1)';
label_train=traindata(:,end)';
label_test=testdata(:,end)';
output_train=zeros(3,length(label_train));
output_test=zeros(3,length(label_test));
for i=1:length(label_train)
output_train(label_train(i),i)=1;
end
for i=1:length(label_test)
output_test(label_test(i),i)=1;
end
%归一化
[inputn_train,inputps]=mapminmax(input_train);
[inputn_test,inputtestps]=mapminmax('apply',input_test,inputps);
%% 没有优化的ELM
[IW,B,LW,TF,TYPE] = elmtrain(inputn_train,label_train,5,'sig',1);
title('没有优化的ELM训练集')
%% ELM仿真测试
Tn_sim = elmpredict(inputn_test,IW,B,LW,TF,TYPE);
test_accuracy=(sum(label_test==Tn_sim))/length(label_test)
figure
stem(label_test,'*')
hold on
plot(Tn_sim,'p')
title('没有优化的ELM测试集')
legend('期望输出','实际输出')
xlabel('样本数')
ylabel('类别标签')
%% 节点个数
inputnum=size(input_train,1);
hiddennum=5;
SG=5;
[bestchrom,trace]=gaforelm(SG,inputnum,hiddennum,inputn_train,label_train,inputn_test,label_test);%遗传算法
x=bestchrom;
% %% 优化后结果分析
% figure % 测试样本太少,加上使用爬山法之后,经常只需要一两次就能跳出循环 因此 适应度曲线经常都是一条直线,所以这个已经没什么意义来了
% [r c]=size(trace);
% plot(trace,'b--');
% title('适应度曲线图')
% xlabel('进化代数');ylabel('诊断正确率');
%% 把最优初始阀值权值赋予ELM重新训练与预测
if TYPE == 1
T1 = ind2vec(label_train);
end
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum)';
%% train
W=reshape(w1,hiddennum,inputnum);
Q=size(inputn_train,2);
BiasMatrix = repmat(B1,1,Q);
tempH = W * inputn_train + BiasMatrix;
H = 1 ./ (1 + exp(-tempH));
LW = pinv(H') * T1';
TY=(H'*LW)';
temp_Y=zeros(1,size(TY,2));
for n=1:size(TY,2)
[max_Y,index]=max(TY(:,n));
temp_Y(n)=index;
end
Y_train=temp_Y;
train_accuracy=sum(Y_train==label_train)/length(label_train);
figure
plot(Y_train,'r*');hold on
plot(label_train,'bo');
title('GA+爬山优化后训练集')
%% test
T2=ind2vec(label_test);
Q=size(inputn_test,2);
BiasMatrix1 = repmat(B1,1,Q);
tempH1 = W * inputn_test + BiasMatrix1;
H1 = 1 ./ (1 + exp(-tempH1));
TY1=(H1'*LW)';
save IGA_ELM TY1
if TYPE == 1
temp_Y1=zeros(1,size(TY1,2));
for n=1:size(TY1,2)
[max_Y,index]=max(TY1(:,n));
temp_Y1(n)=index;
end
Y_train=temp_Y1;
end
youhua_test_accuracy=sum(Y_train==label_test)/length(label_test)
figure
stem(label_test,'*')
hold on
plot(Y_train,'p')
title('GA+爬山优化后的ELM测试集')
legend('期望输出','实际输出')
load Y_elm
load IGA_elm
load label_test% 真实对应的标签
%% 画误差折线
% 未优化的误差
error1=[];
for i=1:9
error1=[error1 sum((Y(:,i)-output_test(:,i)).^2)];
end
% 优化后的误差
error2=[];
for i=1:9
error2=[error2 sum((TY1(:,i)-output_test(:,i)).^2)];
end
figure
plot(error1)
hold on
plot(error2)
legend('未优化','优化后')
xlabel('样本号')
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于MATLAB编程,爬山算法优化遗传算法优化极限学习机的多分类预测,p-ga-elm多分类预测(,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。
资源推荐
资源详情
资源评论
收起资源包目录
爬山法-遗传算法-极限学习机.rar (17个子文件)
最终数据(1).xlsx 12KB
elmtrain.m 2KB
select.m 1022B
IGA_ELM.mat 401B
elmpredict.m 1KB
新建 XLS 工作表.xls 22KB
HUATU.m 630B
main.m 3KB
subpop_generate.m 1KB
gaforelm.m 3KB
Code.m 398B
Cross.m 2KB
test.m 210B
fun.m 889B
Y_elm.mat 402B
label_test.mat 193B
Mutation.m 2KB
共 17 条
- 1
资源评论
神经网络机器学习智能算法画图绘图
- 粉丝: 2458
- 资源: 602
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功