如何使用LIBSVM,从安装到基本实例使用
1.在eclipse上安装libsvm
下载libsvm压缩包解压到本地目录,下载地址http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html
如图:

2.新建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。

3.编写libSvm基本代码实例
package SVM;
import libsvm.svm;
import libsvm.svm_model;
import libsvm.svm_node;
import libsvm.svm_parameter;
import libsvm.svm_problem; public class jmain { /**
* @param args
*/
public static void main(String[] args) {
//定义训练集点a{10.0, 10.0} 和 点b{-10.0, -10.0},对应lable为{1.0, -1.0}
svm_node pa0 = new svm_node();
pa0.index = 0;
pa0.value = 176.0;
svm_node pa1 = new svm_node();
pa1.index = 1;
pa1.value = 70.0;
svm_node pb0 = new svm_node();
pb0.index = 0;
pb0.value = 180.0;
svm_node pb1 = new svm_node();
pb1.index = 1;
pb1.value = 80.0;
svm_node pc0 = new svm_node();
pb0.index = 0;
pb0.value = 161.0;
svm_node pc1 = new svm_node();
pb1.index = 1;
pb1.value = 45.0;
svm_node pd0 = new svm_node();
pb0.index = 0;
pb0.value = 163.0;
svm_node pd1 = new svm_node();
pb1.index = 1;
pb1.value = 47.0;
svm_node[] pa = {pa0, pa1}; //点a
svm_node[] pb = {pb0, pb1}; //点b
svm_node[] pc = {pc0, pc1}; //点c
svm_node[] pd = {pd0, pd1}; //点d
svm_node[][] datas = {pa, pb,pc,pd}; //训练集的向量表
double[] lables = {1.0,1.0,2.0,2.0}; //a,b 对应的lable //定义svm_problem对象
svm_problem problem = new svm_problem();
problem.l = 4; //向量个数
problem.x = datas; //训练集向量表
problem.y = lables; //对应的lable数组 //定义svm_parameter对象
svm_parameter param = new svm_parameter();
param.svm_type = svm_parameter.C_SVC;
param.kernel_type = svm_parameter.LINEAR;
param.cache_size = 100;
param.eps = 0.00001;
param.C = 1; //训练SVM分类模型
System.out.println(svm.svm_check_parameter(problem, param)); //如果参数没有问题,则svm.svm_check_parameter()函数返回null,否则返回error描述。
svm_model model = svm.svm_train(problem, param); //svm.svm_train()训练出SVM分类模型 //定义测试数据点c
svm_node pe0 = new svm_node();
pc0.index = 0;
pc0.value = 165.0;
svm_node pe1 = new svm_node();
pc1.index = 1;
pc1.value = 50.0;
svm_node[] pe = {pe0, pe1}; //预测测试数据的lable
System.out.println(svm.svm_predict(model, pe));
}
}
代码说明以及简单的svm介绍如下:
1.libSvm可以用来分类,大概的原理是先使用svm对已经知道的数据进行训练得出训练模型,然后通过训练模型对要分析的数据进行预测,得出分类。
2.例子:
一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中
男生1 身高:176cm 体重:70kg;
男生2 身高:180cm 体重:80kg;
女生1 身高:161cm 体重:45kg;
女生2 身高:163cm 体重:47kg;
这些是已经知道的数据,使用这些数据建立训练模型,通过训练模型可以通过给出的身高和体重分类是男生还是女生
1) 先建立训练模型
数据格式为:
<lable1>
1:特征1 2:特征2 3:特征3 ...
<lable2> 1:特征1 2:特征2 3:特征3 ...
以下建立班级男女生训练数据:
1:代表男生 2:代表女生
------------------------------------------此为标签
数据:
Label index1:value1 index2:value2
1 1:176 2:70
1 1:180 2:80
2 1:161 2:45
2 1:163 2:47
开始训练:使用libsvm的函数svm.svm_train
2)
测试数据
如进来了一个数据165 50
使用libSvm自带的函数svm_predict来预测
3) 输出结果为
null
*
- optimization
finished, #iter = 1
nu =
3.474876641879213E-5
- obj =
-6.949753283758427E-5, rho = 1.0
nSV = 2,
nBSV = 0
Total nSV
= 2
2.0
其中:
Null表示输入参数正确
#iter为迭代次数
nu是你选择的核函数类型的参数
- obj为SVM文件转换为的二次规划求解得到的最小值
rho为判决函数的偏置项b
nSV为标准支持向量个数(0<a[i]<c)
nBSV为边界上的支持向量个数(a[i]=c)
Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)
2.0表示预测身高165,体重50kg的是女生
如何使用LIBSVM,从安装到基本实例使用的更多相关文章
- matlab使用libsvm入门教程——使用matlab安装配置libsvm以及一个svm分类实例
前言 此教程专注于刚入门的小白, 且博客拥有时效性, 发布于2019年3月份, 可能后面的读者会发现一些问题, 欢迎底下评论出现的问题,我将尽可能更新解决方案. 我开始也在如何安装libsvm上出现了 ...
- SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例
sql server 安装第一个实例,默认实例的端口是1433, 一个库中如果有多个实例,从第二个实例开始的端口是动态端口,需要的话,自己手工指定为静态端口,如指定第二个实例为1434 或着随意一个如 ...
- Matlab的libsvm的安装
最关键的是compilers的选择(对于把Microsoft visual stdio 2005或者其他的编译器安装在自定义目录下的这一步非常关键) 以下是步骤:>> mex -setu ...
- 学习笔记24—win10环境下python版libsvm的安装
1.前言 由于毕业设计需要用到libsvm,所以最近专心于配置libsvm,曾经尝试过在matlab中安装,但是没有成功.最终在Python环境中完成安装. 2.LIBSVM介绍 LIBSVM 是台湾 ...
- Linux平台下源码安装mysql多实例数据库
Linux平台下源码安装mysql多实例数据库[root@linux-node1 ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6 ...
- Anaconda 下libsvm的安装
方法一. 利用VS生成动态库的安装 详细可参考这篇博文进行操作:https://blog.csdn.net/jeryjeryjery/article/details/72628255 方法二. ...
- 如何在Centos7上安装zookeeper 多实例
一.如何在Centos7上安装zookeeper 多实例 cd /usr/local/src/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/zoo ...
- Django学习笔记(一):环境安装与简单实例
Django学习笔记(一):环境安装与简单实例 通过本文章实现: Django在Windows中的环境安装 Django项目的建立并编写简单的网页,显示欢迎语与当前时间 一.环境安装 结合版本兼容性等 ...
- MongoDB安装及多实例启动
MongoDB安装及多实例启动 MongoDB简介 MongoDB是一款跨平台.面向文档的数据库.可以实现高性能.高可用性,并且能够轻松扩展,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下 ...
- 成功安装SQL Server实例后 无法找到SQL Server Configuration Manager工具的解决方案
有一次成功安装SQL Server实例后 ,但是在所有程序中无法找到SQL Server Configuration Manager工具,以下步骤是我们当时的解决方案.最后成功将这个工具的转移到了桌面 ...
随机推荐
- Java反射机制剖析(三)-简单谈谈动态代理
通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制. 1. 代理模式 代理模式就是为其他对象提供一种代理来 ...
- Lua学习(5)——迭代器与泛型for
1. 迭代器 2. 泛型for语义 所谓迭代器就是一种可以遍历一种集合中所有元素的机制.在lua中,迭代器通常表示为函数,每调用依次函数就返回集合中的下一个元素.泛型for 内部保存了迭代器函数 实际 ...
- 常用统计分析 SQL 在 AWK 中的实现(转)
转自:http://my.oschina.net/leejun2005/blog/100710 最近有需求需要本地处理一些临时的数据,用做统计分析.如果单纯的 MYSQL 也能实现, 不过一堆临时数据 ...
- 以太坊RLP用法-go-ethereum学习
RLP (递归长度前缀)提供了一种适用于任意二进制数据数组的编码,RLP已经成为以太坊中对对象进行序列化的主要编码方式.RLP的唯一目标就是解决结构体的编码问题:对原子数据类型(比如,字符串,整数型, ...
- 普通自适应遗传算法AGA的PC和PM公式解读
写在前面 本文对于普通自适应遗传算法的Pm和Pc的公式进行了解读,此公式为M.Srinivas 和 L .M. Patnaik在1994年的<Adaptive Probabilities of ...
- Java 9 揭秘(1.Java入门介绍)
文 by / 林本托 在第一部分中,主要讲解如下内容: JDK 9 包含了哪些内容 运行代码的系统要求 如何安装 NetBeans 1 JDK 介绍 JDK 9是Java开发工具包的第九个主要版本,计 ...
- JVM-5.字节码执行引擎
一.概述 二.栈帧结构 三.方法调用 四.方法执行 一.概述 虚拟机与物理机 虚拟机是一个相对于物理机的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件. ...
- javaSE_05Java中方法(函数)与重载、递归
1.方法的声明和调用 什么是方法?为什么需要方法?代码复用,方便软件升级 什么是方法? 具备特定功能的一段独立的代码段 标准的方法格式:(注意格式的顺序) 修饰符 返回值类型 方法名(参数类型 参数名 ...
- go服务端----使用dotweb框架搭建简易服务
使用dotweb框架搭建简易服务 go语言web框架挺多的,所谓琳琅满目,里面也有很多优秀的,比如echo.beego等,但体验下来,总是觉得哪里有点小疙瘩,后来才明白过来,echo太简单,很多日常使 ...
- spring管理配置文件的工厂类--PropertiesFactoryBean
使用这个工厂的配置,可以很方便的获取配置文件中的属性.具体使用如下; 对于属性配置,一般采用的是键值对的形式,如: key=value 属性配置文件一般使用的是XXX.properties,当然有时候 ...