libsvm-javaAPI

获得

<dependency>
	<groupId>tw.edu.ntu.csie</groupId>
	<artifactId>libsvm</artifactId>
	<version>3.17</version>
</dependency>

libsvm-3.17.jar的结构见下图,

default package:这里是工具制作者自己封装出来的一些类,它们都有main函数,可作为小工具直接使用。
libsvm package:核心文件。
关于default package:因为里面的类不在任意一个package中,所以我们的工程无法引用。解决办法是,通过maven得到源代码,然后复制粘贴到我们的package下面。

svm_train的输入为训练集,输出为得到的训练模型。
svm_predict的输入为待预测数据,输出为得到的预测结果。
它们的输入输出都是文件。

训练集

libsvm官方提供了一些训练集:http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
其中有一个breast-cancer训练集,见图:

格式为: label featurIndex1:value1featurIndex2:value2  ...

缩放

在一些情况下,我们会对训练数据进行缩放,缩放的目的在于:
1)避免一些特征值范围过大而另一些特征值范围过小;
2)避免在训练时为了计算核函数而计算内积的时候引起数值计算的困难。
因此,通常将数据缩放到[ -1,1]或者是[0,1]之间。
libsvm提供了svm_scale类来进行缩放。
缩放参数有-l lower : x scaling lower limit (default -1)与-u upper : x scaling upper limit (default +1)。

将breast-cancer训练集缩放后的部分结果见图:

训练模型model

它是一个文本文件,内容见图:

预测

本例中直接把训练集作为待预测集,结果见下:

预测集与训练集一样,每一行都要有label标签。当我们用已知的结果来检验预测的准确性时,那么下行输出的准确性统计就是真实的:

Accuracy = 90.9090909090909% (10/11) (classification)

当我们预测未知数据时(大多数情况都属于这一种),那么这行信息忽略就可以了。

代码

参数设置

-b 表示是否携带准确性估计信息。

训练阶段与预测阶段都需要携带-b参数。例:

 String[] testArgs = {"-b","1","d:/libsvm/breast-cancer.predict.txt", "d:/libsvm/breast-cancer.model", "d:/libsvm/breast-cancer.predict.result.txt"};

此时,预测结果的输出为:

第一行是标签的集合。

从第二行开始,格式为: 预测结果    预测准确的概率    预测不准确的概率

时间: 2024-11-03 13:38:20

libsvm-javaAPI的相关文章

使用libsvm在matlab上做回归预测

问题描述 使用libsvm在matlab上做回归预测 训练精度非常高,但预测时预测值不变,出现了过学现象,怎么降低过学现象,求大神讲解 解决方案 LIBSVM做回归预测用LIBSVM做回归和预测的步骤 解决方案二: 过拟合的情况,跟你的模型的参数肯定是有关的.

使用libsvm实现文本分类

文本分类,首先它是分类问题,应该对应着分类过程的两个重要的步骤,一个是使用训练数据集训练分类器,另一个就是使用测试数据集来评价分类器的分类精度.然而,作为文本分类,它还具有文本这样的约束,所以对于文本来说,需要额外的处理过程,我们结合使用libsvm从宏观上总结一下,基于libsvm实现文本分类实现的基本过程,如下所示: 选择文本训练数据集和测试数据集:训练集和测试集都是类标签已知的: 训练集文本预处理:这里主要包括分词.去停用词.建立词袋模型(倒排表): 选择文本分类使用的特征向量(词向量):

libsvm gnuplot-windows平台使用python 调用gnuplot画图后窗口不能保持

问题描述 windows平台使用python 调用gnuplot画图后窗口不能保持 如题,本人刚刚学习libsvm,希望各位前辈能帮帮我! libsvm.python.gnuplot都安装好了,做的是最基础的"python grid.py heart____scale" 这个例子,程序跑的过程中是gunplot的窗口是存在的,但是跑完之后窗口就自己关闭了,不知道为什么,求各位前辈能帮帮忙指点一下!! 解决方案 http://bbs.chinaunix.net/thread-405837

svm-关于LIBSVM的问题和改写SVDD的问题

问题描述 关于LIBSVM的问题和改写SVDD的问题 用了libsvm进行过一些实验,也把SVM和SVDD的算法都给了解了一下,但是看源码的时候遇到一些难题,其实就是并不清楚SVM里面的核心算法是在那一块,在predict还是在train中,因为现在我需要把SVM的算法改写成SVDD的算法.但是不清楚在哪一块修改,因此想来求教下各位大牛 解决方案 http://www.cnblogs.com/dupuleng/articles/3683232.html 解决方案二: libsvm的python安

win7-有关libsvm在Python2.7上的安装问题

问题描述 有关libsvm在Python2.7上的安装问题 大家好,我想安装libsvm,Python2.7版本(Win7) 我的Python是32位的,我也添加了DLL文件到环境变量中,但是引用svm库的时候会出现"不是有效的Win32"错误. 我在网上查了一下,发现这样的问题基本是因为python版本与libsvm不匹配造成的. 但是,我的python是32位,与下载的libsvm相同,所以,我不是很确定原因是什么. 找了好久都没有找到原因,请大家帮帮我,谢谢啦! 解决方案 还需要

支持向量机libsvm实战入门

一.libsvm介绍     SVM支持向量机是目前比较流行的一种数据挖掘方法,能够处理较高维度,具体介绍可参考这篇博文: 支持向量机通俗导论(理解SVM的三层境界)     LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单.易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进.修改以及在其它操作系统上应用:该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参

关于javaAPI中接口中方法实现的理解

问题描述 由于刚学java,对于javaAPI中接口中的方法可以直接使用感到非常好奇,比如上面publicinterfaceIterator<E>是抽象的,但我可以使用booleanhasNext();它是在哪里实现的,我怎么可以通过Iterator对象来使用它.它背后的实现机制是什么?还是我根本就理解错了?求大神指点!!! 解决方案 解决方案二:你说的iterator对象是i的引用吧,只能是实现了iterator接口的类的实例对象,既然继承了itrator就继承了itratoa的两个方法ha

LIBSVM在MATLAB中的使用

下载 libsvm库下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 数据集下载:http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/ 配置 设置path:File->set path ->add with subfolders->加入libsvm-3.x文件夹的路径 使用 >> [label instance] = libsvmread('heart_scale'); >

Libsvm(java)哪里有学习资料?

问题描述 Libsvm(java)哪里有学习资料? 很多的MATLAB资料,很少有java版本的.求java学习资料!求java学习资料!求java学习资料!求java学习资料! 解决方案 学习资料,大家共享.免费课程JSP动态网站开发基础练视频教程http://www.hztraining.com/bbs/showtopic-436.aspx?JSP学习教程(初级篇)(S2阶段) http://www.hztraining.com/bbs/showtopic-525.aspxJSP入门教程 h

使用libsvm进行分类预测

使用libsvm,首先需要将实际待分类的内容或数据(训练数据,或预测数据)进行量化,然后通过libsvm提供的功能实现分类和预测.下面介绍使用libsvm的基本步骤. 准备训练数据 数据格式: 1 <label1> <index1>:<value11> <index2>:<value12>... 2 <label2> <index1>:<value21> <index2>:<value22&g