libsvm-javaAPI

简介: 获得 <dependency> <groupId>tw.edu.ntu.csie</groupId> <artifactId>libsvm</artifactId> <version>3.17</version></dependency> libsvm-3.17.jar的结构见

获得

<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"};
此时,预测结果的输出为:

第一行是标签的集合。
从第二行开始,格式为: 预测结果    预测准确的概率    预测不准确的概率
目录
相关文章
|
2月前
|
存储 分布式计算 测试技术
探索Apache Hudi核心概念 (4) - Clustering
探索Apache Hudi核心概念 (4) - Clustering
156 2
|
11月前
|
机器学习/深度学习 数据采集 自然语言处理
MEE: A Novel Multilingual Event Extraction Dataset 论文解读
事件抽取(EE)是信息抽取(IE)的基本任务之一,旨在从文本中识别事件提及及其论点(即参与者)。由于其重要性,已经为事件抽取开发了广泛的方法和资源。
116 0
|
机器学习/深度学习 算法 数据挖掘
浅析sklearn中的Pipeline
为什么需要Pipeline? 在日常机器学习项目开发中,可能会经过数据缩放、特征组合以及模型学习拟合等过程;并且,当问题更为复杂时,所应用到的算法以及模型则较为繁杂。
|
消息中间件 JSON 大数据
Structured_Source_Kafka_回顾 | 学习笔记
快速学习 Structured_Source_Kafka_回顾
67 0
Structured_Source_Kafka_回顾 | 学习笔记
|
消息中间件 分布式计算 大数据
Structured_Source_Kafka_整合 | 学习笔记
快速学习 Structured_Source_Kafka_整合
83 0
Structured_Source_Kafka_整合 | 学习笔记
|
机器学习/深度学习 PyTorch 算法框架/工具
Re5:读论文 TWAG: A Topic-guided Wikipedia Abstract Generator
Re5:读论文 TWAG: A Topic-guided Wikipedia Abstract Generator
Re5:读论文 TWAG: A Topic-guided Wikipedia Abstract Generator
|
SQL 分布式计算 API
Flink / Scala - DataSet Transformations 常用转换函数详解
​上一篇文章讲到了 Flink 如何获取数据生成 DataSet,这篇文章主要讨论 DataSet 后续支持的 Transform 转换函数。相较于 Spark,Flink 提供了更多的 API 和更灵活的写法与实现。
256 0
Flink / Scala - DataSet Transformations 常用转换函数详解
|
机器学习/深度学习 分布式计算 算法
【Spark MLlib】(四)K-Means 聚类分析
【Spark MLlib】(四)K-Means 聚类分析
197 0
|
机器学习/深度学习 分布式计算 算法
Spark MLlib中KMeans聚类算法的解析和应用
聚类算法是机器学习中的一种无监督学习算法,它在数据科学领域应用场景很广泛,比如基于用户购买行为、兴趣等来构建推荐系统。
Spark MLlib中KMeans聚类算法的解析和应用
|
Apache 流计算 消息中间件
Streaming with Apache Training
Apache Flink流式传输 本次培训主要专注在四个重要的概念:连续处理流数据,事件时间,有状态的流处理和状态快照。 流处理 流是数据天然的栖息地,无论是来自Web服务器的事件,来自证券交易所的交易,还是来自工厂车间的机器传感器读数,数据都是作为流的一部分创建的。
1279 0