(转)java +libsvm 安装与测试:
libsvm 用SVM实现简单线性分类
0. 下载libsvm压缩包解压到本地目录(from:http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html)
1. 新建JAVA工程,导入libsvm包及其源码
2. 编写测试代码,使用libsvm函数进行分类预测
3. 参考贴
一、新建JAVA工程,导入libsvm包及其源码。
1. 新建JAVA工程及主函数main后,右键工程=>build path=>configure build path,Java Build Path>Libraries>Add External JARs,导入libsvm.jar。

2. 关联libsvm源码(方便以后查看源码):点开libsvm.jar=>Source attachment:(None)=>Edit,External location=>External Folder

选择libsvm-3.12下java目录,一路OK。

二. 编写测试代码,使用libsvm函数进行分类预测
测试代码如下:

1 import libsvm.svm;
2 import libsvm.svm_model;
3 import libsvm.svm_node;
4 import libsvm.svm_parameter;
5 import libsvm.svm_problem;
6
7 public class jmain {
8
9 /**
10 * @param args
11 */
12 public static void main(String[] args) {
13 //定义训练集点a{10.0, 10.0} 和 点b{-10.0, -10.0},对应lable为{1.0, -1.0}
14 svm_node pa0 = new svm_node();
15 pa0.index = 0;
16 pa0.value = 10.0;
17 svm_node pa1 = new svm_node();
18 pa1.index = -1;
19 pa1.value = 10.0;
20 svm_node pb0 = new svm_node();
21 pb0.index = 0;
22 pb0.value = -10.0;
23 svm_node pb1 = new svm_node();
24 pb1.index = 0;
25 pb1.value = -10.0;
26 svm_node[] pa = {pa0, pa1}; //点a
27 svm_node[] pb = {pb0, pb1}; //点b
28 svm_node[][] datas = {pa, pb}; //训练集的向量表
29 double[] lables = {1.0, -1.0}; //a,b 对应的lable
30
31 //定义svm_problem对象
32 svm_problem problem = new svm_problem();
33 problem.l = 2; //向量个数
34 problem.x = datas; //训练集向量表
35 problem.y = lables; //对应的lable数组
36
37 //定义svm_parameter对象
38 svm_parameter param = new svm_parameter();
39 param.svm_type = svm_parameter.C_SVC;
40 param.kernel_type = svm_parameter.LINEAR;
41 param.cache_size = 100;
42 param.eps = 0.00001;
43 param.C = 1;
44
45 //训练SVM分类模型
46 System.out.println(svm.svm_check_parameter(problem, param)); //如果参数没有问题,则svm.svm_check_parameter()函数返回null,否则返回error描述。
47 svm_model model = svm.svm_train(problem, param); //svm.svm_train()训练出SVM分类模型
48
49 //定义测试数据点c
50 svm_node pc0 = new svm_node();
51 pc0.index = 0;
52 pc0.value = -0.1;
53 svm_node pc1 = new svm_node();
54 pc1.index = -1;
55 pc1.value = 0.0;
56 svm_node[] pc = {pc0, pc1};
57
58 //预测测试数据的lable
59 System.out.println(svm.svm_predict(model, pc));
60 }
61 }

运行结果为:

null
*
optimization finished, #iter = 1
nu = 0.0033333333333333335
obj = -0.0033333333333333335, rho = 0.0
nSV = 2, nBSV = 0
Total nSV = 2
-1.0

第一行null是svm.svm_check_parameter(problem, param)的输出,表示参数设置无误;最后一行的-1.0表示对c点的预测lable是-1.0。
要注意的几点是:
1. 主要用了svm.svm_train()做训练,用svm.svm_predict()做预测,其中用到了svm_problem、svm_parameter、svm_model、svm_node几种“结构体”对象。
2. svm_node表示的是{向量的分量序号,向量的分量值},很多稀疏矩阵均用此方法存储数据,可以节约空间;svm_node[]则表示一个向量,一个向量的最后一个分量的svm_node.index用-1表示;svm_node[][]则表示一组向量,也就是训练集。
参考贴:
1. 视频: 一个实例搞定libsvm分类《Learn SVM Step by Step》by faruto
2. 如何使用libsvm进行分类
3. Felomeng翻译:libsvm2.88之函数库的使用
(转)java +libsvm 安装与测试:的更多相关文章
- Apache Thrift入门(安装、测试与java程序编写)
安装Apache Thrift ubuntu linux运行: #!/bin/bash #下载 wget http://mirrors.cnnic.cn/apache/thrift/0.9.1/thr ...
- java yum安装的环境变量设置
如何(怎样)在CentOS 6.X 或 redhat 上使用安装JDK runtime environment (openjdk) ? CentOS 6.X 和 5.X 自带有OpenJDK runt ...
- java JDK安装
JDK安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 图释安装 ...
- jdbc_odbc SQLserver 驱动安装及测试
有2次被问到同一个问题,尽管博客园是.net的园子,我还是分享下吧.PS:我现在做的.net,以前学过点java.献丑了. ------------------ 原始邮件 -------------- ...
- mosquitto在Linux环境下的部署/安装/使用/测试
mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. ...
- hadoop2-HBase的安装和测试
在安装和测试HBase之前,我们有必要先了解一下HBase是什么 我们可以通过下面的资料对其有一定的了解: HBase 官方文档中文版 HBase 深入浅出 我想把我知道的分享给大家,方便大家交流. ...
- JMeter ----与WebDriver安装与测试
JMeter ----与WebDriver安装与测试 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 环境与参考 jvm版本: 1.8.0_65 j ...
- JMeter (1) —— JMeter与WebDriver安装与测试(101 Tutorial)
JMeter (1) -- JMeter与WebDriver安装与测试(101 Tutorial) 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 ...
- Selenium (1) —— Selenium安装与测试(101 Tutorial)
Selenium (1) -- Selenium安装与测试(101 Tutorial) jvm版本: 1.8.0_65 selenium版本: v2.48.0 (Standalone Selenium ...
随机推荐
- VINS(五)非线性优化与在线标定调整
首先根据最大后验估计(Maximum a posteriori estimation,MAP)构建非线性优化的目标函数. 初始化过程通过线性求解直接会给出一个状态的初值,而非线性优化的过程关键在于求解 ...
- Spring的定时任务(任务调度)<task:scheduled-tasks>
Spring内部有一个task是Spring自带的一个设定时间自动任务调度,提供了两种方式进行配置,一种是注解的方式,而另外一种就是XML配置方式了.注解方式比较简洁,XML配置方式相对而言有些繁琐, ...
- oracle分区表按时间自动创建
表分区是一种思想,分区表示一种技术实现.当表的大小过G的时候可以考虑进行表分区,提高查询效率,均衡IO.oracle分区表是oracle数据库提供的一种表分区的实现形式.表进行分区后,逻辑上仍然是一张 ...
- WPF DataGridRow Event
CM(Caliburn.Micro)框架绑定DataGridRow事件 <DataGrid.ItemContainerStyle> <Style TargetType="D ...
- js 中常用到的封装方法
/** * 获取URL参数 */ function getQueryString(name) { var reg = new RegExp("(^|&)" + name + ...
- git 操作几个命令
git clone ssh://lijianfeng@192.168.1.246:29418/GMGameSDK压栈:git stash查状态:git status切换到要修改的提交:git reb ...
- c和c++的强制类型转换
我们知道c语言中的类型转换只有一种, TYPE b = (TYPE)a; 而在c++中按照不同作用的转换类型将其细分为三个显示类型转换符号static_cast, const_cast, reinte ...
- Centos 7 快速安装 Docker
摘要: 安装 Docker [root@localhost~]# yum install docker 启动 docker 服务 [root@localhost~]# systemctl start ...
- Jmeter使用之:高效组织接口自动化用例技巧
Jmeter怎么使用的文章多如牛毛,但怎么组织好测试用例,则几乎很难看到.在本文,我将把Jmeter下怎么组织测试用例的几点心得分享给大家,希望能给你一些帮助或启示. 1.善用“逻辑控制器”中的“简单 ...
- 利用JSON Schema校验JSON数据格式
最近笔者在工作中需要监控一批http接口,并对返回的JSON数据进行校验.正好之前在某前端大神的分享中得知这个神器的存在,调研一番之后应用在该项目中,并取得了不错的效果,特地在此分享给各位读者. 什么 ...