《实验三:分类算法实验培训资料》由会员分享,可在线阅读,更多相关《实验三:分类算法实验培训资料(16页珍藏版)》请在金锄头文库上搜索。
1、实验三:分类算法实验精品文档HUNAN UNIVERSITY人工智能实验报告题目实验三:分类算法实验学生姓名蒙寿伟学生学号201408070120专业班级智能科学与技术1401 班指导老师袁进日期2017年5月15日收集于网络,如有侵权请联系管理员删除精品文档一实验目的1. 了解朴素贝叶斯算法和决策树算法的基本原理;2. 能够使用朴素贝叶斯算法或者决策树算法对数据进行分类3. 学会对于分类器的性能评估方法二、实验的硬件、软件平台硬件:计算机软件:操作系统: WINDOWS2000应用软件: C,Java 或者 Matlab三、实验相关知识P(A | B)P(B)贝叶斯定理: P(B | A)P
2、( A)P(A) 是 A 的先验概率,之所以称为“先验”是因为它不考虑任何B 方面的因素。P(A|B) 是已知 B 发生后 A 的条件概率,也由于得自 B 的取值而被称作 A 的后验概率。P(B|A) 是已知 A 发生后 B 的条件概率,也由于得自 A 的取值而被称作 B 的后验概率。P(B) 是 B 的先验概率,也作标淮化常量(normalizing constant)。以第一条数据为例: vhigh,vhigh,2,2,small,low,unaccClassValues: unacc, acc, good, vgood对应 P(Bi) 。( i=0,1,2,3)收集于网络,如有侵权请联系
3、管理员删除精品文档P(Ai( i=0,1,2,3 )buying: vhigh, high, med, low.maint: vhigh, high, med, low.六个属性相互独立:doors:2, 3, 4, 5more.Persons:2, 4, more.P(A0|B0)*P(A1|B0)*.P(A5|B0)lug_boot: small, med, big.=safety: low, med, high.P(A|B0)分别算出取其中的最大值,其中,P(A)的值相同,可以不算出来。If(P(B|A) 最大 = 测试样例 .ClassValues) return true;Else
4、return false;四、实验内容及步骤实验内容:利用贝叶斯算法或者决策树算法进行数据分类操作数据集:汽车评估数据集( 见附录 )实验步骤:1仔细阅读并了解实验数据集;2使用任何一种熟悉的计算机语言( 比如 C,Java 或者 matlab) 实现朴素贝叶斯P(B0 | A)P( A| B0) P(B0)P(A | B1) P(B1)P( A)P( B1| A)算法或者决策树算法;P( A)P(B2| A)P( A | B2)P(B2)P( A | B3)P(B3)P(A)P(B3| A)P( A)3利用朴素贝叶斯算法或者决策树算法在训练数据上学习分类器, 训练数据的大小分别设置为:前 1
5、00个数据,前 200个数据,前 500个数据,前 700个数据,前 1000个数据,前 1350个数据;收集于网络,如有侵权请联系管理员删除精品文档4利用测试数据对学习的分类器进行性能评估;5统计分析实验结果并上交实验报告;定义和初始化变量统计并计算条件概率P(Ai|Bi),(i=0,1,2,3),当训练数据比较小时会出现Bi 等于 0的情况,这时 P(Ai|Bi)=nan,所以可以加一个判断,当P(Ai|Bi)1时,让 P(Ai|Bi)=0.收集于网络,如有侵权请联系管理员删除精品文档计算 P(Bi | A)P( A | Bi )P(Bi ) (四个里面取最大)P(A)收集于网络,如有侵权
6、请联系管理员删除精品文档实验结果四、思考题:1. 两种算法在训练数据集和测试数据集上的性能一致吗?哪个比较好?决策树( decision tree )是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。不同于贝叶斯算法,决策树的构造过程不依赖领域知识,它使用属性选择度量来选择将元组最好地划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量确定各个
7、特征属性之间的拓扑结构。决策树的成功率为:61.80372%,贝叶斯成功率为:68.7831% ( 贝叶斯更好一点)相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。收集于网络,如有侵权请联系管理员删除精品文档2. 提出一种提高分类器性能的方法并通过实验验证。五、实验心得通过这次实验加深了我对朴素贝叶斯的认识,学会了用朴素贝叶斯算法解决具体的问题。朴素贝叶斯分类是一种十分简单的分类算法,对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就觉得此待分类项属于哪个类别。朴素贝叶斯的原理决定了其成功率不
8、可能太高,但是朴素贝叶斯的简单易用性使得其在一些日常生活中应用广泛。附件(代码)#include#include#include收集于网络,如有侵权请联系管理员删除精品文档#include#include#includeusing namespace std;int countTrain = 0;/训练样本数目int countTest = 0;/测试样本数目int countTestSuc = 0;/测试样本正确的数目int countF=100; /训练和测试的分界string CVname4=unacc,acc,good,vgood;int ClassValues4; /unacc, a
9、cc, good, vgoodint buying44;/vhigh, high, med, low.int maint44;/ vhigh, high, med, low.int doors44;/2, 3, 4, 5more.int persons44;/2, 4, more.int lug_boot44;/small, med, big.int safety44;/low, med, high.float ClassValuesL4; /unacc, acc, good, vgoodfloat buyingL44;/vhigh, high, med, low.float maintL44
10、;/ vhigh, high, med, low.float doorsL44;/2, 3, 4, 5more.float personsL44;/2, 4, more.float lug_bootL44;/small, med, big.float safetyL44;/low, med, high.*/ 统计个数收集于网络,如有侵权请联系管理员删除精品文档voidTonji(stringa,stringb,stringc,stringd,stringe,stringf,string g)/couta b c d e f gendl; for(int i=0;i4;i+)if(g=CVnamei)ClassValuesi+