初步体验libsvm用法1(官方自带工具)
在机器学习和模式识别领域,svm理论使用得很广泛,其理论基础是统计学习,但是如果我们的研究方向不是svm理论,我们只是利用已有的svm工具来对我们的任务进行分类和回归,那么libsvm是一个不错的选择。
那么libsvm到底怎么使用呢?研究了一下,发现使用起来不是很复杂,这一小结就说说到底怎么简单的体会libsvm吧。
一、 首先准备几个工具:
Libsvm下载 http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Gnuplot下载:http://www.gnuplot.info/
Python下载: http://www.python.org/getit/
这里我下的libsvm版本为3.1.2,gnuplot版本为4.6.0,python版本为2.7.3。
其中libsvm的作用就不用多介绍了,gunplot是图像绘画工具,可以将数据可视化,python是一种程序编程语言,很方便,所以libsvm和她走得比较近。
我将libsvm解压(即相当于安装)在C:\Program Files\libsvm-3.12下
Gnuplot安装在C:\Program Files\gnuplot下
Python安装在C:\Program Files\Python27下。
二、准备环境 :
我在桌面建立了一个svm_test文件夹,将常用的几个二进制文件拷贝到该目录下,后面要用的。这些二进制文件包括svm-predict.exe,svm-scale.exe,svm-toy.exe,svm-train.exe,python.exe以及配置文件easy.py和grid.py。这些文件就在刚安装的几个软件目录中去找,这里就不列举了。如下所示:
当然并不是每一次分类和回归这些都要用到这些文件,可以自己选择,此处只是做个通用的介绍。
用文本文件打开grid.py,改变一下配置环境,在else语句后面,你可以根据自己的环境改一下。如下:
同理,easy.py也改变一下,我的改后为:
三 、准备训练的数据:
为了熟悉libsvm环境,这里我用libsvm自带svm-toy.exe来产生数据,打开svm-toy.exe显示如下:
注意到状态行的几个按钮,你自己摸索下就知道是什么用了,无需介绍。下面我产生数据如下所示:
点击下面的run按钮,结果显示如下:
点击save将数据保存,我保存为before_train。
四、准备训练参数
因为svm训练需要手动调整参数,一般采用默认的情况即可,这里还是为了体验libsvm,可以用libsvm自带的grid.py来自动暴力搜索最好的参数c和g,c表示惩罚系数,g表示 gamma系数。所以我们在命令行终端输入:
这是会出现如下的界面:
等运行完毕后在命令行终端会显示128.0 0.5 91.4141
前面那2个参数就是c和g,第三个不用管,也就是说如果我们c用128,g用0.5来训练svm数据效果是最好的。
但是在此过程中如果出现assertionerror:svm-train executable not found的错误提示:
这原因是前面的grid.py没有更改与自己安装文件相对应的路径。其实我改的那些路径也未必是安装路径,因为我已经把需要用的几个exe文件复制出来了,这样很方便,换别人的电脑这些配置不用改变太多。
五、训练数据:
在命令行输入svm-train .exe –c 128 –g 0.5 before_train after_train.model
运行结果如下:
并且在相应的svm_test中输出了一个文件after_train.model。
六、预测数据。
其实我们开始就预测了下数据,只是我们用的是默认的模型,参数是-t 2 -c 100,为了对比两者的效果,我们先采用默认参数来训练:
在命令行输入:svm-train.exe before_train default_predict.model
然后用默认参数训练出的模型进行预测:
在命令行输入:svm-predict.exe before_train default_predict.model after_train_default
其结果显示如下:
由此可见其准确率只有85.8586%.
下面我们采用用grid.py训练出的最佳参数来预测下模型,其过程和结果如下所示:
由此可见准确率提高到了91.6667%(但要注意这不一定很好,why?因为这是训练数据,有可能过拟合。)
用精确模型预测后的数据可视化显示如下:
肉眼感觉不出太大的区别,不过数据摆在那里,说明grid.py还是很牛叉的!
好吧,libsvm使用的简单体验过程就先到这里。
初步体验libsvm用法1(官方自带工具)的更多相关文章
- MongoDB3.6之Replica Set初步体验
Replica Set在国内叫做副本集,简单来说就是一份数据在多个地方存储. 1.为什么要用副本集,什么时候使用副本集? 有人说一份数据在多个地方存储占用了大量的额外空间,是一种浪 ...
- mysql connector c++ 1.1 API初步体验
mysql connector c++ 1.1 API初步体验 1,常用的头文件 #include <mysql_connection.h> #include <mysql_driv ...
- 如何利用 Visual Studio 自带工具提高开发效率
Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢? 显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位. 如何显示 1. 工具 ...
- JDK自带工具keytool生成ssl证书
前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...
- Expo大作战(二十七)--expo sdk api之Util(expo自带工具类),tackSnapshotAsync,Svg,SQLite
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- (转)用mysql自带工具mysqlslap对数据库进行压力测试
http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试 mysqlslap是mysql自带的工 ...
- Tiff – 值得你体验一下的可视化的字体对比工具
Tiff 是一款字体对比工具,可视化对比两种字体之间的差异.这是一个工具来帮助比较两种字体,同时学习排版.在这一点上,谷歌 Web 字体作为 Tiff 外部字体文件的唯一来源.由于应用程序使用的一些功 ...
- 教你用Windows自带工具给优盘/移动硬盘添加密码
教你用Windows自带工具给优盘/移动硬盘添加密码 本文中优盘,移动硬盘和分区操作方式一样,为方便描述,下文将只说优盘 优盘成了很多人每天都会用到的工具,有时候自己优盘会存着一些不希望别人看到的文件 ...
- 【计算机视觉】如何使用opencv自带工具训练人脸检测分类器
前言 使用opencv自带的分类器效果并不是很好,由此想要训练自己的分类器,正好opencv有自带的工具进行训练.本文就对此进行展开. 步骤 1.查找工具文件: 2.准备样本数据: 3.训练分类器: ...
随机推荐
- Marching squares & Marching cubes
提要 Marching squares 主要是用于从一个地图(用二维数组表示)生成轮廓的算法.Marching cubes则相应的是在空间生成网格的方法.最常见的应用就是天气预报中气压图的生成.还经常 ...
- 最简单的基于FFmpeg的移动端样例:IOS 推流器
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- android小技巧:在activity中实现与绑定的fragment的回调
看到标题你可能会想是一个多么高大上的技巧呢?事实上非常一般就是自己定义回调函数. 首先我们知道activity之间的数据传递有几种方式: 一是startActivityForResut()启动一个ac ...
- ViewPage+Frament+listView滑动效果
近期在做一个须要使用Frament+ViewPage制作一个滑动的效果,看了非常多资料,最终实现了,这与大家分享一下战果 总结一下.这里我做了一个Demo分享给大家 我的文件文件夹结构图 1.首先要有 ...
- 【转】HDFS读写流程
概述开始之前先看看其基本属性,HDFS(Hadoop Distributed File System)是GFS的开源实现. 特点如下: 能够运行在廉价机器上,硬件出错常态,需要具备高容错性流式数据访问 ...
- (hdu step 7.1.7)Wall(求凸包的周长——求将全部点围起来的最小凸多边形的周长)
题目: Wall Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 一个简单的演示用的Linux字符设备驱动程序
实现如下的功能:--字符设备驱动程序的结构及驱动程序需要实现的系统调用--可以使用cat命令或者自编的readtest命令读出"设备"里的内容--以8139网卡为例,演示了I/O端 ...
- JavaScript:对象
ylbtech-JavaScript:对象 1. JavaScript Array 对象返回顶部 1. JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值 ...
- tinyxml使用
1.下载地址 http://sourceforge.net/projects/tinyxml/ 2.tinyxml不仅支持Linux编译,同时也支持windows下编译,由于tinyxml仅有6个文件 ...
- B - Letter(最小覆盖矩形)
Problem description A boy Bob likes to draw. Not long ago he bought a rectangular graph (checked) sh ...