1.所需要软件下载:

(1)libsvm(http://www.csie.ntu.edu.tw/~cjlin/libsvm/)

(2)python

(3)gnuplot 画图软件(ftp://ftp.gnuplot.info/pub/gnuplot/)

这里只考虑windows的环境:

1、 下载libsvm的zip包,只要解压到某个文件夹就好就好(随便D:\gjs\libsvm)

2、安装python(我的是2.7.3)

3、下载好gnuplot ,直接解压就好,无需安装(C:\gnuplot)

2.数据格式说明

0 1:5.1 2:3.5 3:1.4 4:0.2
2 1:4.9 2:3.0 3:1.4 4:0.2
1 1:4.7 2:3.2 3:1.3 4:0.2
[label]   [Index1]:[value1]  [index2]:[value2]  [index3]:[value3]
 [label]:类别(通常是整数)[index n]: 有顺序的索引 [value n]

可能需要自己转换训练以及测试数据的格式。

3.使用方法

1. windows cmd命令窗口

下载的libsvm包里面已经为我们编译好了(windows)。

进入libsvm\windows,可以看到这几个exe文件:

1.svm-predict: svmpredict     test_file       mode_file    output_file      依照已经train好的model ,输入新的数据,并输出预测新数据的类别。

2.svm-scale: 有时候特征值的波动范围比较大需要对特征数据进行缩放,可以缩放到0--1之间(自己定义)。

3.svm-toy:似乎是图形界面,可以自己画点,产生数据等。

4.svm-train:  svmtrain  [option]  train_file  [model_file]     train 会接受特定格式的输入,产生一个model 文件。

第一步:可以自己生成数据,使用svm-toy:

双击svm-toy,点击change可以在画布上画点:

点击run,其实就是train的过程,划分的区域:

点击save可以保存数据(假设保存的数据在D://libsvm.txt)。

第二步:使用训练数据libsvm.txt进行建模,使用svm-train:

使用cmd命令进入到我们解压的libsvm目录中的windows目录,使用svm-train,如下:


 其中,

#iter为迭代次数,

nu 是你选择的核函数类型的参数,

obj为SVM文件转换为的二次规划求解得到的最小值,

rho为判决函数的偏置项b,

nSV 为标准支持向量个数(0<a[i]<c),

nBSV为边界上的支持向量个数(a[i]=c),

Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和

同时在该目录下会生成一个训练好的model(libsvm.txt.model)可以打开文件查看里面的内容,主要包括一些参数和支持向量等

第三步:使用建好的model进行预测,使用svm-predict
     
同时会生成一个输出文件(libsvm.txt.out),每行代表该行的预测值类别。

参数优化:

svm的参数优化很重要,libsvm包里面包含了参数的优化函数,主要是暴力求解参数。一般来说我们会使用高斯核函数,包含两个参数(c 和 g)

使用gird.py文件进行参数优化选择:

grid.py在libsvm/tools里面,首先需要修改gird.py中的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:

进入grid.py的相应目录,执行grid.py D://libsvm.txt

前面两个分别是c 跟g的值,这时候我们重新训练模型(加上参数c g)

可以看到,准确率有了显著的提升, 其实这些步骤完全可以使用easy.py进行实现,同理也需要修改eays.py里面的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:

   步骤总结如下:

   1.转换训练数据为相应的格式。

   2.有时候可能需要使用 svm-scale对数据进行相应的缩放,有利于训练建模。

     

  3.使用grid.py或者easy.py进行参数优化。

  4.使用svm-train建模和svm-predict进行预测。

2.python版本 使用:

>>> import os
>>> os.chdir('D://gjs//libsvm//python')
>>> from svmutil import *
>>> y,x=svm_read_problem("D://libsvm.txt")
>>> m=svm_train(y,x,'-c 8.0 -g 8.0')
>>> p_lable,p_acc,p_val=svm_predict(y,x,m)
Accuracy = 96.1538% (25/26) (classification)
>>>

>>> import os
>>> os.chdir('D://gjs//libsvm//python')
>>> from svmutil import*
>>> data=svm_problem([1,-1],[[1,0,1],[-1,0,-1]]) #元组一表示分类类别
>>> param=svm_parameter('-c 8.0 -g 8.0')
>>> model=svm_train(data,param)
>>> svm_predict([1],[1,1,1],model)
>>>svm_predict([1,-1],[[1,-1,-1],[1,1,1]],model)
Accuracy = 0% (0/2) (classification)
([-1.0, 1.0], (0.0, 4.0, 1.0), [[0.0], [0.00033546262790251185]])

3.weka中使用libSVM:

  可以参照: http://datamining.xmu.edu.cn/~gjs/project/LibD3C.html

4.eclipse中调用libsvm:

   http://datamining.xmu.edu.cn/~gjs/download/LibSVM.jar

   http://datamining.xmu.edu.cn/~gjs/download/libsvm.jar

 下载以上两个包libsvm的包,然后在eclipse工程目录里面添加相应的jar包:

  

DataSource source = new DataSource("D://iris.arff");Classifier clas=new LibSVM();String[] optSVM = weka.core.Utils.splitOptions("-c 8.0 -g 8.0");((LibSVM) clas).setOptions(optSVM);Instances data=source.getDataSet();data.setClassIndex(data.numAttributes()-1);Evaluation eval=new Evaluation(data);eval.crossValidateModel(clas, data, 10, new Random(1));System.out.println(eval.toClassDetailsString());System.out.println(eval.toSummaryString());System.out.println(eval.toMatrixString());

输出结果为:

 5. linux下使用libsvm:

确认已经安装好python    

1. wget http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz。

2tar -zxvf /home/gjs/libsvm.tar.gz。

3. 进入目录执行 make 编译。

4. ./svm-train /home/gjs/libsvm.txt  其他也类似。

5. python grid.py /home/gjs/libsvm.txt  优化参数。

转载于:https://www.cnblogs.com/GuoJiaSheng/p/4480497.html

libsvm使用方法总结相关推荐

  1. LIBSVM使用方法

    1. Libsvm下载 下载libsvm的最新版本,下载地址为http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 目前最新版本为libsvm-3.22 将libsvm- ...

  2. weka和matlab完成完整分类实验

    本文 本文简单介绍数据集介绍.weka的使用.weka与LIBSVM.matlab与LIBSVM以及分类的若干细节问题. 1. 数据集介绍 打开网址UCI数据集,如下图.    从右下角可以看到Iri ...

  3. ROS下的人体姿态识别tf-pose-estimation(tensorflow版本的openpose)

    相关链接: 项目: tf-pose-estimation https://github.com/ildoonet/tf-pose-estimation tf-pose-estimation for R ...

  4. matlab查看支持向量数,支持向量机回归 MATLAB程序 参数设置(转)

    LIBSVM使用方法 LibSVM是以源代码和可执行文件两种方式给出的.如果是Windows系列操作系统,可以直接使用软件包提 供的程序,也可以进行修改编译:如果是Unix类系统,必须自己编译,软件包 ...

  5. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  6. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  7. LIBSVM的使用方法以及参数注释总结

    目录 1. 模型训练 1.1 libsvmtrain三个输入参数,其中 1.2 libsvmtrain返回参数 1.3 模型最佳参数选取 1.4 SVM 怎样能得到好的结果 2. 使用训练模型进行预测 ...

  8. 【LIBSVM中的 SVMcgForClass提示不存在的解决方法】

    LIBSVM中的 SVMcgForClass提示不存在的解决方法 应该是下载了错误的libsvm版本,我之前也是碰到这个问题,后面下载了frauto的最新版本,里面就有这个函数,把路径包含进去就可以了 ...

  9. (转)python 搭建libsvm方法。python版本和libsvm版本匹配很重要!

    <集体智慧编程>关于婚介数据集的SVM分类 转自:http://muilpin.blog.163.com/blog/static/165382936201131875249123/ 作者写 ...

最新文章

  1. UntraEdit 语法高亮 (MSSQL)
  2. linux如何在shell中自动生成1到100的数组
  3. 修改节点大小_重磅前瞻!K8S 1.18即将发布:OIDC发现、Windows节点支持,还有哪些新特性值得期待?...
  4. 如何卸载mysql server 2005_如何卸载SQL Server 2005
  5. matlab特征值分解法求多自由度系统的固有频率和主振型
  6. fiddler汉化版可以改成英文吗_可以把推拉门改成平开窗吗?推拉门和平开窗哪个更好?...
  7. U盘启动盘恢复为普通盘
  8. 王立平--android中的anim(动画)
  9. 目标检测的模型集成方法及实验
  10. rocketmq同步消息,异步消息
  11. 你不能强迫别人进步,跟别人没法强迫你进步一样
  12. adb uninstall
  13. microsoft edge怎么截长图_实用技能 | Fireshot 网页截长图工具
  14. cc直播怎么显示服务器,CC直播像素杯四大服务器严阵以待 MC精彩赛事即刻开启...
  15. 史上最详细bitbucket入门手册,手把手操作指南
  16. js 中 spilt 方法
  17. 程序人生 | 阿里面试小记
  18. 星起航:现在做抖音小店晚不晚?
  19. 企业邮箱域名怎么填写,企业邮箱号怎么注册?
  20. 【Redis连接超时】io.lettuce.core.RedisConnectionException: Unable to connect to 192.168.x.x:7000

热门文章

  1. 什么是跨域?什么是CSRF?
  2. MyBatis-Oracle-selectKey返回主键
  3. 笔记--------手动分页
  4. mysql 概念和逻辑架构
  5. rocksdb学习笔记
  6. 函数作用域导致的问题
  7. 为数据中心度身定制智能基础设施管理系统
  8. 一个简单的拖动层(兼容IE,FF)
  9. Oracle SQL性能优化技巧大总结
  10. android SQLite数据库的使用