在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相关推荐

  1. libsvm java 实例_LibSVM Java API调用示例程序

    [实例简介] LibSVM Java API调用示例程序 Eclipse 完整工程可以运行 相关详情见http://blog.csdn.net/yangliuy/article/details/804 ...

  2. 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 ...

  3. libsvm java 调用说明

    libsvm是著名的SVM开源组件,目前有JAVA.C/C++,.NET 等多个版本,本人使用的是2.9 libsvm命名空间下主要使用类: svm_model 为模型类,通过训练或加载训练好的模型文 ...

  4. libsvm java下载_一个基于LIBSVM(JAVA)的股票预测demo

    [实例简介] 一个基于LIBSVM的股票价格预测程序,采用随机森林算法对样本进行训练和预测,使用的编程语言为JAVA. [实例截图] [核心代码] stock-master └── stock-mas ...

  5. libsvm java 实例,libsvm-3.1

    [实例简介] libsvm-3.1是对MATLAB(2008版以后)中libsvm工具箱的补充,该补充工具包主要用来选择最佳的参数. [实例截图] [核心代码] 7c21e762-74e0-45bc- ...

  6. libsvm java 怎么调参_libsvm使用说明

    本文记录了libsvm的使用方法.参数说明.数据格式.模型格式,并且对数据标准化和自动寻参等,做了整理.对libsvm的Java代码,整理成了Maven结构,注释了主要接口.本来准备完整地将libsv ...

  7. libsvm java svmtrain_libsvm工具包(含网格法查找最优解函数 SVMcgForClass.m 内用svmtrain函数)...

    [实例简介] 在其中的windows文件夹中 [实例截图] [核心代码] libsvm-3.22 └── libsvm-3.22 ├── COPYRIGHT ├── FAQ.html ├── hear ...

  8. Libsvm java工程实践

    在上篇文章中对libsvm的流程和简单的java代码测试做了说明,本篇简单对libsvm如何在工程中实践进行简短说明,不当的地方欢迎大家指正. 第一步是对libsvm的预测函数进行调整,我是从svm_ ...

  9. libsvm java 实例_LibSvm流程及java代码测试

    使用libSvm实现文本分类的基本过程,此文参考 使用libsvm实现文本分类 对前期数据准备及后续的分类测试进行了验证,同时对文中作者的分词组件修改成hanLP分词,对数字进行过滤,仅保留长度大于1 ...

最新文章

  1. UWP Composition API - PullToRefresh
  2. 花了2周时间收集汇总的大厂面经,节后准备跳槽的看过来!
  3. python怎么导入视频-Python读取视频的两种方法(imageio和cv2)
  4. pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出
  5. 驱动备份工具哪个好_文章原创度检测工具哪个好?这个工具还有其他你不知道的功能...
  6. 让MySQL支持Emoji表情 mysql 5.6
  7. 一文读懂 JAVA 异常处理
  8. Yii2 的 redis 应用
  9. excel if in函数_【Excel函数】Small+Index+IF 一对N返回
  10. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  11. 在.Net中,如何创建一个后台执行的进程?
  12. linux基本管理命令,linux常用命令与基本管理
  13. async spring 默认线程池_springboot中@Async默认线程池导致OOM问题
  14. 计算机一级a河北,2009年河北省计算机一级考试A卷
  15. 2022年视频号的五大机会,教育商家该如何上车?
  16. 百分比函数用计算机怎么设置,excel怎么自动计算百分比 excel百分比公式怎么输入...
  17. android录制视频设置分辨率,Android录制视频的全面屏适配
  18. 【LeetCode】马三来刷题之 Single Number
  19. Kent Beck确认参加敏捷中国大会2009,讲述其35年架构设计心得
  20. Strings and Runes

热门文章

  1. glide从入门到精通使用
  2. SFTP上传下载文件
  3. Python抓取小说
  4. thinkphp中I(parm)用法的注意事项
  5. 《Unix环境高级编程》读书笔记 第5章-标准I/O流
  6. SQL Sever 常用语句总结
  7. linux 环境变量设置(临时 + 永久)
  8. gdb 调试带参数的程序-转
  9. linux 编码转换-转
  10. 1095 解码PAT准考证 (25 point(s)) - PAT乙级真题