【分类】基于PCA+Kmeans、PCA+LVQ、BP神经网络实现数据分类附matlab代码

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 【分类】基于PCA+Kmeans、PCA+LVQ、BP神经网络实现数据分类附matlab代码

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

BP 神经网络是一种单向传播的多层前向网络, 它除了有一个输入层和一个输出层之外, 还有一层或多层的隐层, 同层节点中没有任何耦合。输入信号从输入层节点一次传过各隐层节点, 然后传到输出节点, 每一层节点的输出只影响下一层节点的输出。BP 神经网络具有的非线性映射能力保证其能够成功实现各种简单或复杂分类, 其并行结构加速了运算速度。另外, BP 神经网络将信息分布式存储于连结权系数中, 使网络具有较高的容错性和鲁棒性。因此在目前的人工神经网络的实际应用中, 绝大部分的神经网络模型是采用 BP 神经网络及它的变化形式 。然而, 由于 BP神经网络输出层的结点数只能限制在一个较小的取值范围, 因而基于 BP 神经网络的分类器所不得不面临的一个问题就是如何才能够做到分类的细致和多样性。LVQ 神经网络能够通过竞争性的隐层传递函数, 根据目标的类别将输入向量进行组合分类。该网络由两层组成, 第一层为竞争层, 第二层为线性层。竞争层能够学习对输入向量的分类;线性层将竞争层传来的分类信息转变成使用者所定义的类别 。LVQ 神经网络的优势在于:它不仅能够对线性输入数据进行分类,而且还能处理多维的 、甚至是含噪含干扰的数据量。实验已经证明, 只要在各个隐层存在足够的神经元, 那么目标输出的分类量将会得到相应的增加。

⛄ 部分代码

clear all;

close all

wine_data = xlsread('wine.xlsx');


method = 'PL';%PK:PCA & Kmeans  PL:PCA & LVQ  BP:BP Neural Network'

rate = 0.7;%训练集70%,测试集30%

N = 3;


total_cnt = size(wine_data,1);

train_cnt = round(total_cnt*rate);

test_cnt = total_cnt - train_cnt;


rand_idx = randperm(total_cnt);

train_idx = rand_idx(1:train_cnt);

test_idx = rand_idx(train_cnt+1:total_cnt);


train_data = wine_data(train_idx,2:size(wine_data,2));

train_class = wine_data(train_idx,1);

test_data = wine_data(test_idx,2:size(wine_data,2));

test_class = wine_data(test_idx,1);

dim = size(wine_data,2)-1;


%矩阵z-score标准化

train_SM = zeros(train_cnt,dim);

data_mean = mean(train_data);

data_std = std(train_data);

test_SM = zeros(test_cnt,dim);

for j = 1:dim

   train_SM(:,j) = (train_data(:,j) - data_mean(j)) / data_std(j);

   test_SM(:,j) = (test_data(:,j) - data_mean(j)) / data_std(j);

end



%三种方法

switch method

   case 'PK'

       [DS, com_num, PV, score] = PCA(train_SM, 0.66,'ShowFigure');

       %初始化聚类中心

       center_init = zeros(3,com_num);

       for i = 1:N

           center_init(i,:) = mean(score(train_class==i,:));

       end

       [center, train_flag, ~, ~] = Kmeans(score, N,center_init,'ShowFigure');%k-means聚类

       test_score = test_SM * PV;     %测试集的评分

       test_flag = findMinIdx(test_score, center);

       

   case 'PL'

       [DS, com_num, PV, score] = PCA(train_SM, 0.66,'ShowFigure');

       [pv,train_flag] = LVQ(score, train_class, [], (1:N)', 0.1, 1000,'ShowFigure');%LVQ

       test_flag = findMinIdx(test_SM*PV, pv);

       

   case 'BP'

       target = (train_class - 1) / 2;

       net = newff(train_SM',target',10,{'tansig','purelin'},'traingdx');

       net.divideFcn = '';

       net.trainParam.show = 50;

       net.trainParam.epochs = 1000;

       net.trainParam.goal = 0.001;

       net.trainParam.lr = 0.01;

       net = train(net,train_SM',target');

       

       out = sim(net,train_SM');

       train_flag = round(out*2+1)';

       out = sim(net,test_SM');

       test_flag = round(out*2+1)';

   otherwise

       fprintf('check method\n');

       return;

end


train_correct_cnt = sum(train_flag(:,1) == train_class(:,1));

train_accuracy = train_correct_cnt / train_cnt   %训练集准确率


test_correct_cnt = sum(test_flag(:,1) == test_class(:,1));

test_accuracy = test_correct_cnt / test_cnt   %训练集准确率


figure;

plot(1:test_cnt,test_class(:,1),'bo');

hold on;

plot(1:test_cnt,test_flag(:,1),'r*');

legend('实际测试集分类','预测测试集分类');

title([method,',准确率=',num2str(test_accuracy)])

⛄ 运行结果

⛄ 参考文献

[1]钟淑瑛, 李陶深. 基于MATLAB的BP—LVQ神经网络组合分类模型[J]. 计算机技术与发展, 2006, 16(2):3.

⛳️ 完整代码

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



相关文章
|
10月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
658 0
|
10月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
622 2
|
10月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
240 8
|
10月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
714 1
|
10月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
2288 0
|
9月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
1143 0
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
501 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
378 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章