%_________________________________________________________________________%
%基于GA算法优化的KELM回归问题
%_________________________________________________________________________%
% clc;clear;close all
% %% 读取数据
% %res = xlsread('数据集.xlsx');
% res1 = importdata('待预测data.txt');
% res = datarun_fun(res1,5);
function [TestOutT,T_test,net,R2] = KELM_FUN(res,num_size,dataran)
%% 数据分析
% num_size = 0.98; % 训练集占数据集比例
outdim = 1; % 最后一列为输出
num_samples = size(res, 1); % 样本个数
num_train_s = round(num_size * num_samples); % 训练集样本个数
AA1 = res(1:num_train_s,:);
AA2 = res(num_train_s+1:end-1,:);
AA3 = res(end,:);
clear res;
if dataran == 1
AA1 = AA1(randperm(size(AA1, 1)), :); % 打乱数据集(不希望打乱时,注释该行)
AA2 = AA2(randperm(size(AA2, 1)), :); % 打乱数据集(不希望打乱时,注释该行)
end
res=[AA1;AA2;AA3];
f_ = size(res, 2) - outdim; % 输入特征维度
%% 划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);
%% 归一化
% 训练集
[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);
%% 参数设置
pop=20; %种群数量
Max_time=20; % 设定最大迭代次数
dim = 2;% 维度为2,即优化两个参数,正则化系数 C 和核函数参数 S
lb = [1;1];%下边界
ub = [20;20];%上边界
fobj = @(x) KELM_1fun(x,Pn_train,Tn_train);
[Best_pos,Best_score,curve]=KELM_GA(pop,Max_time,lb,ub,dim,fobj); %开始优化
% figure
% plot(curve,'linewidth',1.5);
% grid on;
% xlabel('迭代次数')
% ylabel('适应度值')
% title('收敛曲线')
%% 获取最优正则化系数 C 和核函数参数 S
Regularization_coefficient = Best_pos(1);
Kernel_para = Best_pos(2);
Kernel_type = 'rbf';
%% 训练
[TrainOutT,OutputWeight] = KELM_kelmTrain(Pn_train,Tn_train,Regularization_coefficient,Kernel_type,Kernel_para);
%% 训练集预测
InputWeight = OutputWeight;
[TestOutT] = KELM_kelmPredict(Pn_train,InputWeight,Kernel_type,Kernel_para,Pn_test);
net = [InputWeight;Kernel_para];
%% 训练集正确率
TrainOutT = mapminmax('reverse',TrainOutT,outputps);
errorTrain = TrainOutT - T_train;
MSEErrorTrain = mse(errorTrain);
%% 测试集正确率
TestOutT = mapminmax('reverse',TestOutT,outputps);
errorTest = TestOutT - T_test;
MSEErrorTest = mse(errorTest);
N1=length(T_test);
% R2 = (N1*sum(TestOutT.*T_test)-sum(TestOutT)*sum(T_test))^2/((N1*sum((TestOutT).^2)-(sum(TestOutT))^2)*(N1*sum((T_test).^2)-(sum(T_test))^2));
testnum=size(TestOutT,2);
zdre=0;
for io=1:testnum-1
AA1=TestOutT(:,io);
AA2=TestOutT(:,io+1);
BB1=T_test(:,io);
BB2=T_test(:,io+1);
% if or(and(AA1>AA2,BB1>BB2),and(AA1<AA2,BB1<BB2))
if abs(AA1-BB1)<0.5;
zdre=zdre+1;
end
end
R2 = zdre/testnum;
end
没有合适的资源?快使用搜索试试~ 我知道了~
遗传算法(GA)优化核极限学习机回归,GA-KELM回归预测,多变量输入模型 评价指标包括:R2、MAE、MSE、RMSE和

共12个文件
m:11个
mat:1个

需积分: 0 2 下载量 33 浏览量
2023-09-23
21:43:54
上传
评论 1
收藏 146KB ZIP 举报
温馨提示
遗传算法(GA)优化核极限学习机回归,GA-KELM回归预测,多变量输入模型。 评价指标包括:R2、MAE、MSE、RMSE和MAPE等,代码质量极高,方便学习和替换数据。
资源推荐
资源详情
资源评论


























收起资源包目录













共 12 条
- 1
资源评论


机器学习-深度学习
- 粉丝: 695
- 资源: 446
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
