Weka是个口碑很好的machine
learning工具,可怜我这土鳖以前都没用过。
Weka还是很intuitive的,直接给你GUI,随便你选算法,直接帮你做cross
validation,还帮你画图,你还想怎样?
Weka官网还出了一本叫做Data Mining Practical
Machine Learning Tools and Techniques的书,有机会想拜读一下呢。
今天花了一天时间搞明白了Weka怎么和matlab还有LibSVM接口通讯的了,分享如下:
首先weka使用自己的文件格式,叫做ARFF,如果想从matlab和Weka之间相互转换,这里有现成的package:
不要以为下载下来就能用,你会在如下地方报错:
if(~wekaPathCheck),wekaOBJ = [];
return,end
import
weka.core.converters.ArffLoader;
import java.io.File;
Tricky的事情就是得把weka.jar加入到matlab的classpath.txt列表。classpath.txt在哪儿?到matlab的command窗口敲:
>> which
classpath.txt
/Applications/MATLAB_R2010b.app/toolbox/local/classpath.txt
这个是在mac下的结果,windows估计也有类似的文件结构。然后就是到classpath.txt里加入一行,weka.jar的绝对路径,例如:
/Applications/weka-3-6-4.app/Contents/Resources/Java/weka.jar
好了,matlab的接口就配置好了。
这里还有个问题,保存的ARFF中类别信息(class)是numrical型,不是枚举型,至少调用LibSVM会报错。
得手工修改(我的数据有7类):
@attribute
class numeric =>
@attribute class {1,2,3,4,5,6,7}
OK,matlab这边这下没问题了。
Weka本身没有附带LibSVM,所以还要配置调用Wrapper,官网有介绍,不过没这里(第一条评论)讲的清楚。
在http://www.cs.iastate.edu/~yasser/wlsvm/下载wlsvm.zip,如果想用最新版的LibSVM可以去官网下载然后替换掉其中的libsvm.jar
然后把wlsmv.jar和libsvm.jar都放在/Applications/Weka/weka-3-7-0.app/Contents/Resources/Java目录下(windows应该可以找到对应目录)
然后就是编辑weka.app\info.plist,找到$JAVAROOT/weka.jar然后类似的加入libsvm.jar和wlsvm.jar。(这个plist可能windows不太一样)
你还可以顺便设置一下weka的内存池大小
VMOptions
-Xmx256M
256M太小了,内存都白菜价了,改个1024M死不了人。
好了,都搞定了。
至于怎么用Weka,翻完这个ppt你就知道了。
此外,查看如下网址,其提供了Matlab与Weka的一个接口
http://www.mathworks.cn/matlabcentral/fileexchange/21204-matlab-weka-interface
转自:http://www.cs.dartmouth.edu/~xy/blog/weka以及matlab,libsvm接口/