【数据分析】基于粒子群优化的模糊专家系统附matlab代码

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 【数据分析】基于粒子群优化的模糊专家系统附matlab代码

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

PSO 神经网络分类 % 所以,网上没有合适的进化分类 Matlab 代码, % 决定用 PSO 做一个。% 此代码获取用于分类的数据输入,其中包含数据和 % 标签并将其存储到“netdata”中。数据由 6% 类的 300 个样本组成,其中包括 40 个特征。您可以提取您的特征并 % 标记它,因为它是一个监督模型。这些特征是从小物体图像中提取的 SURF % 特征。现在,System 是 PSO % 和典型的浅层神经网络的组合。神经网络本身构成了系统的 % 初始结构或主体,但 PSO 有责任对训练中的 % 神经元进行加权,进化算法的真正力量在这里体现。最后与SVM、KNN的结果对比,和 TREE 分类 % 算法作为混淆矩阵和最终识别准确率。% 有三个重要参数 'NH'(隐藏层数),% 'SwarmSize' 和 'MaxIteration' 会显着影响系统的性能。因此,为了获得理想的结果,您应该根据您的数据使用这些参数来玩 %。这里唯一的缺点是 % 标签是手动完成的,你可以很容易地自己修复它,但 % 是在训练的主要阶段之后。此代码可以扩展为使用其他进化算法(例如 GA 或 DE)进行训练。如果您发现 % 有任何问题,请按以下方式与我联系:这会显着影响您 % 系统的性能。因此,为了获得理想的结果,您应该根据您的数据使用这些参数来玩 %。这里唯一的缺点是 % 标签是手动完成的,你可以很容易地自己修复它,但 % 是在训练的主要阶段之后。此代码可以扩展为使用其他进化算法(例如 GA 或 DE)进行训练。如果您发现 % 有任何问题,请按以下方式与我联系:这会显着影响您 % 系统的性能。因此,为了获得理想的结果,您应该根据您的数据使用这些参数来玩 %。这里唯一的缺点是 % 标签是手动完成的,你可以很容易地自己修复它,但 % 是在训练的主要阶段之后。此代码可以扩展为使用其他进化算法(例如 GA 或 DE)进行训练。

⛄ 部分代码

%% PSO Neural Network Classification

% So, there was no proper evolutionary classification Matlab code in the web,

% Which decided to make one with PSO.

% This code gets data input for classification which contains data and

% labels and stores it into 'netdata'. data consists of 300 samples for 6

% classes which includes 40 features. You can extract your features and

% label it as it is a supervised model. These features are extracted SURF

% features out of small objects images. Now, System is combination of PSO

% and typical shallow neural network. Neural network itself makes the

% initial structure or body of the system but PSO has duty of weighting the

% neurons in training, which true power of evolutionary algorithms present

% here. Finally, result compared with SVM, KNN, and TREE classification

% algorithms as confusion matrix and final recognition accuracy.

% There are three important parameters of 'NH' (number of hidden layers),

% 'SwarmSize' and 'MaxIteration' which effect the performance of thee

% system significantly. So, in order to get desired result, you should play

% with these parameters based on your data. The only drawback here is that

% labeling is done manually, which you can fix it yourself easily, but it

% is after main stage of training. This code could be expanded to be

% trained with other evolutionary algorithms such as GA or DE. If you find

% any problem, please contact me as below:

 

% Email: mosavi.a.i.buali@gmail.com

% Author: Seyed Muhammad Hossein Mousavi

 

% Also this code is part of the following project, so please cite below

% after using the code:

 

% 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.

 

% Thank you for citing the paper and enjoy the code (hope it help you (Be happy :)


%%

warning('off');

% Data Loading

clear;

netdata=load('fortest2.mat');

netdata=netdata.FinalReady;

% Data and Label

network=netdata(:,1:end-1);

netlbl=netdata(:,end);

% Var Change

inputs = network;

targets = netlbl;

% Dim Size

InputNum = size(inputs,2);

OutputNum = size(targets,2);

pr = [-1 1];

PR = repmat(pr,InputNum,1);

% NN Structure (log-sigmoid transfer function)


NH=5;     % Number of Hidden Layers (more better)


Network1 = newff(PR,[NH OutputNum],{'tansig' 'tansig'});

% Train with PSO on Networks Weights

Network1 = TrainPSO(Network1,inputs,targets);

view(Network1)

% Generating Outputs from Our PSO + NN Network Model

outputs = Network1(inputs');

outputs=outputs';

% Size

sizenet=size(network);

sizenet=sizenet(1,1);

% Outputs Error

MSE=mse(outputs);

% Bias Output for Confusion Matrix

outputs=outputs-(MSE*0.1)/2;

% Detecting Mislabeled Data

for i=1 : 50

           if outputs(i) <= 0.9

              out(i)=0;

       elseif outputs(i) >= 0.9

              out(i)=1;            end;end;

for i=51 : 100

           if outputs(i) <= 0.9

              out(i)=0;

       elseif outputs(i) >= 0.9

              out(i)=2;            end;end;

for i=101 : 150

           if outputs(i) <= 0.9

              out(i)=0;

       elseif outputs(i) >= 0.9

              out(i)=3;            end;end;

for i=151 : 200

           if outputs(i) <= 0.9

              out(i)=0;

       elseif outputs(i) >= 0.9

              out(i)=4;            end;end;

for i=201 : 250

           if outputs(i) <= 0.9

              out(i)=0;

       elseif outputs(i) >= 0.9

              out(i)=5;            end;end;

for i=251 : 300

           if outputs(i) <= 0.9

              out(i)=0;

       elseif outputs(i) >= 0.9

              out(i)=6;            end;end;

      out1=single(out');

% PSO Final Accuracy

      psomse=mse(out1,targets);

      MSEError=abs(mse(targets)-mse(out1));

      cnt=0;

      for i=1:sizenet

          if out1(i)~= targets(i)

              cnt=cnt+1;

          end;

      end;

     fin=cnt*100/ sizenet;

     psoacc=(100-fin)-psomse;

%

%% KNN for Comparison

lblknn=netdata(:,end);

dataknn=netdata(:,1:end-1);

Mdl = fitcknn(dataknn,lblknn,'NumNeighbors',8,'Standardize',1);

rng(1); % For reproducibility

knndat = crossval(Mdl);

classError = kfoldLoss(knndat);

% Predict the labels of the training data.

predictedknn = resubPredict(Mdl);

ctknn=0;

for i = 1 : sizenet(1,1)

if lblknn(i) ~= predictedknn(i)

   ctknn=ctknn+1;

end;

end;

finknn=ctknn*100/ sizenet;

KNN=(100-finknn)-classError;

%

%% SVM for Comparison

tsvm = templateSVM('KernelFunction','polynomial');

svmclass = fitcecoc(dataknn,lblknn,'Learners',tsvm);

svmerror = resubLoss(svmclass);

CVMdl = crossval(svmclass);

genError = kfoldLoss(CVMdl);

% Predict the labels of the training data.

predictedsvm = resubPredict(svmclass);

ct=0;

for i = 1 : sizenet(1,1)

if lblknn(i) ~= predictedsvm(i)

   ct=ct+1;

end;

end;

% Compute Accuracy

finsvm=ct*100/ sizenet;

SVMAccuracy=(100-finsvm);

%% Tree for Comparison

Mdl2 = fitctree(dataknn,lblknn);

rng(1); % For reproducibility

treedat = crossval(Mdl2);

classErrortree = kfoldLoss(treedat);

% Predict the labels of the training data.

predictedtree = resubPredict(Mdl2);

cttree=0;

for i = 1 : sizenet(1,1)

if lblknn(i) ~= predictedtree(i)

   cttree=cttree+1;

end;

end;

fintree=cttree*100/ sizenet;

TREE=(100-fintree)-classErrortree;

%% Plots and Results

% Confusion Matrix

figure

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

subplot(2,2,1)

cmsvm = confusionchart(lblknn,predictedsvm);

cmsvm.Title = (['SVM Classification =  ' num2str(SVMAccuracy) '%']);

subplot(2,2,2)

cmknn = confusionchart(lblknn,predictedknn);

cmknn.Title = (['KNN Classification =  ' num2str(KNN) '%']);

subplot(2,2,3)

cmtree = confusionchart(lblknn,predictedtree);

cmtree.Title = (['Tree Classification =  ' num2str(TREE) '%']);

subplot(2,2,4)

cmpso = confusionchart(out1,targets);

cmpso.Title = (['PSO-NN Classification =  ' num2str(psoacc) '%']);

% Regression

figure

set(gcf, 'Position',  [50, 150, 450, 350])

[population2,gof] = fit(targets,out1,'poly4');

plot(targets,out1,'o',...

   'LineWidth',3,...

   'MarkerSize',5,...

   'Color',[0.3,0.9,0.2]);

   title(['PSO - R =  ' num2str(1-gof.rmse)]);

   xlabel('Train Target');

   ylabel('Train Output');  

hold on

plot(population2,'b-','predobs');

   xlabel(' Target');

   ylabel(' Output');  

hold off

% ACC and Metrics Results

fprintf('The SVM Accuracy is = %0.4f.\n',SVMAccuracy)

fprintf('The KNN Accuracy is = %0.4f.\n',KNN)

fprintf('The Tree Accuracy is = %0.4f.\n',TREE)

fprintf('The PSO Accuracy is = %0.4f.\n',psoacc)

fprintf('PSO MSE is = %0.4f.\n',MSEError)

fprintf('PSO RMSE is = %0.4f.\n',sqrt(MSEError))

fprintf('PSO MAE is = %0.4f.\n',mae(targets,out1))

⛄ 运行结果

⛄ 参考文献


⛄ Matlab代码关注

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



相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
1月前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
147 68
|
3天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
|
3天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
1天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
6天前
|
监控 数据可视化 搜索推荐
如何通过数据分析优化营销流程?
在当今竞争激烈的市场中,企业需构建高效的营销流程以整合资源、提升效率并实现业务增长。本文从目标设定、渠道选择、内容创作、数据分析及团队协作工具等方面详细探讨了如何优化营销流程,并指出了常见问题及改进方向。通过明确目标、精准选择渠道、创作高价值内容、用数据驱动决策以及提升团队协作效率,企业能够在激烈的市场竞争中脱颖而出,实现持续增长。
|
28天前
|
机器学习/深度学习 数据采集 人工智能
设计文档:智能化医疗设备数据分析与预测维护系统
本系统的目标是构建一个基于人工智能的智能化医疗设备的数据分析及预测维护平台,实现对医疗设备运行数据的实时监控、高效处理和分析,提前发现潜在问题并进行预防性维修,从而降低故障率,提升医疗服务质量。
|
6月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
109 2
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
306 4
|
6月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
120 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
3月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
191 4
数据分析的 10 个最佳 Python 库