Libsvm Java
在java环境下用Libsvm包解决一个多分类问题。
1、将训练数据和测试数据按照libsvm的数据格式存放
可以写程序直接构造,libsvm的数据格式如下
Label 1:value 2:value ….
其中1、2是特征的序号,后面跟的是该特征值。当特征值为0的时候,可以省略不写,也就是说特征序号可以不连续。如-15 1:0.708 3:-0.3333.....
2、用svm-scale对数据进行归一化处理
之前一直训练失败的原因主要是没有对数据进行缩放,svm-scale.exe在libsvm包里windows文件夹里,作用是对数据进行缩放,防止某个特征过大或过小,从而在训练中起的作用不平衡。
下图是可选参数,-l后面跟数据归一化的下界,-u后面跟数据归一化的上界。
具体用法
这里设置的归一化上下界为0和1,svmTrainData.txt是原始训练数据,将缩放后的数据保存到train.scale。
注意训练数据和测试数据都要做归一化处理。
3、用网格搜索(grid search)寻找最优参数
libsvm包的tools文件夹下有一个grid.py文件,可以对训练数据进行参数寻优。
先介绍一下svm_train的各项可选参数:
- -s svm类型:SVM设置类型(默认0)
0 — C-SVC; 1 –v-SVC; 2 – 一类SVM; 3 — e-SVR; 4 — v-SVR - -t 核函数类型:核函数设置类型(默认2)
0 – 线性核函数:u’v
1 – 多项式核函数:(r*u’v + coef0)^degree
2 – RBF(径向基)核函数:exp(-r|u-v|^2)
3 – sigmoid核函数:tanh(r*u’v + coef0) - -d degree:核函数中的degree设置(针对多项式核函数)(默认3)
- -g r(gamma):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/k,k为总类别数)
- -r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
- -c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
- -n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
- -p p:设置e -SVR 中损失函数p的值(默认0.1)
- -m cachesize:设置cache内存大小,以MB为单位(默认40)
- -e eps:设置允许的终止判据(默认0.001)
- -h shrinking:是否使用启发式,0或1(默认1)
- -wi weight:设置第几类的参数C为weight*C (C-SVC中的C) (默认1)
- -v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
网格寻优找的主要是最优的gamma和cost。在使用grid.py之前得先装一个绘图工具gnuplot。具体使用方法可以参考博客https://blog.csdn.net/u014772862/article/details/51829727
4、训练和测试
获得归一化的数据以及找到最优参数后就可以进行svm训练了。训练和测试的java代码很简单:
public static void main(String[] args) throws IOException { String[] arg = {"-c","2.0","-g","0.03125","D:/MnistDatabase/svm/train.scale","D:/MnistDatabase/svm/svmModel.txt" }; String[] parg = {"D:/MnistDatabase/svm/test.scale","D:/MnistDatabase/svm/svmModel.txt" ,"D:/MnistDatabase/svm/svmPredict.txt"}; System.out.println(".........svm运行开始........."); svm_train t = new svm_train(); svm_predict p= new svm_predict(); t.main(arg); p.main(parg);}
svmModel.txt存放的是训练好的svm模型,模型中各参数的意义可以参考这篇博客https://blog.csdn.net/zhaoluruoyan89/article/details/78342101
转载于:https://www.cnblogs.com/yingying7/p/9761101.html
Libsvm Java相关推荐
- libsvm java 实例_LibSVM Java API调用示例程序
[实例简介] LibSVM Java API调用示例程序 Eclipse 完整工程可以运行 相关详情见http://blog.csdn.net/yangliuy/article/details/804 ...
- libsvm java下载_java-libsvm 版 结合已有数据集的demo,方便初学者使用 Develop 238万源代码下载- www.pudn.com...
文件名称: java-libsvm下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 1146 KB 上传时间: 2014-03-20 下载次数: 1 详细说明:ja ...
- libsvm java 调用说明
libsvm是著名的SVM开源组件,目前有JAVA.C/C++,.NET 等多个版本,本人使用的是2.9 libsvm命名空间下主要使用类: svm_model 为模型类,通过训练或加载训练好的模型文 ...
- libsvm java下载_一个基于LIBSVM(JAVA)的股票预测demo
[实例简介] 一个基于LIBSVM的股票价格预测程序,采用随机森林算法对样本进行训练和预测,使用的编程语言为JAVA. [实例截图] [核心代码] stock-master └── stock-mas ...
- libsvm java 实例,libsvm-3.1
[实例简介] libsvm-3.1是对MATLAB(2008版以后)中libsvm工具箱的补充,该补充工具包主要用来选择最佳的参数. [实例截图] [核心代码] 7c21e762-74e0-45bc- ...
- libsvm java 怎么调参_libsvm使用说明
本文记录了libsvm的使用方法.参数说明.数据格式.模型格式,并且对数据标准化和自动寻参等,做了整理.对libsvm的Java代码,整理成了Maven结构,注释了主要接口.本来准备完整地将libsv ...
- libsvm java svmtrain_libsvm工具包(含网格法查找最优解函数 SVMcgForClass.m 内用svmtrain函数)...
[实例简介] 在其中的windows文件夹中 [实例截图] [核心代码] libsvm-3.22 └── libsvm-3.22 ├── COPYRIGHT ├── FAQ.html ├── hear ...
- Libsvm java工程实践
在上篇文章中对libsvm的流程和简单的java代码测试做了说明,本篇简单对libsvm如何在工程中实践进行简短说明,不当的地方欢迎大家指正. 第一步是对libsvm的预测函数进行调整,我是从svm_ ...
- libsvm java 实例_LibSvm流程及java代码测试
使用libSvm实现文本分类的基本过程,此文参考 使用libsvm实现文本分类 对前期数据准备及后续的分类测试进行了验证,同时对文中作者的分词组件修改成hanLP分词,对数字进行过滤,仅保留长度大于1 ...
最新文章
- UWP Composition API - PullToRefresh
- 花了2周时间收集汇总的大厂面经,节后准备跳槽的看过来!
- python怎么导入视频-Python读取视频的两种方法(imageio和cv2)
- pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出
- 驱动备份工具哪个好_文章原创度检测工具哪个好?这个工具还有其他你不知道的功能...
- 让MySQL支持Emoji表情 mysql 5.6
- 一文读懂 JAVA 异常处理
- Yii2 的 redis 应用
- excel if in函数_【Excel函数】Small+Index+IF 一对N返回
- 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
- 在.Net中,如何创建一个后台执行的进程?
- linux基本管理命令,linux常用命令与基本管理
- async spring 默认线程池_springboot中@Async默认线程池导致OOM问题
- 计算机一级a河北,2009年河北省计算机一级考试A卷
- 2022年视频号的五大机会,教育商家该如何上车?
- 百分比函数用计算机怎么设置,excel怎么自动计算百分比 excel百分比公式怎么输入...
- android录制视频设置分辨率,Android录制视频的全面屏适配
- 【LeetCode】马三来刷题之 Single Number
- Kent Beck确认参加敏捷中国大会2009,讲述其35年架构设计心得
- Strings and Runes