clc;
clear all;
close all
tic
warning off
%% 导入数据
% 训练集——190个样本
P_train = xlsread('data','training set','B2:G191')';
T_train= xlsread('data','training set','H2:H191')';
% 测试集——44个样本
P_test=xlsread('data','test set','B2:G45')';
T_test=xlsread('data','test set','H2:H45')';
N = size(P_test, 2); % 测试集样本数
M = size(P_train, 2); % 训练集样本数
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
%% 参数初始化
pop=10; %种群数量
Max_iter=20; % 设定最大迭代次数
dim = 1;% 维度为,即优化超参数
lb = [0.1];%下边界 RBF 参数s的变化的最大值.
ub = [1000];%上边界
fobj = @(x)fobj(x);
[Best_score,Best_pos,curve]=GA(pop,Max_iter,lb,ub,dim,fobj); %开始优化
% pso_option.popsmax = 1000; % popsmax:初始为1000, RBF 参数s的变化的最大值.
% pso_option.popsmin = 0.1; % popsmin:初始为 0.1, RBF 参数s的变化的最小值
%% 创建网络
rbf_spread = Best_pos; % 径向基函数的扩展速度
net = newrbe(p_train, t_train, rbf_spread);
%% 仿真测试
t_sim1 = sim(net, p_train);
t_sim2 = sim(net, p_test );
%% 数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
%% 均方根误差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);
%% 查看网络结构
view(net)
%% 迭代
figure
plot(1 : length(curve), curve,'linewidth',1.5);
title('GA-RBF', 'FontSize', 10);
xlabel('迭代次数', 'FontSize', 10);
ylabel('适应度值', 'FontSize', 10);
grid off
%% 测试集结果
figure;
plotregression(T_test,T_sim2,['回归图']);
figure;
ploterrhist(T_test-T_sim2,['误差直方图']);
%% 均方根误差 RMSE
error1 = sqrt(sum((T_sim1 - T_train).^2)./M);
error2 = sqrt(sum((T_test - T_sim2).^2)./N);
%%
%决定系数
R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test - T_sim2)^2 / norm(T_test - mean(T_test ))^2;
%%
%均方误差 MSE
mse1 = sum((T_sim1 - T_train).^2)./M;
mse2 = sum((T_sim2 - T_test).^2)./N;
%%
%RPD 剩余预测残差
SE1=std(T_sim1-T_train);
RPD1=std(T_train)/SE1;
SE=std(T_sim2-T_test);
RPD2=std(T_test)/SE;
%% 平均绝对误差MAE
MAE1 = mean(abs(T_train - T_sim1));
MAE2 = mean(abs(T_test - T_sim2));
%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1)./T_train));
MAPE2 = mean(abs((T_test - T_sim2)./T_test));
%% 训练集绘图
figure
%plot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1)
plot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1.5)
legend('真实值','GA-RBF预测值')
xlabel('预测样本')
ylabel('预测结果')
string={'训练集预测结果对比';['(R^2 =' num2str(R1) ' RMSE= ' num2str(error1) ' MSE= ' num2str(mse1) ' RPD= ' num2str(RPD1) ')' ]};
title(string)
%% 预测集绘图
figure
plot(1:N,T_test,'r-*',1:N,T_sim2,'b-o','LineWidth',1.5)
legend('真实值','GA-RBF预测值')
xlabel('预测样本')
ylabel('预测结果')
string={'测试集预测结果对比';['(R^2 =' num2str(R2) ' RMSE= ' num2str(error2) ' MSE= ' num2str(mse2) ' RPD= ' num2str(RPD2) ')']};
title(string)
%% 测试集误差图
figure
ERROR3=T_test-T_sim2;
plot(T_test-T_sim2,'b-*','LineWidth',1.5)
xlabel('测试集样本编号')
ylabel('预测误差')
title('测试集预测误差')
grid on;
legend('GA-RBF预测输出误差')
%% 绘制线性拟合图
%% 打印出评价指标
disp(['-----------------------误差计算--------------------------'])
disp(['评价结果如下所示:'])
disp(['平均绝对误差MAE为:',num2str(MAE2)])
disp(['均方误差MSE为: ',num2str(mse2)])
disp(['均方根误差RMSE为: ',num2str(error2)])
disp(['决定系数R^2为: ',num2str(R2)])
disp(['剩余预测残差RPD为: ',num2str(RPD2)])
disp(['平均绝对百分比误差MAPE为: ',num2str(MAPE2)])
grid
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于遗传算法(GA)优化径向基神经网络(GA-RBF)的数据回归预测,多变量输入模型。 matlab代码,优化参数为扩散速度,采用交叉验证。 评价指标包括:R2、MAE、MSE、RMSE和MAPE等,代码质量极高,方便学习和替换数据。 基于遗传算法(GA)优化径向基神经网络(GA-RBF)的数据回归预测,多变量输入模型。 matlab代码,优化参数为扩散速度,采用交叉验证。 评价指标包括:R2、MAE、MSE、RMSE和MAPE等,代码质量极高,方便学习和替换数据。
资源推荐
资源详情
资源评论
收起资源包目录
9 GA-RBF - 2 (2).zip (9个子文件)
fobj.m 909B
GA.m 2KB
initialization.m 584B
main.m 4KB
Cross.m 1KB
test.m 554B
data.xlsx 36KB
Select2.m 889B
Mutation.m 1KB
共 9 条
- 1
资源评论
智能算法及其模型预测
- 粉丝: 2427
- 资源: 871
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功