利用神经网络对鸢尾花数据集分类
详细实现代码请见:https://download.csdn.net/download/weixin_43521269/12578696
一.简介
一个人工神经元网络是由一个多层神经元结构组成,每一层神经元拥有输入(它的输入是前一层神经元的输出)和输出,我们把神经元和与之对应的神经元之间的连线用生物学的名称,叫做突触,在数学模型中每个突触有一个加权数值,称做权重,此时第i层上的某个神经元所得到的输出等于每一个权重乘以第i-1层上对应的神经元的输出之和,最后再通过激活函数来对输出进行量化,在与阈值相比较判断是否属于某一类。
本文主要对BP神经网络进行一些粗浅的研究,对神经网络的原理进行了解后,尝试编写基于matlab的BP神经网络代码,然后进行实验。主要采取matlab中自带的数据集:鸢尾花数据集,有三个类别且每个类别具有4个属性,采用K-fold(交叉验证)对数据集进行划分,获取训练数据和测试数据,使用训练集进行训练,得出感知器输出方程的各个权重,接下来对测试集进行测试,最终与原标签进行比较,计算准确率。再调用matlab中的神经网络包对测试集进行测试,得出结果与编写的进行比较。
二.问题描述与数据描述
(一)问题描述
通过本实验加深对神经网络的理解,实现使用BP神经网络对鸢尾花数据集进行分类。
(二)数据描述
matlab中有自带的鸢尾花数据集,且都是已经处理好成mat格式,故只要直接导入便可。它是很常用的一个数据集,鸢尾花有三个分类,分别是山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。而且只有四个属性,分别是花萼长度、花萼宽度、花瓣长度、花瓣宽度。总共150条数据。
三.如何解决问题
(一)模型假设
将鸢尾花的属性以坐标形式表示,建立以下支持BP神经网络模型:
1.如图所示