Weka以及Matlab,LibSVM接口

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你就知道了。

你可能感兴趣的:(windows,command,validation,matlab,Class,wrapper)