%% Firefly Fuzzy Regression Algorithm - Created in (9 Jan 2022).
% Firefly algorithm is one of the most decent algorithms in optimization
% which could be used for various tasks and biasing weights. It is
% relatively faster than others just like DE algorithm. So, there was no a
% proper evolutionary linear regression Matlab code available in the web
% and I decided to make one. You can use your data. System uses fuzzy logic
% to create initial model and biases weights into a fit model by Firefly algorithm. You can play
% with parameters (higher values, more calculation time).
%% Well, Lets do it !!!
clc;
clear;
warning('off');
% Data Loading
data=JustLoad();
% Generate Fuzzy Model
ClusNum=4; % Number of Clusters in FCM
%
fis=GenerateFuzzy(data,ClusNum);
%
%% Tarining FireFly Algorithm
FireFlyFis=FireFlyRegression(fis,data);
%% Plot Fuzzy FireFly Results (Train - Test)
% Train Output Extraction
TrTar=data.TrainTargets;
TrainOutputs=evalfis(data.TrainInputs,FireFlyFis);
% Test Output Extraction
TsTar=data.TestTargets;
TestOutputs=evalfis(data.TestInputs,FireFlyFis);
% Train calc
Errors=data.TrainTargets-TrainOutputs;
MSE=mean(Errors.^2);RMSE=sqrt(MSE);
error_mean=mean(Errors);error_std=std(Errors);
% Test calc
Errors1=data.TestTargets-TestOutputs;
MSE1=mean(Errors1.^2);RMSE1=sqrt(MSE1);
error_mean1=mean(Errors1);error_std1=std(Errors1);
% Train
figure('units','normalized','outerposition',[0 0 1 1])
subplot(3,2,1);
plot(data.TrainTargets,'c');hold on;
plot(TrainOutputs,'k');legend('Target','Output');
title('FireFly Training Part');xlabel('Sample Index');grid on;
% Test
subplot(3,2,2);
plot(data.TestTargets,'c');hold on;
plot(TestOutputs,'k');legend('FireFly Target','FireFly Output');
title('FireFly Testing Part');xlabel('Sample Index');grid on;
% Train
subplot(3,2,3);
plot(Errors,'k');legend('FireFly Training Error');
title(['Train MSE = ' num2str(MSE) ' , Train RMSE = ' num2str(RMSE)]);grid on;
% Test
subplot(3,2,4);
plot(Errors1,'k');legend('FireFly Testing Error');
title(['Test MSE = ' num2str(MSE1) ' , Test RMSE = ' num2str(RMSE1)]);grid on;
% Train
subplot(3,2,5);
h=histfit(Errors, 50);h(1).FaceColor = [.8 .8 0.3];
title(['Train Error Mean = ' num2str(error_mean) ' , Train Error STD = ' num2str(error_std)]);
% Test
subplot(3,2,6);
h=histfit(Errors1, 50);h(1).FaceColor = [.8 .8 0.3];
title(['Test Error Mean = ' num2str(error_mean1) ' , Test Error STD = ' num2str(error_std1)]);
%% Plot Just Fuzzy Results (Train - Test)
% Train Output Extraction
fTrainOutputs=evalfis(data.TrainInputs,fis);
% Test Output Extraction
fTestOutputs=evalfis(data.TestInputs,fis);
% Train calc
fErrors=data.TrainTargets-fTrainOutputs;
fMSE=mean(fErrors.^2);fRMSE=sqrt(fMSE);
ferror_mean=mean(fErrors);ferror_std=std(fErrors);
% Test calc
fErrors1=data.TestTargets-fTestOutputs;
fMSE1=mean(fErrors1.^2);fRMSE1=sqrt(fMSE1);
ferror_mean1=mean(fErrors1);ferror_std1=std(fErrors1);
% Train
figure('units','normalized','outerposition',[0 0 1 1])
subplot(3,2,1);
plot(data.TrainTargets,'m');hold on;
plot(fTrainOutputs,'k');legend('Target','Output');
title('Fuzzy Training Part');xlabel('Sample Index');grid on;
% Test
subplot(3,2,2);
plot(data.TestTargets,'m');hold on;
plot(fTestOutputs,'k');legend('Target','Output');
title('Fuzzy Testing Part');xlabel('Sample Index');grid on;
% Train
subplot(3,2,3);
plot(fErrors,'g');legend('Fuzzy Training Error');
title(['Train MSE = ' num2str(fMSE) ' , Test RMSE = ' num2str(fRMSE)]);grid on;
% Test
subplot(3,2,4);
plot(fErrors1,'g');legend('Fuzzy Testing Error');
title(['Train MSE = ' num2str(fMSE1) ' , Test RMSE = ' num2str(fRMSE1)]);grid on;
% Train
subplot(3,2,5);
h=histfit(fErrors, 50);h(1).FaceColor = [.3 .8 0.3];
title(['Train Error Mean = ' num2str(ferror_mean) ' , Train Error STD = ' num2str(ferror_std)]);
% Test
subplot(3,2,6);
h=histfit(fErrors1, 50);h(1).FaceColor = [.3 .8 0.3];
title(['Test Error Mean = ' num2str(ferror_mean1) ' , Test Error STD = ' num2str(ferror_std1)]);
%% Regression Plots
figure('units','normalized','outerposition',[0 0 1 1])
subplot(2,2,1)
[population2,gof] = fit(TrTar,TrainOutputs,'poly4');
plot(TrTar,TrainOutputs,'o',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','g',...
'MarkerFaceColor',[0.9,0.1,0.1]);
title(['FireFly Train - R = ' num2str(1-gof.rmse)]);
xlabel('Train Target');
ylabel('Train Output');
hold on
plot(population2,'b-','predobs');
xlabel('Train Target');
ylabel('Train Output');
hold off
subplot(2,2,2)
[population2,gof] = fit(TsTar, TestOutputs,'poly4');
plot(TsTar, TestOutputs,'o',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','g',...
'MarkerFaceColor',[0.9,0.1,0.1]);
title(['FireFly Test - R = ' num2str(1-gof.rmse)]);
xlabel('Test Target');
ylabel('Test Output');
hold on
plot(population2,'b-','predobs');
xlabel('Test Target');
ylabel('Test Output');
hold off
subplot(2,2,3)
[population2,gof] = fit(TrTar,fTrainOutputs,'poly4');
plot(TrTar,fTrainOutputs,'o',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.3,0.9,0.2]);
title(['Fuzzy Train - R = ' num2str(1-gof.rmse)]);
xlabel('Train Target');
ylabel('Train Output');
hold on
plot(population2,'r-','predobs');
xlabel('Train Target');
ylabel('Train Output');
hold off
subplot(2,2,4)
[population2,gof] = fit(TsTar, fTestOutputs,'poly4');
plot(TsTar, fTestOutputs,'o',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.3,0.9,0.2]);
title(['Fuzzy Test - R = ' num2str(1-gof.rmse)]);
xlabel('Test Target');
ylabel('Test Output');
hold on
plot(population2,'r-','predobs');
xlabel('Test Target');
ylabel('Test Output');
hold off
%% Errors
% Fuzzy Regression Train and Test Errors]
% Train
fprintf('Fuzzy Regression Training "MSE" Is = %0.4f.\n',fMSE)
fprintf('Fuzzy Regression Training "RMSE" Is = %0.4f.\n',fRMSE)
fprintf('Fuzzy Regression Training "Mean Error" Is = %0.4f.\n',ferror_mean)
fprintf('Fuzzy Regression Training "STD Error" Is = %0.4f.\n',ferror_std)
fprintf('Fuzzy Regression Training "MAE" Is = %0.4f.\n',mae(data.TrainTargets,fTrainOutputs))
% Test
fprintf('Fuzzy Regression Testing "MSE" Is = %0.4f.\n',fMSE1)
fprintf('Fuzzy Regression Testing "RMSE" Is = %0.4f.\n',fRMSE1)
fprintf('Fuzzy Regression Testing "Mean Error" Is = %0.4f.\n',ferror_mean1)
fprintf('Fuzzy Regression Testing "STD Error" Is = %0.4f.\n',ferror_std1)
fprintf('Fuzzy Regression Testing "MAE" Is = %0.4f.\n',mae(data.TestTargets,fTestOutputs))
% FireFly Regression Algorithm Train and Test Errors
% Train
fprintf('FireFly Regression Training "MSE" Is = %0.4f.\n',MSE)
fprintf('FireFly Regression Training "RMSE" Is = %0.4f.\n',RMSE)
fprintf('FireFly Regression Training "Mean Error" Is = %0.4f.\n',error_mean)
fprintf('FireFly Regression Training "STD Error" Is = %0.4f.\n',error_std)
fprintf('FireFly Regression Training "MAE" Is = %0.4f.\n',mae(data.TrainTargets,TrainOutputs))
% Test
fprintf('FireFly Regression Testing "MSE" Is = %0.4f.\n',MSE1)
fprintf('FireFly Regression Testing "RMSE" Is = %0.4f.\n',RMSE1)
fprintf('FireFly Regression Testing "Mean Error" Is = %0.4f.\n',error_mean1)
fprintf('FireFly Regression Testing "STD Error" Is = %0.4f.\n',error_std1)
fprintf('FireFly Regression Testing "MAE" Is = %0.4f.\n',mae(data.TestTargets,TestOutputs))
没有合适的资源?快使用搜索试试~ 我知道了~
【回归预测】基于萤火虫算法优化模糊实现数据回归预测附matlab代码.zip
共14个文件
m:7个
png:5个
mat:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 179 浏览量
2023-03-03
06:55:10
上传
评论 1
收藏 872KB ZIP 举报
温馨提示
【回归预测】基于萤火虫算法优化模糊实现数据回归预测附matlab代码.zip
资源推荐
资源详情
资源评论
收起资源包目录
【回归预测】基于萤火虫算法优化模糊实现数据回归预测附matlab代码.zip (14个子文件)
3.png 65KB
FuzzyParameters.m 546B
main.m 8KB
1.png 25KB
Firefly Regression Algorithm.JPG 733KB
New5.mat 4KB
11.png 20KB
GenerateFuzzy.m 394B
4.png 72KB
FireFlyRegression.m 3KB
JustLoad.m 601B
2.png 68KB
FuzzyCost.m 471B
GettingFuzzyParameters.m 413B
共 14 条
- 1
资源评论
- zhejiaosaoma2024-02-06资源很实用,对我启发很大,有很好的参考价值,内容详细。
- 2leftfeet2023-12-18资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
天天Matlab科研工作室
- 粉丝: 3w+
- 资源: 7258
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功