当前位置:文档之家› 模式识别关于男女生身高和体重的神经网络算法

模式识别关于男女生身高和体重的神经网络算法

模式识别实验报告(二)
学院:
专业:
学号:
姓名:XXXX
教师:
目录
1实验目的 (1)
2实验内容 (1)
3实验平台 (1)
4实验过程与结果分析 (1)
4.1基于BP神经网络的分类器设计 .. 1 4.2基于SVM的分类器设计 (4)
4.3基于决策树的分类器设计 (7)
4.4三种分类器对比 (8)
5.总结 (8)
1)1实验目的
通过实际编程操作,实现对课堂上所学习的BP神经网络、SVM支持向量机和决策树这三种方法的应用,加深理解,同时锻炼自己的动手实践能力。

2)2实验内容
本次实验提供的样本数据有149个,每个数据提取5个特征,即身高、体重、是否喜欢数学、是否喜欢文学及是否喜欢运动,分别将样本数据用于对BP神经网络分类器、SVM支持向量机和决策树训练,用测试数据测试分类器的效果,采用交叉验证的方式实现对于性能指标的评判。

具体要求如下:
BP神经网络--自行编写代码完成后向传播算法,采用交叉验证的方式实现对于性能指标的评判(包含SE,SP,ACC和AUC,AUC的计算可以基于平台的软件包);
SVM支持向量机--采用平台提供的软件包进行分类器的设计以及测试,尝试不同的核函数设计分类器,采用交叉验证的方式实现对于性能指标的评判;
决策树--采用平台提供的软件包进行分类器的设计以及测试,采用交叉验证的方式实现对于性能指标的评判(包含SE,SP,ACC和AUC,AUC的计算基于平台的软件包)。

3)3实验平台
专业研究方向为图像处理,用的较多的编程语言为C++,因此此次程序编写用的平台是VisualStudio及opencv,其中的BP神经网络为自己独立编写, SVM 支持向量机和决策树通过调用Opencv3.0库中相应的库函数并进行相应的配置进行实现。

将Excel中的119个数据作为样本数据,其余30个作为分类器性能的测试数据。

4)4实验过程与结果分析
4.1基于BP神经网络的分类器设计
BP神经网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。

其学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

在独自设计的BP神经中,激励函数采用sigmod函数,输入层节点个数为5,
一个隐层并且节点数为5,输出节点数为1个,通过读取excel中相应的特征数据,进行训练,再用测试数据进行测试。

如图4-1为所设计的BP类。

图4-1 BP类的设计源码
如图4-1,其中重要的两个函数便是神经网络的训练train和识别函数recognize,具体的源码如图4-2,图4-3,图4-4。

其中训练函数包括了前向传播以及后向传播的权值修正,而识别函数只包括了前向传播后输出计算结果。

图4-2 BP分类器的训练函数一
图4-3 BP分类器的训练函数二
图4-4 BP分类器的识别函数
输入119个样本数据进行训练后,输入30个测试数据进行测试,测试结果如图4-5所示。

通过数据可以看出共30个测试数据,其中有两个正样本被分为
负样本,即男生分类成了女生。

其中ROC曲线(受试者工作特性曲线)如图4-6,可见该曲线的AUC值为0.96表示分类器的效果是较好的,从敏感性(SE)、特异性(SP)和准确率(ACC)也可以看出分类器的效果还是不错的。

图4-5 BP测试结果
图4-6 BP测试结果的ROC曲线
4.2基于SVM的分类器设计
SVM即支持向量机。

SVM的主要思想可以概括为两点:第一是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。

通常在线性不可分的情况下,通过核函数进行非线性映射达到线性可分的效果。

其中核函数的类型包括线型、多项式型和RBF高斯核等,采用不同的核函数可能造成的分类效果有所区别,在本实验中分别利用三种核函数对测试数据进行测试。

SVM调用Opencv3.0中的库函数来实现,Opencv3.0所集成的SVM为libsvm。

源码如图4-7。

图4-7 SVM调用源码
由图4-7可以看到,首先对SVM进行了参数设置,接着调用训练函数,接着进行测试数据测试,分别采用高斯核、线型核和SIGMOD核测试结果如图4-8到4-10,所对应的ROC曲线如图4-11到4-13所示。

图4-8 高斯核分类结果
图4-9 线型核分类结果
图4-10 SIGMOD核分类结果
图4-11 高斯核分类ROC曲线
图4-12 线型核分类ROC曲线
图4-13 SIGMOD核分类ROC曲线
由上面的图4-8到图4-13可以看出,高斯核出现2个分类错误,线性核出现3个分类错误,而sigmod核未出现分类错误,再结合ROC曲线及AUC值,可以看出对于测试数据,sigmod核函数具有最高的分类效果,可以实现完全的正确分类,而高斯核其次,线性核性能稍微差一点,出现误差的类型都是将男生错分为了女生。

4.3基于决策树的分类器设计
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。

由于这种决策分支画成图形很像一棵树的枝干,故称决策树。

在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。

在本次实验中,调用Opencv3.0中的决策树类来进行数据的训练与分类。

调用源码如图4-14。

图4-14 决策树调用源码
在图4-14中,首先初始化决策树,设置了决策树的最大深度等初始化信息,接着进行样本数据训练,最后进行预测数据预测,其结果如图4-15和图4-16。

图4-15 决策树测试结果图4-16 决策树测试结果ROC曲线
由图4-15到图4-16可以看出,在决策树分类器对于测试数据的分类中也出现了两个分类错误,也是将男生分为了女生。

4.4三种分类器对比
5.总结
通过这次实验,对课堂上所学习的BP神经网络、SVM、决策树进行了学习巩固,加深了对其原理的理解,通过编程完成了对分类器的训练和预测的实验过程。

通过参数的调节所设计的分类器在30个测试数据中都有较好的分类效果,其中最差的仅将三个数据分错,通过观察可以发现,分类错误主要都是将男生误分类成了女生,原因在于该男生的特征数据与女生较为相似,这应该是造成分类错误的一大原因,同时分类器在编程设计当中也存在很多问题,分类效果有待提高。

通过这次的实验,发现了自己的很多不足,上课要更认真的听讲,及时解决遇到的问题,编程能力也急需提高,MATLAB强大的功能要学会使用,同时要进一步提高C++变成水平,为以后实际的工程项目及应用打好基础。

相关主题