机器学习和生物信息学实验室联盟

标题: weka下运行libsvm的方法 [打印本页]

作者: xmubingo    时间: 2011-5-16 14:05
标题: weka下运行libsvm的方法
本帖最后由 xmubingo 于 2013-3-31 14:26 编辑

------2013.3.31----------
weka 3.6.9用底下的“旧方法”安装失败!
抛出“problem evaluating classifier rand”错误!

正确办法:

1. 先安装WEKA3.7.9,用tools-package manager安装libsvm,然后到用户目录下wekafiles\packages\LibSVM\lib中找到libsvm.jar 。

2. 安装WEKA3.6.9,将第一步中的libsvm.jar放到WEKA3.6.9的安装目录下。([attach]1373[/attach])

3. 修改WEKA3.6.9的RunWeka.ini文件,将
  1. cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# #javaOpts# -classpath "#wekajar#;#cp#" #mainclass#
复制代码
替换为:
  1. cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# #javaOpts# -classpath "#wekajar#;#cp#;libsvm.jar" #mainclass#
复制代码
4. 运行WEKA3.6.9即可。WEKA3.7.9可以卸载了。

备注:
1. weka 3.7.9 直接用tools-package manager安装libsvm
2. 3.7.9和3.6.9存在许多差别。比如:3.7.9把rotationforest分类器搞没了。。

-----旧方法----
来自网络:http://blog.csdn.net/chl033/archive/2009/09/26/4597959.aspx
Weka and LibSVM are two efficient software tools for building SVM classifiers. Each one of these two tools has its points of strength and weakness. Weka has a GUI and produces many useful statistics (e.g. confusion matrix, precision, recall, F-measure, and ROC scores). LibSVM runs much faster than Weka SMO and supports several SVM methods (e.g. One-class SVM, nu-SVM, and R-SVM). Weka LibSVM (WLSVM) combines the merits of the two tools. WLSVM can be viewed as an implementation of the LibSVM running under Weka environment.
官方网站:http://www.cs.waikato.ac.nz/~ml/weka/index.html

1.下载 wlsvm(weka libsvm) 地址:http://www.cs.iastate.edu/~yasser/wlsvm/
2.解压wlsvm.zip在lib目录下得到 libsvm.jar和wlsvm.jar两个文件,将其拷贝到weka安装目录下
3.修改位于weka安装目录下的RunWeka.ini文件
修改cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# -classpath "#wekajar#;#cp#" #mainclass#
为cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# -classpath "#wekajar#;#cp#;libsvm.jar" #mainclass#




作者: zouquan    时间: 2012-3-9 20:21
补充:libSVM还有个亲弟弟liblinear,用于处理大规模高维数据(尤其在文本和图像领域),用法一样

liblinear可能需要weka3.7.1以上版本支持

3.7以上版本不带libSVM和liblinear以及许多其他分类器,需要自己下载。用Tool-->Package Manager(Available)来安装。注意:相关软件被下载到了
C:\Users\Administrator\wekafiles   (windows7)
C:\Documents and Settings\Administrator\wekafiles   (XP)


有时候,在线更新连不上,只需要把已更新的机器的wekafiles目录放到对应位置即可。(事实上将下载的zip解压到packages文件夹下即可,参考附件)
我已更新libSVM和libLinear,如果有同学无法更新可以直接下载附件。[attach]529[/attach]

------------------------网上说这么做,我没成功-----------------------------
将libsvm.jar和liblinear.jar两个文件放到weka的安装目录下。
修改runweka.ini这个文件中的cmd_default,增加对这两个jar包的支持:
cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# -classpath "#wekajar#;#cp#;libsvm.jar;liblinear.jar" #mainclass#
-----------------------------------------------------------------------------------
作者: cwc    时间: 2012-8-17 16:11
本帖最后由 cwc 于 2012-8-17 16:37 编辑

今天试了下liblinear,对于大数据确实比libsvm快很多。但在试的时候,发现许多问题。

首先,weka3.7.1及以后的版本已经没有直接的libsvm和liblinear接口了,即weka.classifiers.functions里面已经没有了libsvm和liblinear了,只能通过邹老师的方法把wekafiles放在指定目录,再通过weka界面运行。我的操作成功了,不知道老师的Administrator是不是当前用户。然而没有了接口,就意味着在代码里调用就不是很方便了。

如果要在eclipse里调用liblinear怎么办?3.7.1试了很久还是没找到方法。幸好3.7.0还预留有liblinear的接口,直接按照上述师兄说方法设置好liblinear的环境就能运行。但是需要注意的是,由于3.70是老版本了,liblinear1.8的版本导进去会有错误。我用1.5版本的能运行成功。另外liblinear的参数跟libsvm的不一样。这里贴一个默认值供大家在程序里参考。
  1. String[] options=weka.core.Utils.splitOptions("-S 1 -C 1.0 -E 0.001 -B 0");
复制代码

作者: zouquan    时间: 2012-8-17 21:44
3.7.1没有liblinear的接口?应该有吧,编程调用,只要把liblinear.jar导入,应该和以前一样吧?
作者: AmBeta    时间: 2012-8-17 23:48
cwc 发表于 2012-8-17 16:11
今天试了下liblinear,对于大数据确实比libsvm快很多。但在试的时候,发现许多问题。

首先,weka3.7.1及 ...

我用最新的weka包使用liblinear也是会有很奇怪的问题,暂时还没有想解决办法,因为weka1.6的包再加上liblinear的包直接就能用了(哈哈,我懒了=。=)
但是我用的是liblinear1.8,没发现有什么问题啊,不知道师兄发现了什么问题。

还有一个发现,不知道有没火星,libsvm如果要概率输出需要加参数“-B”,liblinear则需要加上参数“-P”,并且liblinear的概率输出目前只支持L2-regularized logistic regression这个内核,即参数S的值应该设为0才行(默认值是1)。
作者: cwc    时间: 2012-8-18 21:45
zouquan 发表于 2012-8-17 21:44
3.7.1没有liblinear的接口?应该有吧,编程调用,只要把liblinear.jar导入,应该和以前一样吧?

java调用liblinear的时候要import进去weka.classifiers.functions.liblinear。但是3.7.1以后的liblinear已经不在functions之中了,所以用以前的方法就不可行了。但是在weka界面中,当Package Manager弄完之后,选择分类器的时候又可以在function里面选了(没Package Manager之前在function里面没有)。
作者: cwc    时间: 2012-8-18 21:45
AmBeta 发表于 2012-8-17 23:48
我用最新的weka包使用liblinear也是会有很奇怪的问题,暂时还没有想解决办法,因为weka1.6的包再加上libl ...

weka1.6? 太古老了,我out了。。。
作者: zouquan    时间: 2012-8-19 09:36
cwc 发表于 2012-8-18 21:45
java调用liblinear的时候要import进去weka.classifiers.functions.liblinear。但是3.7.1以后的liblinear已 ...

把liblinear.jar直接当成一个新的包调用试试,不行看看源代码,他应该extend Classifier吧

这个是个很重要的事情,一定要搞定,并把解决方案发上来、或写成文档
作者: zouquan    时间: 2012-8-19 09:37
另外,试试libSVM中的线性核函数kernel,看看与liblinear的结果是否一样
作者: cwc    时间: 2012-8-19 13:45
zouquan 发表于 2012-8-19 09:36
把liblinear.jar直接当成一个新的包调用试试,不行看看源代码,他应该extend Classifier吧

这个是个很 ...

终于试出来了,之前一直纠结于functions之中没有接口这件事,找以前版本的functions的接口放进去也行不通。后来发现wekafiles/packages下的liblinear其实都已经独立出来了。packages/LibLINEAR/LibLINEAR.jar里面是接口,所以现在除了要打包进去原装的liblinear-1.8.jar之外,还要打包packages下的LibLINEAR.jar(weka改造的接口)。然后按照原来的方法就可以了,Runweka.ini下的classpath不用增加环境变量就可以运行(这点比3.71以前的版本方便)。
作者: zouquan    时间: 2012-8-19 16:07
cwc 发表于 2012-8-19 13:45
终于试出来了,之前一直纠结于functions之中没有接口这件事,找以前版本的functions的接口放进去也行不通 ...

赞,宝贵的经验哦~~~
作者: AmBeta    时间: 2012-8-20 10:16
cwc 发表于 2012-8-18 21:45
weka1.6? 太古老了,我out了。。。

写错了,是3.6  =。=
师兄果然武艺高强,拜谢赐教
作者: xmubingo    时间: 2013-3-31 14:05
关于3.6.9 weka安装libsvm失败的解决办法,已更新原帖。
作者: xmubingo    时间: 2013-4-1 21:01
zouquan 发表于 2012-3-9 20:21
补充:libSVM还有个亲弟弟liblinear,用于处理大规模高维数据(尤其在文本和图像领域),用法一样

libli ...

weka 3.6.9版本安装liblinear失败。

现在weka3.6.9里的wrapper程序是1.33版本的,不支持现在的liblinear。支持wrapper1.33的liblinear已经无处寻觅。

我尝试重新编译liblinear,使他适合wrapper1.33,失败。最后总会报错。放弃...
作者: aaronwxb    时间: 2013-5-22 14:36
xmubingo 发表于 2013-4-1 21:01
weka 3.6.9版本安装liblinear失败。

现在weka3.6.9里的wrapper程序是1.33版本的,不支持现在的libline ...


我按照更新的方法,先安装3.7.9,再装3.6.9,还是出现rand的错误。。。

作者: xmubingo    时间: 2013-5-22 18:59
aaronwxb 发表于 2013-5-22 14:36
我按照更新的方法,先安装3.7.9,再装3.6.9,还是出现rand的错误。。。

那你就直接装3.7.9吧
作者: 小妖儿    时间: 2013-11-16 18:01
zouquan 发表于 2012-3-9 20:21
补充:libSVM还有个亲弟弟liblinear,用于处理大规模高维数据(尤其在文本和图像领域),用法一样

libli ...

网上说的那段,我的成功了。。用的weka3.7.10
作者: guojiasheng    时间: 2014-9-4 15:48
简直是宝贵经验。。太棒了。




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2