libsvm-javaAPI
来源:互联网 发布:windows iso怎么安装 编辑:程序博客网 时间:2024/05/16 07:15
获得
<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"};此时,预测结果的输出为:
第一行是标签的集合。
从第二行开始,格式为: 预测结果 预测准确的概率 预测不准确的概率
1 0
- libsvm-javaAPI
- JavaAPI
- JavaAPI
- javaAPI:
- JavaAPI
- javaAPI
- JavaAPI
- JavaAPI
- JavaAPI
- LIBSVM
- libSVM
- libsvm
- LibSVM
- libsvm
- libsvm
- LIBSVM
- libsvm
- libsvm
- Flyweight模式 享元模式
- Java Graphics2D类的绘图方法
- OpenCV入门 - 提取SIFT关键点
- 从一个简单例子谈谈js的捕获与冒泡问题
- android 集成第三方静态库的编译方法
- libsvm-javaAPI
- 为什么封装的dll看不到注释
- linux获取前一天的日期的脚本
- iOS开发遇到问题汇总(一)
- Android源码解读 第二篇
- Chrome浏览器自动将ajax请求回来的json数据排序问题
- 写一个数组,实现初始化,逆序,清空,显示。
- 反调试学习
- 没有防毒软件的iOS,还安全么?