初步体验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.训练分类器: ...
随机推荐
- hdu1203--D - I NEED A OFFER!(转化01背包)
D - I NEED A OFFER! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- 沁园春·咏史
沁园春·咏史 文/天地尘埃2020 谁是谁非?宋桧连金,武穆饮生. 叹止渴饮鸩.灰飞烟灭:诵传千载:长跪无声. 懿旨朱批?直书秉笔?天地一根秤自衡. 何曾忘! 这英雄千古,犹恨空横! 幽幽何觅忠魂.耻 ...
- Android----获得当前应用包名、当前activity的名字、推断是否是系统桌面、service类
1.获得当前应用包名 public static String getRunningActivityName(Context context) { ActivityManager activityMa ...
- hdoj--1864--最大保险额(背包)
最大报销额 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 找新朋友(hdoj--1286--欧拉函数)
欢迎参加--每周六晚的BestCoder(有米!) 找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- 如何在在页面中清除一个已知的cookie?
前些天在写一个项目的时候,使用cookie来存储一些用户数据,在用户登出时需要清理以往的数据,对于一个初学者来说,我需要学习如何清除一个已知的cookie. 首先,引入两个js文件: 1.jquery ...
- WebStorm2018.2 破解 激活
1.进入http://idea.lanyus.com/,如图: 2.下载http://idea.lanyus.com/jar/JetbrainsCrack-3.1-release-enc.jar . ...
- 23个Python爬虫开源项目代码:爬取微信、淘宝、豆瓣、知乎、微博等
来源:全球人工智能 作者:SFLYQ 今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.Wec ...
- hdu1829 A Bug's Life 基础种类并查集
题目的大意可以理解为:A爱B,B爱C ……给出一系列爱恋的关系,推断有没有同性恋. 思路是把相同性别的归为一个集合(等价类),异性的异性为同性. #include<iostream> #i ...
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
简单说明: 为了方便数据在客户端及服务器端的传输,有时候我们会用一些比较方便组织的数据类型,比如json.xml等传给客户端,客户端也可以重新组织数据传回服务器端.JSON和XML提供了一套比较方便的 ...