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

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 19530|回复: 17
打印 上一主题 下一主题

weka下运行libsvm的方法

  [复制链接]
跳转到指定楼层
楼主
发表于 2011-5-16 14:05:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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的安装目录下。()

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#



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

沙发
发表于 2012-3-9 20:21:41 | 只看该作者
补充: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,如果有同学无法更新可以直接下载附件。

------------------------网上说这么做,我没成功-----------------------------
将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#
-----------------------------------------------------------------------------------

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

板凳
发表于 2012-8-17 16:11:49 | 只看该作者
本帖最后由 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");
复制代码
回复 支持 反对

使用道具 举报

地板
发表于 2012-8-17 21:44:04 | 只看该作者
3.7.1没有liblinear的接口?应该有吧,编程调用,只要把liblinear.jar导入,应该和以前一样吧?
回复 支持 反对

使用道具 举报

5#
发表于 2012-8-17 23:48:36 | 只看该作者
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)。
回复 支持 反对

使用道具 举报

6#
发表于 2012-8-18 21:45:14 | 只看该作者
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里面没有)。
回复 支持 反对

使用道具 举报

7#
发表于 2012-8-18 21:45:52 | 只看该作者
AmBeta 发表于 2012-8-17 23:48
我用最新的weka包使用liblinear也是会有很奇怪的问题,暂时还没有想解决办法,因为weka1.6的包再加上libl ...

weka1.6? 太古老了,我out了。。。
回复 支持 反对

使用道具 举报

8#
发表于 2012-8-19 09:36:27 | 只看该作者
cwc 发表于 2012-8-18 21:45
java调用liblinear的时候要import进去weka.classifiers.functions.liblinear。但是3.7.1以后的liblinear已 ...

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

这个是个很重要的事情,一定要搞定,并把解决方案发上来、或写成文档
回复 支持 反对

使用道具 举报

9#
发表于 2012-8-19 09:37:17 | 只看该作者
另外,试试libSVM中的线性核函数kernel,看看与liblinear的结果是否一样
回复 支持 反对

使用道具 举报

10#
发表于 2012-8-19 13:45:53 | 只看该作者
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以前的版本方便)。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 02:31 , Processed in 0.070365 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表