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:
http://www.mathworks.com/matlabcentral/fileexchange/21204-matlab-weka-interface
不要以为下载下来就能用,你会在如下地方报错:
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,找到<string>$JAVAROOT/weka.jar</string>然后类似的加入libsvm.jar和wlsvm.jar。(这个plist可能windows不太一样)
你还可以顺便设置一下weka的内存池大小
<key>VMOptions</key>
<string>-Xmx256M</string>
256M太小了,内存都白菜价了,改个1024M死不了人。
好了,都搞定了。
至于怎么用Weka,翻完这个ppt你就知道了。