贝叶斯分类器报告_第1页
贝叶斯分类器报告_第2页
贝叶斯分类器报告_第3页
贝叶斯分类器报告_第4页
贝叶斯分类器报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE实验报告一、实验目的通过上机编程加深对贝叶斯分类器分类过程的理解,同时提高分析问题、解决问题、实际操作的能力。二、实验数据说明实验数据来源于/ml/,详细说明请见附件一。数据源的完整名称是WineDataSet,是对3种不同的酒进行分类。这三种酒包括13种不同的属性。13种属性分别为:Alcohol,Malicacid,Ash,Alcalinityofash,Magnesium,Totalphenols,Flavanoids,Nonflavanoidphenols,Proanthocyanins,Colorintensity,Hue,OD280/OD315ofdilutedwines,Proline。在“wine.data”文件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的对应属性的样本值。其中第1类有59个样本,第2类有71个样本,第3类有48个样本。朴素贝叶斯分类算法分析贝叶斯分类器是用于分类的贝叶斯网络。该网络中应包含类结点C,其中C的取值来自于类集合(c1,c2,...,cm),还包含一组结点X=(X1,X2,...,Xn),表示用于分类的特征。对于贝叶斯网络分类器,若某一待分类的样本D,其分类特征值为x=(x1,x2,...,xn),则样本D属于类别ci的概率P(C=ci|X1=x1,X2=x2,...,Xn=xn),(i=1,2,...,m)应满足下式:P(C=ci|X=x)=Max{P(C=c1|X=x),P(C=c2|X=x),...,P(C=cm|X=x)} 而由贝叶斯公式:P(C=ci|X=x)=P(X=x|C=ci)*P(C=ci)/P(X=x)其中,P(C=ci)可由领域专家的经验得到,而P(X=x|C=ci)和P(X=x)的计算则较困难。实验结果使用贝叶斯分类算法,最后得到测试样本是属于哪个类的酒。以下是详细实现过程。实验结果如下图所示。实验源码请见附件三。附件一:实验数据说明:1.TitleofDatabase:Winerecognitiondata UpdatedSept21,1998byC.Blake:Addedattributeinformation2.Sources:(a)Forina,M.etal,PARVUS-AnExtendiblePackageforDataExploration,ClassificationandCorrelation.InstituteofPharmaceuticalandFoodAnalysisandTechnologies,ViaBrigataSalerno,16147Genoa,Italy.(b)StefanAeberhard,email:stefan@.au(c)July19913.PastUsage:(1)S.Aeberhard,D.CoomansandO.deVel,ComparisonofClassifiersinHighDimensionalSettings,Tech.Rep.no.92-02,(1992),Dept.ofComputerScienceandDept.ofMathematicsandStatistics,JamesCookUniversityofNorthQueensland.(AlsosubmittedtoTechnometrics).Thedatawasusedwithmanyothersforcomparingvariousclassifiers.Theclassesareseparable,thoughonlyRDAhasachieved100%correctclassification.(RDA:100%,QDA99.4%,LDA98.9%,1NN96.1%(z-transformeddata))(Allresultsusingtheleave-one-outtechnique)Inaclassificationcontext,thisisawellposedproblemwith"wellbehaved"classstructures.Agooddatasetforfirsttestingofanewclassifier,butnotverychallenging.(2)S.Aeberhard,D.CoomansandO.deVel,"THECLASSIFICATIONPERFORMANCEOFRDA"Tech.Rep.no.92-01,(1992),Dept.ofComputerScienceandDept.ofMathematicsandStatistics,JamesCookUniversityofNorthQueensland.(AlsosubmittedtoJournalofChemometrics).Here,thedatawasusedtoillustratethesuperiorperformanceoftheuseofanewappreciationfunctionwithRDA.4.RelevantInformation:--ThesedataaretheresultsofachemicalanalysisofwinesgrowninthesameregioninItalybutderivedfromthreedifferentcultivars.Theanalysisdeterminedthequantitiesof13constituentsfoundineachofthethreetypesofwines.--Ithinkthattheinitialdatasethadaround30variables,butforsomereasonIonlyhavethe13dimensionalversion.Ihadalistofwhatthe30orsovariableswere,buta.)Ilostit,andb.),Iwouldnotknowwhich13variablesareincludedintheset.--Theattributesare(dontatedbyRiccardoLeardi,riclea@anchem.unige.it) 1)Alcohol 2)Malicacid 3)Ash 4)Alcalinityofash 5)Magnesium 6)Totalphenols 7)Flavanoids 8)Nonflavanoidphenols 9)Proanthocyanins 10)Colorintensity 11)Hue 12)OD280/OD315ofdilutedwines 13)Proline5.NumberofInstances class159 class271 class3486.NumberofAttributes 137.ForEachAttribute: Allattributesarecontinuous.Nostatisticsavailable,butsuggesttostandardise variablesforcertainuses(e.g.foruswithclassifierswhichareNOTscaleinvariant) NOTE:1stattributeisclassidentifier(1-3)8.MissingAttributeValues: None9.ClassDistribution:numberofinstancesperclass class159 class271 class348附件二:实验数据:/ml/machine-learning-databases/wine/附件三:源程序:BayesianClassifier.h#include<string>#include<vector>#include<set>#include<ctime>#include<algorithm>#include<cmath>#include<map>usingnamespacestd;// 1)Alcohol// 2)Malicacid// 3)Ash// 4)Alcalinityofash// 5)Magnesium// 6)Totalphenols// 7)Flavanoids// 8)Nonflavanoidphenols// 9)Proanthocyanins// 10)Colorintensity// 11)Hue// 12)OD280/OD315ofdilutedwines// 13)ProlineintTrainNum=130; //所有训练数据的范围intTestNum=48; structOriginalData{ doubleA1; doubleA2; doubleA3; doubleA4;doubleA5;doubleA6; doubleA7; doubleA8; doubleA9; doubleA10; doubleA11; doubleA12; doubleA13; doubleA14;};BayesianClassifier.cpp#include<iostream>#include<fstream>#include<sstream>#include"BayesianClassifier.h"usingnamespacestd;constintShuxing=13;//属性总数ifstreamf; vector<OriginalData>trainData;//存放训练数据vector<OriginalData>testData;//存放测试数据doubleA[3];//先验概率intm;//存放每一类型,每种属性中某数值的概率map<double,double>C1_map[Shuxing];map<double,double>C2_map[Shuxing];map<double,double>C3_map[Shuxing];//从文件中读取数值voidDataRead(vector<OriginalData>&data,constchar*fileName){ f.open(fileName); intZHjiang; if(fileName[0]=='w') ZHjiang=TrainNum; else ZHjiang=TestNum; stringline; OriginalDatawine; for(inti=0;i<ZHjiang;i++) { f>>line; while(line.find(',')>0&&line.find(',')<line.length()) { line[line.find(',')]=''; } istringstreamstream(line); stream>>wine.A1>>wine.A2>>wine.A3>>wine.A4>>wine.A5>>wine.A6>>wine.A7>>wine.A8>> wine.A9>>wine.A10>>wine.A11>>wine.A12>>wine.A13>>wine.A14; data.push_back(wine); } f.close();}voidbayes(){ intcount1=0,count2=0,count3=0; inti; for(i=0;i<TrainNum;i++) { if(trainData[i].A1==1) { count1++; } if(trainData[i].A1==2) { count2++; } if(trainData[i].A1==3) { count3++; }//统计三类数据,各自求和 } A[0]=(double)count1/(double)TrainNum;//求先验概率 A[1]=(double)count2/(double)TrainNum; A[2]=(double)count3/(double)TrainNum; map<double,double>::iteratorpipei;for(i=0;i<TrainNum;i++) { if(trainData[i].A1==1)//求P(Xk|C1)中Xk的个数 { intj=0; for(;j<13;j++) { doubletemp=*(&trainData[i].A2+j); pipei=C1_map[j].find(temp); if(pipei==C1_map[j].end()) { C1_map[j].insert(map<double,double>::value_type(temp,1)); } else { doublej=pipei->second; pipei->second=j+1; } } } if(trainData[i].A1==2)//求P(Xk|C2)中Xk的个数 { intj=0; for(;j<13;j++) { doubletemp=*(&trainData[i].A2+j); pipei=C2_map[j].find(temp); if(pipei==C2_map[j].end()) { C2_map[j].insert(map<double,double>::value_type(temp,1)); } else { doublej=pipei->second; pipei->second=j+1; } } } if(trainData[i].A1==3)//求P(Xk|C3)中Xk的个数 { intj=0; for(;j<13;j++) { doubletemp=*(&trainData[i].A2+j); pipei=C3_map[j].find(temp); if(pipei==C3_map[j].end()) { C3_map[j].insert(map<double,double>::value_type(temp,1)); } else { doublej=pipei->second; pipei->second=j+1; } } } } //概率 for(i=0;i<Shuxing;i++) { for(pipei=C1_map[i].begin();pipei!=C1_map[i].end();++pipei) { doublenum=pipei->second; pipei->second=(double)num/(double)count1; } for(pipei=C2_map[i].begin();pipei!=C2_map[i].end();++pipei) { doublenum=pipei->second; pipei->second=(double)num/(double)count2; } for(pipei=C3_map[i].begin();pipei!=C3_map[i].end();++pipei) { doublenum=pipei->second; pipei->second=(double)num/(double)count3;} }}voidhouyan()//计算后验分布,找出最大值{ inti,j,k; doublep[3]; for(i=0;i<TestNum;i++) { doublepXC[3]={0,0,0}; for(j=0;j<3;j++) { map<double,double>::iteratorpipei; //计算p(X|C1) for(k=0;k<Shuxing;k++) { pipei=C1_map[k].find(*(&testData[i].A2+k)); if(pipei!=C1_map[k].end()) { pXC[0]=pXC[0]+pipei->second; } } p[0]=A[0]*pXC[0]; //计算p(X|C2) for(k=0;k<Shuxing;k++) { pipei=C2_ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论