实验描述:
对指定数据集进行分类问题的分析,选择适当的分类算法,编写程序实现,提交程序和结果报告
数据集: balance-scale.data(见附件一) ,已有数据集构建贝叶斯分类器。
数据包括四个属性:五个属性值 第一个属性值表示样本的类别号,其他四个属性为四个不同的特征值。
实验环境和编程语言:
本实验使用的编程语言为:Java
编程环境为:Intellij idea
构建分类器的算法为:朴素贝叶斯算法
训练的样本个数为:625个
样本示例:R,1,1,1,2(表示属于R类,四各属性值为1 1 1 2)
训练样本和测试样本见附件一。
工程和测试数据下载地址:
http://download.csdn.net/detail/qq_24369113/9711643
实验结果分析:
根据程序运行的结果如图1-1所示,使用训练的样本对分类器进行检测,分类得到295个R类(实际288个),330个L类(实际288个),0个B类(实际49个),综合分类正确率为92.16%。可以认为分类器有较高的正确率,但是对于类B的分类还是有一定的误差,具体原因会在思考与改进中说明。
思考与改进:
思考点:
本次实验编程利用朴素贝叶斯算法构建的分类器,虽然整体情况是拥有较高的分类正确率(92.16%),但是对训练样本再检测时没有发现一个B类样本,出现的较大的偏差,分析原因如下:
1. B类样本点总数很少,以至于P(yB)就远远小于P(yR)和P(yL),所以对于后验概率公式,P(yB|x)必然比P(yL|x)和P(yR|x)要小,因此导致最后样本难以分到B类。
2. 观察训练样本集可以发现,B类的样本点和L类以及R类并没有很大区别,其不具备很强的统计可分性,所以对于依赖于统计概率的贝叶斯方法无法体现出其优势,所以导致了最终没有样本被分到B类中。
改进点:
本算法在实现贝叶斯分类的时候,每一次都进行了遍历样本集来求出
P(a1|y1)、P(a2|y1)……P(a