Weka中的贝叶斯网络类和变量分析.pdf
- 文档编号:3179676
- 上传时间:2022-11-19
- 格式:PDF
- 页数:5
- 大小:713.11KB
Weka中的贝叶斯网络类和变量分析.pdf
《Weka中的贝叶斯网络类和变量分析.pdf》由会员分享,可在线阅读,更多相关《Weka中的贝叶斯网络类和变量分析.pdf(5页珍藏版)》请在冰豆网上搜索。
WWekaeka中中的贝叶斯网络类和变量分析的贝叶斯网络类和变量分析全全同同学学著著因为涉及的接口等地方很多,所以我一般情况下不对接口类的东西进行描述。
对于一些重要的变量和类,有必要进行详细说明,这在程序中似乎没有足够的讲解,有必要性。
我试图按照程序或者数学逻辑的顺序进行一一解释,同时兼顾一些非常关键的限制条件类。
把贝叶斯牧师的照片放在下边以便膜拜膜拜。
贝叶斯(1702(壬午年)-1763)ThomasBayes,英国数学家。
1702年出生于伦敦,做过神甫。
1742年成为英国皇家学会会员。
1763年4月7日逝世。
贝叶斯在数学方面主要研究概率论。
他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献。
1763年发表了这方面的论著,对于现代概率论和数理统计都有很重要的作用。
贝叶斯的另一著作机会的学说概论发表于1758年。
贝叶斯所采用的许多术语被沿用至今。
首先,要构建一个网络。
WeuseNij(1in,1jqi)todenotethenumberofrecordsinDforwhichpa(xi)takesitsjthvalue.WeuseNijk(1in,1jqi,1kri)todenotethenumberofrecordsinDforwhichpa(xi)takesitsjthvalueandforwhichxitakesitskthvalue.So,Nij=Prik=Nijk理解Nijk的含义是有好处的。
中文表达是,Xi的地i个属性取第j个值得时候,xi本身取第K个值的时候数据的数量。
我看的K2算法的数学含义就写在下边公式:
几乎所有方法都与hillclimbing的思想有些关系,但是实现上略有不同。
Arcs是弧线的意思。
Manual里边给出的意思是:
hillclimbingaddarcswithafixedorderingofvariables.Specificoption:
randomOrderiftruearandomorderingofthenodesismadeatthebeginningofthesearch.Iffalse(default)theorderinginthedatasetisused.TheonlyexceptioninbothcasesisthatincasetheinitialnetworkisanaiveBayesnetwork(initAsNaiveBayessettrue)theclassvariableismadefirstintheordering.因为local和global里边都会有k2等算法,所以我觉得这几句话也是必要的:
localscoremetrics:
LearninganetworkstructureBScanbeconsideredanoptimizationproblemwhereaqualitymeasureofanetworkstructuregiventhetrainingdataQ(BS|D)needstobemaximized.globalscoremetrics:
AnaturalwaytomeasurehowwellaBayesiannet-workperformsonaivendatasetistopredictitsfutureperformancebyestimatingexpectedutilities,suchasclassificationaccuracy.Cross-validationprovidesanoutofsampleevaluationmethodtofacilitatethisbyrepeatedlysplittingthedataintrainingandvalidationsets.ABayesiannetworkstructurecanbeevaluatedbyestimatingthenetworksparam-etersfromthetrainingsetandtheresultingayesiannetworksperfor-mancedeterminedagainstthevalidationset.TheaverageperformanceoftheBayesiannetworkoverthevalidationsetsprovidesametricforthequalityofthenetwork.Cross-validationdiffersfromlocalscoringmetricsinthatthequalityofanetworkstructureoftencannotbedecomposedinthescoresoftheindi-vidualnodes.So,thewholenetworkneedstobeconsideredinordertodeterminethescore.这个东西以后也有用:
很多时候我们根本用不到ADTree比如HowdoIcreatearandomBayesnetstructure?
Runningfromthecommandlinejava.BayesNetGenerator-B-N10-A9-C2willprintaBayesnetwith10nodes,9arcsandbinaryvariablesinXMLBIFformattostandardoutput意味着这个类一般都不怎么用,因为我们都是用训练数据去构造一个可靠的贝叶斯类。
作为抽象类classifier这个函数,又继承了一批接口。
主要是一个分类器的构建问题,需要用到一些功能。
Attribute这个类经常被用到,看到代码发现他主要是有很多多态函数。
参数不同意思也有点变化。
还有一些函数几乎没有用处。
毕竟是一个大型的系统,所以,不可能一个雷中就只针对性的列出需要的功能。
那个capacities的类,我看着像一个大容器。
但是她定义了什么enable,我不知道是想干什么。
下边这个函数很重要,但是代码注释还是很简明的。
publicvoidbuildClassifier(Instancesinstances)throwsException/canclassifierhandlethedata?
getCapabilities().testWithFail(instances);/removeinstanceswithmissingclassinstances=newInstances(instances);instances.deleteWithMissingClass();/ensurewehaveadatasetwithdiscretevariablesonlyandwithnomissingvaluesinstances=normalizeDataSet(instances);/Copytheinstancesm_Instances=newInstances(instances);/sanitycheck:
needmorethan1variableindatatsetm_NumClasses=instances.numClasses();/initializeADTreeif(m_bUseADTree)m_ADTree=ADNode.makeADTree(instances);/System.out.println(Oef,done!
);/buildthenetworkstructureinitStructure();/buildthenetworkstructurebuildStructure();/buildthesetofCPTsestimateCPTs();/Savespace/m_Instances=newInstances(m_Instances,0);m_ADTree=null;/buildClassifierFcount和iclass,仔细看一下能够知道它们是用来计数和计算CPT的publicvoidsetOptions(Stringoptions)throwsException这个函数,主要是根据外界输入来判断该怎么调用搜索算法的,publicStringgetOptions()我感觉这个函数主要目的是根据weka运行的选项找到操作的方法。
不一定对,就说说自己的理解。
publicStringtoString()就是输出到界面的方法,我感觉weka里边的代码不能直接在myeclipse上改动。
不知道是怎么做到的它还能画出图,所以会有一些关于作图的神奇函数,其实java里边我应该叫方法,但是无所谓了,whateverpublicintgraphType()returnDrawable.BayesNet;/*ReturnsaBayesNetgraphinXMLBIFver0.3format.*returnStringrepresentingthisBayesNetinXMLBIFver0.3*throwsExceptionincaseBIFgenerationfails*/publicStringgraph()throwsExceptionreturntoXMLBIF03();for(intiAttribute=0;iAttributem_Instances.numAttributes();iAttribute+)text.append(n);text.append(+XMLNormalize(m_Instances.attribute(iAttribute).name()+n);for(intiValue=0;iValuem_Instances.attribute(iAttribute).numValues();iValue+)text.append(+XMLNormalize(m_Instances.attribute(iAttribute).value(iValue)+n);text.append(n);看这些东西我发现有个特点,凡是i开头的,很多都是一个计数累加的东西,但是M开头的,很多就是直接算出来的一个总和,一个上限。
关于XML的东西我选择直接略过,比如protectedStringXMLNormalize(StringsStr)StringBuffersStr2=newStringBuffer();for(intiStr=0;iStrsStr.length();iStr+)charc=sStr.charAt(iStr);switch(c)case&:
sStr2.append(&);break;case:
sStr2.append(');break;case:
sStr2.append(");break;case:
sStr2.append(>);break;de
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Weka 中的 贝叶斯 网络 变量 分析