matlab BP神经网络对iris数据集进行分类

这篇具有很好参考价值的文章主要介绍了matlab BP神经网络对iris数据集进行分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

iris数据集

本文所用数据集👉👉👉iris分类数据集文章来源地址https://www.toymoban.com/news/detail-614461.html

1.数据预处理

%% 1.数据预处理
oridata=readtable('Iris.xls','Sheet','Sheet1');
X=table2array(oridata(:,(1:4))); % X转化为array类型
Y=table2array(oridata(:,5));  % Y因为包含中文字符,默认会转化为cell类型
allSample_Num=length(Y); %样本数量

% 中文分类变量转换为数字分类变量  确保这里Y是cell类型
for ii = 1:numel(Y)
    if strcmp(Y{ii}, 'Iris-setosa')
        Y{ii} = 1;
    elseif strcmp(Y{ii}, 'Iris-versicolor')
        Y{ii} = 2;
    elseif strcmp(Y{ii}, 'Iris-virginica')
        Y{ii} = 3;
    end
end
Y=cell2mat(Y); % 将Y转换为array类型

2.设置test和train

test_Ratio=0.2; % 测试集比例

c = cvpartition(allSample_Num, 'HoldOut', test_Ratio); % 通过交叉验证的划分对象进行随机划分
trainIdx=training(c); % logistics数组,值1表示被选取 
testIdx=test(c);  % sum(testIdx) == allSample_Num*0.2

X_train=X(trainIdx,:)'; % why转置?——适应netff函数和mapminmax函数的输入要求(行-特征、列-样本)
X_test=X(testIdx,:)';
Y_train=Y(trainIdx,:)';
Y_test=Y(testIdx,:)';

3.数据归一化

%% 3.数据归一化
[X_train_std, X_train_stdps]=mapminmax(X_train,-1,1);  % X_train归一化
% [Y_train_std, Y_train_stdps]=mapminmax(Y_train);
X_test_std=mapminmax('apply',X_test,X_train_stdps);  % X_test采用和X_train一样的归一化方式
Y_train_OneHot=ind2vec(Y_train); % ind2vec 转为独热编码
Y_test_OneHot=ind2vec(Y_test);

4.设定net参数

MSE=1e+10;  % 最优均方误差,初始化一个极大值
hid_Num=0;  % 最优hidden层数目,初始化为0
transF_func={'tansig','purelin'}; % hidden层和out层的激活函数
btf_func='trainlm';  % 反向传播:学习参数的方法(梯度下降)
lr=0.01; % 学习率
epochs=500;   % 训练次数
goal=0.001; % 收敛误差(均方误差)

5.构建、训练net

net=newff(X_train_std, Y_train_OneHot, 4, transF_func, btf_func);
net.trainParam.lr=lr;
net.trainParam.epochs=epochs;
net.trainParam.goal=goal;
net.trainparam.show = 50 ;% 显示中间结果的周期
net=train(net, X_train_std, Y_train_OneHot);

6.结果测试

res_Train=sim(net,X_train_std); % 3×120,每个样本的各类别概率
res_Test=sim(net,X_test_std);   % 3×30,每个样本的各类别概率

res_Train=vec2ind(res_Train); % 1×120,反归一化,找到分类概率最大的所在分类
res_Test=vec2ind(res_Test); % 1×30,反归一化,找到分类概率最大的所在分类

acu_Train=sum(res_Train==Y_train)/allSample_Num*100 % train准确率
acu_Test=sum(res_Test==Y_test)/(allSample_Num*test_Ratio)*100 % test准确率

总结

  1. maxminmap归一化函数和netff函数的输入矩阵都是==”行特征,列样本“==的格式,注意转置
  2. BP实现分类时,Y为分类变量,预处理时需要将其转换成独热编码,sim后将得到的类别概率转换成分类数值,可通过以下函数实现:
    ind2vec:1×120 --> 3×120(转成独热编码,稀疏矩阵)
    vec2ind:3×120 --> 1×120 (取每一列概率分布值的max)
  3. 多次训练时,应保证随机选取样本不变(不要一次运行所有代码)
  4. matlab BP神经网络对iris数据集进行分类,数学建模,matlab,神经网络,分类

到了这里,关于matlab BP神经网络对iris数据集进行分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【语音识别】BP神经网络语音特征信号分类【含Matlab源码 2338期】

    获取代码方式1: 完整代码已上传我的资源:【语音识别】基于matlab BP神经网络语音特征信号分类【含Matlab源码 2338期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏Matlab语音处理(初级版) 备注: 点击上面蓝色字体 付费专栏Matlab语音处理(初级版

    2024年02月21日
    浏览(44)
  • 基于改进莱维飞行和混沌映射的粒子群优化BP神经网络分类研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 基于改

    2024年02月10日
    浏览(53)
  • 【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

    基于UCI葡萄酒数据集进行葡萄酒分类及产地预测 共包含178组样本数据,来源于三个葡萄酒产地,每组数据包含产地标签及13种化学元素含量,即已知类别标签。 把样本集随机分为训练集和测试集(70%训练,30%测试),根据已有数据集训练一个能进行葡萄酒产地预测的模型,以

    2024年02月16日
    浏览(37)
  • 使用多个神经网络进行细菌分类(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 使用多

    2024年02月15日
    浏览(33)
  • MATLAB——使用建立好的神经网络进行分类程序

    学习目标:使用建立好的神经网络(训练好并保存,下次直接调用该神经网络)进行分类 clear all; close all; P=[-0.4 -0.4 0.5 -0.2 -0.7;-0.6 0.6 -0.4 0.3 0.8];      %输入向量 T=[1 1 0 0 1];                                          %输出向量 plotpv(P,T);                              

    2024年02月13日
    浏览(27)
  • MATLAB卷积神经网络——基于ResNet-50进行图像分类

    一、ResNet50工具箱安装 (1)下载工具箱 https://ww2.mathworks.cn/matlabcentral/fileexchange/64626-deep-learning-toolbox-model-for-resnet-50-network (2)在matlab打开下载的resnet50.mlpkginstall文件 (3)使用下面代码进行测试,出现结果说明安装成功 二、训练猫狗数据集 (1)数据集下载链接:    http

    2024年02月21日
    浏览(47)
  • 【Matlab】基于BP神经网络的数据回归预测(Excel可直接替换数据)

    BP(Backpropagation)回归模型是一种基于反向传播算法的神经网络模型,用于解决回归问题。它通过对输入和输出之间的非线性关系进行建模,可以用于预测连续型变量的值。 神经网络结构: BP回归模型由一个或多个隐藏层组成,每个隐藏层包含多个神经元,以及一个输出层。

    2024年02月16日
    浏览(39)
  • 【Matlab】基于BP神经网络的数据回归预测新数据(Excel可直接替换数据)

    基于BP神经网络的数据回归预测是一种常见的机器学习方法,用于处理回归问题。回归问题的目标是根据输入数据预测连续的数值输出。在这种预测中,BP神经网络通过前向传播和反向传播算法自动学习输入数据与输出之间的映射关系,并能够在新的输入数据上进行预测。下面

    2024年02月15日
    浏览(94)
  • 【Matlab】基于BP神经网络的时间序列预测(Excel可直接替换数据)

    BP(Backpropagation)时间序列预测模型是一种基于反向传播算法的神经网络模型,用于解决时间序列预测问题。它通过对时间序列数据的历史模式进行学习和建模,可以预测未来的数值。 以下是BP时间序列预测模型的详细原理: 数据准备: 时间序列数据通常是按照时间顺序排列

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包