(转)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 ...
随机推荐
- SpringBoot学习:整合shiro(rememberMe记住我后自动登录session失效解决办法)
项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 定义一个拦截器,判断用户是通过记住我登录时,查询数据库后台自动登录,同时把用户放入ses ...
- MongoDB 安装 增删改查
MongoDB 一 介绍 1.高性能的数据存储解决方案是大多数大型Web应用程序和服务的核心.后端数据库负责存储一切东西,从用户账户的信息到购物车中的商品,以及博客和评论数据等.好的Web应用需要 ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 – 员工离职管理
C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 – 员工离职管理 当公司有几万人,上千家加盟网点,几个庞大的直属分公司后,系统账户的有效管理也是一个头疼的问题,把所有的帐户及时进行科学 ...
- 2019年猪年海报PSD模板-第三部分
14套精美猪年海报,免费猪年海报,下载地址:百度网盘,https://pan.baidu.com/s/15m6sWTdDzuBfdmHYxJVvbA
- mysql数据库基本操作命令
1.登录命令 mysql -u root -p "password" 2.列出所有数据库 show databases; 3.使用数据库 use db_name 4.列出数据库中所 ...
- Qt-序列号生成器
一直想做一个序列号的生成器,今天终于有了开始了,目前只有读取硬件生成,还没有做生成序列号的规则. 目前实现的功能就是读取系统磁盘卷加上CPU ID 和自己的加密字符串,在利用MD5加密,转换成标准32 ...
- pycharm 3.4 亲测可使用到2019年2月的注册码,要用者从速
注册码: D87IQPUU3Q-eyJsaWNlbnNlSWQiOiJEODdJUVBVVTNRIiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1l ...
- 论文阅读之Joint cell segmentation and tracking using cell proposals
论文提出了一种联合细胞分割和跟踪方法,利用细胞segmentation proposals创建有向无环图,然后在该图中迭代地找到最短路径,为单个细胞提供分割,跟踪和事件. 3. PROPOSAL GE ...
- POJ 2449 Remmarguts' Date(第k短路のA*算法)
Description "Good man never makes girls wait or breaks an appointment!" said the mandarin ...
- Python中的list
list的创建 1 字面量 >>>L = [1, 2, 3] [1, 2, 3] 2 通过iterable可迭代对象,比如str对象,range对象,map对象 >>&g ...