如何在WEKA中添加自己的算法

如何在WEKA中添加自己的算法,第1张

1. 编写新算法,所编写的新算法必须符合Weka 的接口标准。在此以从Weka中文站上下载的一个算法(模糊C均值聚类算法:FuzzyCMeans)的添加为例说明其具体过程。

2. 由于FuzzyCMeans是聚类算法,所以直接将FuzzyCMeans.java 源程序考到 weka.clusterers 包下

3. 再修改weka.gui.GenericObjectEditor.props ,在#Lists the Clusterers I want to choose from的weka.clusterers.Clusterer=\下加入:weka.clusterers.FuzzyCMeans

4. 相应的修改weka.gui.GenericPropertiesCreator.props ,此去不用修改,因为包weka.clusterers已经存在,若加入新的包时则必须修改这里,加入新的包

我试了一下,这样加入之后,重新编译,运行后,可以在weka的Explorer界面上的Cluster选项卡中的聚类算法中找到刚刚新添加的FuzzyCMeans算法。

添加过程简单吧!关键问题是要弄清楚Weka的内核以及其接口标准,然后编写出符合此规范的新算法。

你可以用程序debug跟踪一下,以前是weka中NaiveBayesSimple类的主要函数和作用。

(1) globalInfo()

返回该分类器的描述字符串.

(2) getTechnicalInformation()

返回一个TechnicalInformation类型的对象实例,包含该类的技术背景等信息.

(3) getCapabilities()

返回默认参数.

(4) BuildClassifier(Instances instances)

BuildClassifier()方法从一个训练数据集合instances构造一个分类器.求出所有名称型属性的后验概率,类属性的先验概率,数值属性的均值和方差,为后来的分类工作做准备.

(5) distributionForInstance (Instance instance)

该方法计算待分类实例instance属于各个类标的百分比,并且将各个百分比数值存于一个数组中,最后返回该数组.

(6)toString()

把分类器的参数(均值,方差,各先验概率,各后验概率)以字符串的形式返回.

(7)normalDens(double x, double mean, double stdDev)

该方法用于根据正态分布(均值为mean,方差为stdDev)计算数值型属性当属性值为x时的概率密度.

(8) getRevision()

返回程序的版本号.

(9) Main()

当类从命令行被执行时,就会调用main()方法.他只是用所给的命令行选项告诉Weka的Evaluation类来评估朴素贝叶斯,并且打印所得到的数组.完成这个功能的一行表达式包括在try-catch声明中.try-catch声明用于发现Weka例程或其他Java方法中抛出的各种异常.

在explorer中open file后见到的第一个直方图是你的Attribute属性与class(Visualize All左边的那个)的出现次数统计图,比如你的Attribute属性选择了Session ID(包含了A1,A2,B1,B2,C1,C2,C3...),class选择了Name(属性值包含Petter, Marry,Kate,Ken,Artoria),那么你得到的统计数据就是在Petter中A1,A2,B1B2,C1...各出现了多少次...Marry中A1,A2,B1,B2,C1...各出现了多少次,等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7878025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存