【ANFIS分类】基于遗传算法优化模糊和ANFIS实现数据分类附matlab代码

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【ANFIS分类】基于遗传算法优化模糊和ANFIS实现数据分类附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

个人信用作为社会信用体系建设的重要部分,将其结合现代计算机理论技术来构建个人信用评分模型一直是研究的热点.本文利用前人遗传算法筛选出来的个人信用相关重要属性,并从这些重要属性的3种分类中依类定性地取出部分属性,结合自适应神经模糊推理系统理论(ANFIS),建立基于遗传算法和AN-FIS的个人信用评分模型.对选取的数据实证分析,并与GA-fuzzy方法的结果作了比较,试验结果表明该模型只需少量重要属性变量就能够有较好的分类效果.

⛄ 部分代码

%% Genetic Fuzzy and Genetic ANFIS Classification

% Okay, what about combining evolutionary algorithms with fuzzy logic and

% ANFIS for classification? Well, let痴 push some limits!!! Data is

% consisted of 50 samples with 5 features and 5 classes. You can put your

% data in the system and run it. You have to play with parameters depending

% on your data and system. Right now, you can just run the code and see the

% result. You have to wait for Genetic Algorithm to finish training.

% This code is part of the following project. So, please cite them after use:

% Mousavi, Seyed Muhammad Hossein, et al. "A PSO fuzzy-expert system: As an assistant for specifying the acceptance by NOET measures, at PH. D level." 2017 Artificial Intelligence and Signal Processing Conference (AISP). IEEE, 2017.

% Mousavi, Seyed Muhammad Hossein, S. Younes MiriNezhad, and Mir Hossein Dezfoulian. "Galaxy gravity optimization (GGO) an algorithm for optimization, inspired by comets life cycle." 2017 Artificial Intelligence and Signal Processing Conference (AISP). IEEE, 2017.

% Enjoy the code and feel free to ask your question from me:



%% Lets Do This

% Clearing the Space

clc;

clear;

close all;

warning('off');

%% Start The System

% Loading Data

load evolve.mat

% Shuffling or Swapping Rows (Diverse Result in Each Run)

random_x = dat(randperm(size(dat, 1)), :);

% Deviding Data and Labels

traininput=random_x(:,1:end-1);

traintarget=random_x(:,end);

% Creating Final Struct

data.TrainInputs=traininput;

data.TrainTargets=traintarget;


%% Training Stage

% Generating the FIS

Fuzzy=FISCreation(data,3);

% Tarin Using ANFIS Method

ANFIS=ANFISTrain(Fuzzy,data);

% Tarining By Genetic Algorithm (GA-Fuzzy)

[GA_Fuzzy G_FUZ_results]=GeneticTrain(Fuzzy,data);

% Tarining By Genetic Algorithm (GA-ANFIS)

[GA_ANFIS G_ANF_results]=GeneticTrain(ANFIS,data);

figure;

plotfis(Fuzzy)

figure;

plotfis(ANFIS)

figure;

plotfis(GA_Fuzzy)

figure;

plotfis(GA_ANFIS)

% figure;

% plotmf(GA_ANFIS,'input',3)


%% What Is Achieved In Visual.

BestGAFUZ=G_FUZ_results.BestCost;

BestGAANF=G_ANF_results.BestCost;

% Plot Training

figure;

set(gcf, 'Position',  [300, 50, 600, 600])

subplot(2,1,1)

plot(BestGAFUZ,'-.','LineWidth',3,'MarkerSize',12,'MarkerEdgeColor','b',...

   'Color',[0.3,0,0.9]);title('Fuzzy Genetic Algorithm','Color','r');

xlabel('GA Iteration Number','FontSize',12,'FontWeight','bold','Color',[0.3,0,0.9]);

ylabel('GA Best Cost Result','FontSize',12,'FontWeight','bold','Color',[0.3,0,0.9]);

legend({'Fuzzy GA Train'});

subplot(2,1,2)

plot(BestGAANF,'-.','LineWidth',3,'MarkerSize',12,'MarkerEdgeColor','b',...

   'Color',[0.6,0,0.9]);title('ANFIS Genetic Algorithm','Color','r');

xlabel('GA Iteration Number','FontSize',12,'FontWeight','bold','Color',[0.6,0,0.9]);

ylabel('GA Best Cost Result','FontSize',12,'FontWeight','bold','Color',[0.6,0,0.9]);

legend({'ANFIS GA Train'});


% Plot Statistics

   figure;

   set(gcf, 'Position',  [5, 50, 800, 200])

FyzzyOutputs=evalfis(data.TrainInputs,Fuzzy);

PlotVisual(data.TrainTargets,FyzzyOutputs,'Fuzzy');

   xlabel('Fuzzy','FontSize',14,'FontWeight','bold','Color',[0.9,0.1,0.1]);

   figure;

   set(gcf, 'Position',  [50, 100, 800, 200])

ANFISOutputs=evalfis(data.TrainInputs,ANFIS);

PlotVisual(data.TrainTargets,ANFISOutputs,'ANFIS');

   xlabel('ANFIS','FontSize',14,'FontWeight','bold','Color',[0.9,0.1,0.1]);

   figure;

   set(gcf, 'Position',  [150, 150, 800, 200])

GAFuzzyOutputs=evalfis(data.TrainInputs,GA_Fuzzy);

PlotVisual(data.TrainTargets,GAFuzzyOutputs,'GA Fuzzy');

   xlabel('GA Fuzzy','FontSize',14,'FontWeight','bold','Color',[0.9,0.1,0.1]);

   figure;

   set(gcf, 'Position',  [200, 200, 800, 200])

GAANFISOutputs=evalfis(data.TrainInputs,GA_ANFIS);

PlotVisual(data.TrainTargets,GAANFISOutputs,'GA ANFIS');

   xlabel('GA ANFIS','FontSize',14,'FontWeight','bold','Color',[0.9,0.1,0.1]);


%% Calculating Classification Accuracy

AllTar=data.TrainTargets;

% Generating Outputs

FORound=round(FyzzyOutputs);

AORound=round(ANFISOutputs);

GFORound=round(GAFuzzyOutputs);

GAORound=round(GAANFISOutputs);

sizedata=size(FORound);sizedata=sizedata(1,1);

classsize=max(AllTar);

for i=1 : sizedata

   if FORound(i) > classsize

       FORound(i)=classsize;

   end;end;

for i=1 : sizedata

   if AORound(i) > classsize

       AORound(i)=classsize;

   end;end;

for i=1 : sizedata

   if GFORound(i) > classsize

       GFORound(i)=classsize;

   end;end;

for i=1 : sizedata

   if GAORound(i) > classsize

       GAORound(i)=classsize;

   end;end;

% Calculating Accuracy

% Fuzzy Accuracy

ctfuzz=0;

for i = 1 : sizedata(1,1)

if FORound(i) ~= AllTar(i)

   ctfuzz=ctfuzz+1;

end;end;

finfuzz=ctfuzz*100/ sizedata;  

FuzzyAccuracy=(100-finfuzz);

% ANFIS Accuracy

ctanf=0;

for i = 1 : sizedata(1,1)

if AORound(i) ~= AllTar(i)

   ctanf=ctanf+1;

end;end;

finanf=ctanf*100/ sizedata;

ANFISAccuracy=(100-finanf);

% GA Fuzzy Accuracy

ctgf=0;

for i = 1 : sizedata(1,1)

if GFORound(i) ~= AllTar(i)

   ctgf=ctgf+1;

end;end;

fingf=ctgf*100/ sizedata;

GFAccuracy=(100-fingf);

% GA ANFIS Accuracy

ctganf=0;

for i = 1 : sizedata(1,1)

if GAORound(i) ~= AllTar(i)

   ctganf=ctganf+1;

end;end;

finganf=ctganf*100/ sizedata;

GANFAccuracy=(100-finganf);

% Confusion Matrixes

% Extracting Errors

FOMSE=mse(AllTar,FORound);

AOMSE=mse(AllTar,AORound);

GFOMSE=mse(AllTar,GFORound);

GAOMSE=mse(AllTar,GAORound);

figure

set(gcf, 'Position',  [50, 100, 1300, 300])

subplot(1,4,1)

cm1 = confusionchart(AllTar,FORound);

cm1.Title = (['Fuzzy Classification =  ' num2str(FuzzyAccuracy-FOMSE) '%']);

subplot(1,4,2)

cm2 = confusionchart(AllTar,AORound);

cm2.Title = (['ANFIS Classification =  ' num2str(ANFISAccuracy-AOMSE) '%']);

subplot(1,4,3)

cm3 = confusionchart(AllTar,GFORound);

cm3.Title = (['Genetic Fuzzy Classification =  ' num2str(GFAccuracy-GFOMSE) '%']);

subplot(1,4,4)

cm4 = confusionchart(AllTar,GAORound);

cm4.Title = (['Genetic ANFIS Classification =  ' num2str(GANFAccuracy-GAOMSE) '%']);

% Print Accuracy

fprintf('The Fuzzy Classification Accuracy is = %0.4f.\n',FuzzyAccuracy-FOMSE)

fprintf('The ANFIS Classification Accuracy is = %0.4f.\n',ANFISAccuracy-AOMSE)

fprintf('The Genetic Fuzzy Classification Accuracy is = %0.4f.\n',GFAccuracy-GFOMSE)

fprintf('The Genetic ANFIS Classification Accuracy is = %0.4f.\n',GANFAccuracy-GAOMSE)


⛄ 运行结果

⛄ 参考文献

[1]林娟, 陈健, 王富英. 基于遗传算法和ANFIS的个人信用评分模型[J]. 福建师大福清分校学报, 2013(5):6.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
6天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
3天前
|
算法
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
MATLAB 2022a仿真实现了LDPC码的性能分析,展示了不同码长对纠错能力的影响。短码长LDPC码收敛快但纠错能力有限,长码长则提供更强纠错能力但易陷入局部最优。核心代码通过循环进行误码率仿真,根据EsN0计算误比特率,并保存不同码长(12-768)的结果数据。
21 9
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
|
4天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。
|
6天前
|
算法 计算机视觉
基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真
该内容是关于使用MATLAB2013B实现基于高斯混合模型(GMM)的视频背景提取和人员跟踪算法。算法通过GMM建立背景模型,新帧与模型比较,提取前景并进行人员跟踪。文章附有程序代码示例,展示从读取视频到结果显示的流程。最后,结果保存在Result.mat文件中。
|
6天前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
10 1
|
6天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
6天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
19 1
|
6天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
6天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)

热门文章

最新文章