%% 初始化
clear
close all
clc
warning off
%% 数据读取
addpath(genpath(pwd));
load vmddata.mat %加载处理好的特征数据
data = vmddata;
%% 数据载入
bv = 120; %每种状态数据有120组
% 加标签值
hhh = size(data,2);
for i=1:size(data,1)/bv
data(1+bv*(i-1):bv*i,hhh+1)=i;
end
input=data(:,1:hhh);
output1 =data(:,end);
for i=1:size(data,1) %一共10种类型
switch output1(i)
case 1
output(i,1)=1;
case 2
output(i,2)=1;
case 3
output(i,3)=1;
case 4
output(i,4)=1;
case 5
output(i,5)=1;
case 6
output(i,6)=1;
case 7
output(i,7)=1;
case 8
output(i,8)=1;
case 9
output(i,9)=1;
case 10
output(i,10)=1;
end
end
jg = bv; %每组120个样本
tn = 90; %选前tn个样本进行训练
input_train = []; output_train = [];
input_test = []; output_test = [];
for i = 1:max(data(:,end))
input_train=[input_train;input(1+jg*(i-1):jg*(i-1)+tn,:)];
output_train=[output_train;output(1+jg*(i-1):jg*(i-1)+tn,:)];
input_test=[input_test;input(jg*(i-1)+tn+1:i*jg,:)];
output_test=[output_test;output(jg*(i-1)+tn+1:i*jg,:)];
end
input_train = input_train';
input_test = input_test';
%归一化
[inputn_train,inputps]=mapminmax(input_train);inputn_train = inputn_train';
[inputn_test,inputtestps]=mapminmax('apply',input_test,inputps); inputn_test =inputn_test';
pop=[1 1];
kernel='RBF_kernel';%核函数
% 训练过程
n_sample=size(inputn_train,1);%样本数
Omega_train = kernel_matrix(inputn_train,kernel, pop(1));%隐含层输出
OutputWeight=((Omega_train+speye(n_sample)/pop(2))\(output_train));%输出权重
Y1=Omega_train * OutputWeight;%训练集预测输出
% 测试过程
Omega_test = kernel_matrix(inputn_train,kernel, pop(1),inputn_test)';
Yt_hat=Omega_test * OutputWeight;%测试集预测输出
[~,J1]=max(Yt_hat,[],2);%将预测值与真实值的one-hot编码转换为类别标签
[~,J]=max(output_test,[],2);
test_accuracy =sum(J==J1)/length(J);
figure;
stem(J);
hold on;
plot(J1, 'r*');
legend('真实标签', '预测标签');
title(['没有优化的KELM分类精度为:',num2str(test_accuracy*100),'%'])
hold off;
%画方框图
confMat = confusionmat(J1,J); %output_test是真实值标签
figure;
set(gca,'looseInset',[0 0 0 0])
set(gcf,'unit','centimeters','position',[5 2 23 15])
zjyanseplotConfMat(confMat.');
xlabel('预测标签','fontsize',12,'fontname','TimesNewRoman');
ylabel('真实标签','fontsize',12,'fontname','TimesNewRoman');
title(['没有优化的KELM分类精度为:',num2str(test_accuracy*100),'%'],'fontsize',12,'fontname','TimesNewRoman');
hold off
%% 优化KELM
%%
kernel='RBF_kernel';
SearchAgents_no = 10; %种群个数
Max_iter = 20; % 迭代次数
lb = 0; %下限
ub = 1000; %上限
dim = 2; %维度
fobj = @(x)fun(x,inputn_train,output_train,inputn_test,output_test,kernel);
disp('正在调用优化算法对KELM进行优化,请稍等……')
[Best_score,Best_pos,curve]=DE(SearchAgents_no, Max_iter,lb,ub,dim,fobj);
figure
plot(curve,'-o','LineWidth',1)
xlabel('迭代次数')
ylabel('适应度值')
title('优化KELM的适应度曲线')
setdemorandstream(2*pi);
%将最佳值Best_pos带入目标函数
[error,J2] = fun(Best_pos,inputn_train,output_train,inputn_test,output_test,kernel);
test_accuracy = 1-error;
figure;
stem(J);
hold on;
plot(J2, 'r*');
legend('真实标签', '预测标签');
title(['优化后KELM分类精度为:',num2str((test_accuracy)*100),'%'])
hold off;
%画方框图
confMat = confusionmat(J,J2); %output_test是真实值标签
figure;
set(gca,'looseInset',[0 0 0 0])
set(gcf,'unit','centimeters','position',[5 2 23 15])
zjyanseplotConfMat(confMat.');
xlabel('预测标签','fontsize',12,'fontname','TimesNewRoman');
ylabel('真实标签','fontsize',12,'fontname','TimesNewRoman');
title(['优化后KELM分类精度为:',num2str(test_accuracy*100),'%'],'fontsize',12,'fontname','TimesNewRoman');
hold off
没有合适的资源?快使用搜索试试~ 我知道了~
DE-KELM的差分算法优化核极限学习机故障诊断,优化前后对比(Matlab完整源码和数据)
共12个文件
m:6个
png:5个
mat:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 23 浏览量
2024-09-29
17:25:13
上传
评论 1
收藏 290KB ZIP 举报
温馨提示
1.Matlab实现DE-KELM的差分算法优化核极限学习机分类预测,优化前后对比(完整源码和数据)。 2.输出对比图、混淆矩阵图、预测准确率,运行环境Matlab2023及以上。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信
资源推荐
资源详情
资源评论
收起资源包目录
差分算法优化KELM故障诊断.zip (12个子文件)
zjyanseplotConfMat.m 2KB
initialization.m 551B
3.png 30KB
main.m 4KB
1.png 33KB
kernel_matrix.m 2KB
5.png 69KB
4.png 29KB
fun.m 370B
DE.m 2KB
vmddata.mat 80KB
2.png 75KB
共 12 条
- 1
资源评论
机器学习之心
- 粉丝: 2w+
- 资源: 1065
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功