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

简介: 【分类】基于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电子书和数学建模资料



相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
46 3
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于BP神经网络的苦瓜生长含水量预测模型matlab仿真
本项目展示了基于BP神经网络的苦瓜生长含水量预测模型,通过温度(T)、风速(v)、模型厚度(h)等输入特征,预测苦瓜的含水量。采用Matlab2022a开发,核心代码附带中文注释及操作视频。模型利用BP神经网络的非线性映射能力,对试验数据进行训练,实现对未知样本含水量变化规律的预测,为干燥过程的理论研究提供支持。
|
3月前
|
机器学习/深度学习 传感器 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的秘密
在这个数字信息爆炸的时代,深度学习技术如同一把钥匙,揭开了数据隐藏的层层秘密。本文将深入浅出地探讨深度学习的核心概念、关键技术和实际应用,带领读者领略这一领域的奥秘与魅力。通过生动的比喻和直观的解释,我们将一起走进神经网络的世界,看看这些由数据驱动的“大脑”是如何学习和成长的。无论你是科技爱好者还是行业新手,这篇文章都将为你打开一扇通往未来的大门。
|
1月前
|
机器学习/深度学习 算法 5G
基于BP神经网络的CoSaMP信道估计算法matlab性能仿真,对比LS,OMP,MOMP,CoSaMP
本文介绍了基于Matlab 2022a的几种信道估计算法仿真,包括LS、OMP、NOMP、CoSaMP及改进的BP神经网络CoSaMP算法。各算法针对毫米波MIMO信道进行了性能评估,通过对比不同信噪比下的均方误差(MSE),展示了各自的优势与局限性。其中,BP神经网络改进的CoSaMP算法在低信噪比条件下表现尤为突出,能够有效提高信道估计精度。
40 2
|
1月前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码
本程序系统基于BP译码的LDPC误码率MATLAB仿真,分析不同码长、码率、信道对译码性能的影响,并与卷积码、Turbo码及BCH编译码进行对比。升级版增加了更多码长、码率和信道的测试,展示了LDPC码的优越性能。LDPC码由Gallager在1963年提出,具有低复杂度、可并行译码等优点,近年来成为信道编码研究的热点。程序在MATLAB 2022a上运行,仿真结果无水印。
57 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习与神经网络:探索复杂数据的表示
【9月更文挑战第26天】深度学习作为人工智能领域的明珠,通过神经网络自动从大数据中提取高级特征,实现分类、回归等任务。本文介绍深度学习的基础、张量表示、非线性变换、反向传播及梯度下降算法,并探讨其在计算机视觉、自然语言处理等领域的应用与挑战。未来,深度学习将更加智能化,揭示数据背后的奥秘。
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
202 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
103 9
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
129 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章