用JAVA程序调用LibSVM API

标签: java LibSVM
1610人阅读 评论(5) 收藏 举报
分类:

1. LibSVM简介

       LibSVM是台湾著名教授陈智仁团队的杰作。具有各个语言版本的接口,包括C/C++、Java、Python、Matlab、C# 等等。这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。

       这套库可以从http://www.csie.ntu.edu.tw/~cjlin/免费获得,目前已经发展到3.22版。下载.zip格式的版本,解压后可以看到,主要有5个文件夹和一些c++源码文件。

2. 数据准备

       Readme里面几乎包含了所有可以帮助你灵活使用LibSVM的信息,可是很多人都不怎么看。这里给出用Java调用LibSVM API最简单的示例,用JAVA进行SVM分类只需要几行程序就搞定了,前提是你已经准备好了符合LibSVM处理数据格式的训练样本和测试样本。下面一一道来:

2.1 准备训练样本和测试样本

直接上LibSVM官网就可以下载,我下载的UCI的UCI-breast-cancer数据集,训练样本和测试样本的基本格式是这样的:

    <label> <index1>:<value1> <index2>:<value2> ...

分别代表: 类别 feature1索引:feature1值 feature2索引:feature2值…

3. Java API

  • 建立JAVA工程,导入LibSVM 的JAR包,要注意还需要导入java文件下的svm_train.java和svm_predict.java这两个文件,这两个类其实主要在LibSVM基础上做了进一步封装,把命令行参数转化成了String []类型的函数参数,方便API调用。至于另外两个svm_tony.java和svm_scale可以不导入,它们分别是图形界面和数据压缩用的,不是必要文件。

  • 把训练样本和测试样本放在工程文件夹下,当然,你也可以自定义data目录。

  • 修改svm_train.java和svm_predict.java这两个文件,前者主要是把model_file_name返回,因为在svm_predict的main函数中需要使用,后者主要是把分类的Accuracy返回。

  • 编写JAVA调用LibSVM API分类代码如下,非常简单,代码中给出了注释

import java.io.IOException;  

import libsvm.*;  
 /**JAVA test code for LibSVM
 * Created by zhanghuayan on 2017/1/3.
 */  

public class LibSVMTest {  

    public static void main(String[] args) throws IOException {  
        // TODO Auto-generated method stub  
        //Test for svm_train and svm_predict  
        //svm_train:   
        //    param: String[], parse result of command line parameter of svm-train  
        //    return: String, the directory of modelFile  
        //svm_predect:  
        //    param: String[], parse result of command line parameter of svm-predict, including the modelfile  
        //    return: Double, the accuracy of SVM classification  
        String[] trainArgs = {"UCI-breast-cancer-tra"};//directory of training file  
        String modelFile = svm_train.main(trainArgs);  
        String[] testArgs = {"UCI-breast-cancer-test", modelFile, "UCI-breast-cancer-result"};//directory of test file, model file, result file  
        Double accuracy = svm_predict.main(testArgs);  
        System.out.println("SVM Classification is done! The accuracy is " + accuracy);  

        //Test for cross validation  
        //String[] crossValidationTrainArgs = {"-v", "10", "UCI-breast-cancer-tra"};// 10 fold cross validation  
        //modelFile = svm_train.main(crossValidationTrainArgs);  
        //System.out.print("Cross validation is done! The modelFile is " + modelFile);  
    }  

}  



对机器学习,人工智能感兴趣的小伙伴,请关注我的公众号:

这里写图片描述

查看评论

JavaAndroid客户端和C#服务端Web Api接口开发

C#服务端HttpGet接口开发 C#服务端HttpPost接口开发 JavaAndroid客户端请求C#服务端HttpGet接口开发 JavaAndroid客户端Android请求C#服务端HttpPost接口开发
  • 2017年01月08日 20:05

LibSVM(java版)的使用

0  准备工作      1)下载一个LibSVM;      2)了解一下SVM的原理还是非常必要的,不然都不知道参数是啥意思。。我看过一篇SVM入门的博客,里面有八讲,分享之。 1  Li...
  • BlockheadLS
  • BlockheadLS
  • 2015-11-27 22:27:35
  • 3914

LibSVM在Java中的简单应用

首先,在这里首先感谢台湾林智仁先生的开源工具包libsvm。使SVM算法更加普及。大家可以到下面的libsvm官网去了解相关的信息。 Libsvm官方网站->https://www.csie.ntu...
  • qq_18149897
  • qq_18149897
  • 2016-07-12 10:59:24
  • 7126

Java开发SVM之Eclipse集成LibSVM示例

LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。 1、官网下载LibSVM    1)官网:http://w...
  • fjssharpsword
  • fjssharpsword
  • 2016-12-21 14:47:53
  • 6509

libsvm-javaAPI

获得 tw.edu.ntu.csie libsvm 3.17 libsvm-3.17.jar的结构见下图, default package:这里是工具制作者自己封装出来的一些类,它们都有m...
  • chuchus
  • chuchus
  • 2015-05-11 16:44:17
  • 1288

java如何调用libsvm

由于比赛需要用到libsvm,自己鼓捣了一下午,才真正弄明白libsvm怎么用java调用,走了不少弯路。一开始有个误会,只调用了其中的jar包,其实不是这样的。下载过libsvm后,大多数东东都写好...
  • zdnlp
  • zdnlp
  • 2013-05-30 14:23:01
  • 4778

LibSVM Java API调用示例程序

  • 2012年12月16日 21:14
  • 686KB
  • 下载

3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例

http://blog.csdn.net/yangliuy/article/details/8041343 最近用LibSVM做分类实验,发现网上的资料大都是关于SVM基本原理和怎么用终...
  • lostinai
  • lostinai
  • 2015-10-29 17:26:49
  • 1687

java学习--Libsvm java版代码注释及详解(一)

由于工作中要用到SVR算法,项目组的系统是用java开发的,因此,为了能与项目组同步,算法需要用java来实现,还好台湾大学的林智仁教授推出了Libsvm的源代码,包括java、c++等语言的源代码,...
  • lostinai
  • lostinai
  • 2015-10-29 17:11:46
  • 1744

使用java调用libsvm

来自http://www.xuebuyuan.com/901015.html 1.首先,从林智仁教授那里下载使用包libsvm。这里有很多版本的libsvm,我们找到java版本的。 2....
  • vincent2610
  • vincent2610
  • 2014-03-27 12:46:50
  • 1929
    机器学习公众号

    关注微信公众号,专

    为机器学习入门者
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 27万+
    积分: 5169
    排名: 6710
    博客专栏
    最新评论