weka的重新编译与添加算法
weka源码编译步骤
1 安装JDK环境和Java开发环境,例如Eclipse。
2 安装WEKA(安装不带JRE的WEKA即可)。
3 重新编译:
3.1 创建工作目录。新建任意一目录在任意位置(在Eclipse的workspace中或桌面,打开myeclipse时选该文件夹即可)。
3.2 准备源代码。在WEKA的安装目录中找到weka-src.jar,解压成weka-src到刚才建的目录下。
3.3 创建项目。打开myEclipse,文件->新建->项目->Java项目->项目名与刚才建的目录名(weka-sr)一样,点击下一步就会加载解压的文件,可以看到有main/src test/src。点确定就行了。
3.4 编译运行。选择刚创建的项目WEKA-Rebuild,run as Java Application,等待弹出对话框选择主类,weka.gui.main(输入main即可看到)。不一会,WEKA界面出现,和开始菜单里运行的WEKA效果一样。重编译成功。
注意点:可能加载的程序有语法错误,vector<object>不可以等等。此时应该在项目-》属性中将jdk等级调到1.5或以上可能就好了。
添加新算法
今天刚刚成功的向Weka中加入了新算法,现总结一下我的操作步骤:
1. 编写新算法,所编写的新算法必须符合Weka 的接口标准,自己随意编写的java文件(Me.java)能copy到myeclipse对应的包中(如weak.classifiers),但运行本项目时(weka.gui.GUIChooser.java或weka.gui.Main.java)在weka中不能看到。因此新算法必须符合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算法。
ps:貌似这样做了之后,clusters下只是由FuzzyCMeans这个名字,但这个算法是不能使用的;而且网上下的一个FuzzyCMeans竟然有错误,苍天啊~~~~~~~~~~~~~
参考:
http://hi.baidu.com/sjmclc/blog/item/8beef445276c8325cffca397.html
http://hi.baidu.com/dingzhoufang/blog/item/34f67810b12e8df8c3ce79d9.html