【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

一、数据介绍

基于UCI葡萄酒数据集进行葡萄酒分类及产地预测

共包含178组样本数据,来源于三个葡萄酒产地,每组数据包含产地标签及13种化学元素含量,即已知类别标签。

把样本集随机分为训练集和测试集(70%训练,30%测试),根据已有数据集训练一个能进行葡萄酒产地预测的模型,以正确区分三个产地所产出的葡萄酒,

分别采用PCA+Kmeans、PCA+LVQ、BP神经网络等方法进行模型的训练与测试,准确率都能达到95%左右。

二、效果展示

1.PCA-Kmeans




train_accuracy = 0.95

test_accuracy = 0.98

2.PCA-LVQ




3.BP


三、代码展示(部分代码)

bash 复制代码
clear all;
wine_data = xlsread('wine.xlsx');  %分类标签默认第一列

method = 'BP';%PK: PCA & Kmeans 
%PL:        PCA & LVQ  
%BP:         BP Neural Network'
rate = 0.7;%训练集70%,测试集30%
N = size(unique(wine_data(:,1)),1);;

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

四、代码获取

私信回复"58期"即可获取下载链接。

相关推荐
啊阿狸不会拉杆2 分钟前
《数字图像处理》第 5 章-图像复原与重建
图像处理·人工智能·算法·matlab·数字图像处理
春日见26 分钟前
如何跑通,吃透一个开源项目?
linux·运维·开发语言·数码相机·matlab
技术净胜31 分钟前
MATLAB数据清洗流程包含:缺失值处理/异常值检测/重复值删除
开发语言·matlab
cici158741 小时前
MATLAB全景拼接完整实现方案
图像处理·计算机视觉·matlab
kaikaile19952 小时前
雷达仿真中时域与频域脉冲压缩的对比 MATLAB实现
开发语言·matlab
listhi5202 小时前
MATLAB中实现用于控制、优化等自动化领域的模糊神经网络
神经网络·matlab·自动化
崇山峻岭之间2 小时前
Matlab学习记录06
前端·学习·matlab
IT猿手2 小时前
基于粒子群算法与动态窗口混合的无人机三维动态避障路径规划研究,MATLAB代码
算法·matlab·无人机·多目标优化算法·多目标算法
leo__5202 小时前
MATLAB 实现 基分类器为决策树的 AdaBoost
开发语言·决策树·matlab
idkmn_2 小时前
Daily AI 20251219 (PyTorch基础回顾3)
人工智能·pytorch·python·深度学习·神经网络