首页 > 代码库 > 在weka中添加libSVM或者HMM等新算法
在weka中添加libSVM或者HMM等新算法
转:http://kasy-13.blog.163.com/blog/static/8214691420143226365887/
Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品--Clementine )的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data minining)软件。它和它的源代码可在其官方网站(http://www.cs.waikato.ac.nz/~ml/weka/downloading.html)下载,注意,若要添加新算法,应该下载使用developer version。有趣的是,该软件的缩写WEKA也是New Zealand独有的一种鸟名,而Weka的主要开发者同时恰好来自New Zealand的the University of Waikato。
Weka中并不是没有SVM算法,Weka中有SMO算法的实现。LibSVM运行的比Weka里的SMO快的多,如果你敢用SMO算法去训练大数据集,你就明白天荒地老的真实含意了。
Libsvm和Liblinear都是国立台湾大学的Chih-Jen Lin博士开发的,Libsvm主要是用来进行非线性svm 分类器的生成,提出有一段时间了,而Liblinear则是去年才创建的,主要是应对large-scale的data classification,因为linear分类器的训练比非线性分类器的训练计算复杂度要低很多,时间也少很多,而且在large scale data上的性能和非线性的分类器性能相当,所以Liblinear是针对大数据而生的。
两者都是一个跨平台的通用工具库,支持windows/linux/mac os,代码本身是c++写的,同时也有matlab,python,java,c/c++扩展接口,方便不同语言环境使用,可以说是科研和企业人员的首选!像我这样在学校的一般用matlab/c++,而我同学在百度则主要用的是python/c++,所以只是各自侧重不一样,但所使用的核心还是其svm库。
libSVM的C++/java源码下载、matlab interface等下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Weka3.5后增加了libsvm这个选项,在分类器中的functions下面。需要安装才能使用。我使用的是weka3.7.10版本。安装weka后运行RunWeka.bat或Weka 3.7.exe,在菜单栏tools->package manager 中可以添加weka官方定义的各种成型的算法,从association类的到visualization类的都有,只要install就行了。
在weka下安装HMM:
如果在自带的package manager下没有找到合适的算法,还可以在网上找(有很多高手写好了愿意分享的!),比如我找到的HMMWeka,可下载HMM.zip。
(下载地址:
http://www.doc.gold.ac.uk/~mas02mg/software/hmmweka/index.html#download)
当然,技巧是用Google English搜,且关键词也用英文,如“HMM classifier”。目前的package manager 只接受zip文件格式的外源算法,所以最好找标准格式的算法,如我上面分享的HMM classifier的作者就相当敬业,从scr/lib到 doc全部写好了,可以下载一下参考参考。
过程:
1、打开weka->菜单栏tools->package manager ->Unofficial->File/URL
2、选择所下载的HMM.zip
3、重启weka,在clasify->choose->classifiers->bayes->HMM找到HMM
4、若是不能运行,可参照下方(weka中的libsvm无法运行的解决方法)的内容修改。
最后总结一下,对于不习惯点上面暗连接的朋友们提供一下明地址:
- 能自定义添加算法的weka development 版下载地址:
http://www.cs.waikato.ac.nz/~ml/weka/downloading.html
- HMMweka下载地址:
- libSVM下载地址:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
weka中的libsvm无法运行的解决方法:
在Weka3.5.5后增加了libsvm这个选项,在分类器中的functions下面。但是,试图运行的时候,系统报错提示:Problem evaluating classifier:libsvm classes not in CLASSPATH。然后我们在环境变量-》系统变量-》CLASSPATH,把F:/Some Softwares/Weka-3-5/libsvm.jar(这个jar文件是在http://www.cs.iastate.edu/~yasser/wlsvm/.下载的)添加进去了,但是报错提示:Problem evaluating classifier:rand。如何才能时libsvm跑起来呢?
我参照别人写的教程(http://blog.csdn.net/aalbertini/article/details/5749622)做了以下的修改:
修改runweka.ini这个文件中的cmd_default,增加对这两个jar包的支持:
cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# -classpath "#wekajar#;#cp#;libsvm.jar;liblinear.jar" #mainclass#
重启RunWeka.bat,但是仍然无法使用。
可能的原因:
1、检查你的weka是否是developer版本!(最可能的)
2、修改runweka.ini这个文件中的cmd_default,将两个jar包写在#cp#前:cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# -classpath "#wekajar#;libsvm.jar;liblinear.jar;#cp#" #mainclass#
参考链接:http://baike.baidu.com/view/1380214.htm
http://pcc426.net/2012/05/18/add-new-algorithm-in-weka/
http://blog.sina.com.cn/s/blog_5b29caf7010127vh.html
在weka中添加libSVM或者HMM等新算法