svm理论与实验之11:svm开发工具包LibSVM
徐海蛟博士 Teaching.
光说不练,很难真正理解svm的妙处,也难以真正实用。所以,有必要跟着徐海蛟老师一起练习svm。svm理论和工具已经很成熟了。童鞋们并不需要手写每一行代码。一个非常好用的开发工具包是LibSVM,支持C++、Java、Matlab语言。libSVM只是众多SVM实现版本中的其中之一。
LibSVM是台湾大学林智仁(Chih-Jen Lin) 教授2001年开发的一套svm支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。
这套库可以从官网免费获得,目前已经发展到3.17版(2013年4月)。Libsvm ReadMe中文说明文件在。下载.zip格式的版本,解压后可以看到,主要有6个文件夹和一些c++源码文件。
Java —— 主要是应用于java平台;
Matlab —— 主要是应用于matlab平台;
Python —— 是用来参数优选的工具,稍后介绍;
svm-toy —— 一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;
tools —— 主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(easy), 数据检查(checkdata);
windows —— 包含libSVM四个exe程序(svm-scale,svm-toy,svm-train,svm-predict)。
svm-scale:一个用于对输入数据进行归一化的简易工具;
svm-toy:一个带有图形界面的交互式SVM二分类功能演示小工具;
svm-train:对用户输入的数据进行SVM训练。其中,训练数据是按照以下格式输入的:
<类别号> <索引1>:<特征值1> <索引2>:<特征值2>...
svm-predict:根据SVM训练得到的模型,对输入数据进行预测,即分类。
在目录libsvm-3.17\下,还有heart_scale,是一个样本文件,包含270个正反例样本点,可以用记事本打开,用来测试用的。
其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.c在svm-toy\windows\文件夹中)都是调用的这个文件中的接口函数,编译后就是windows\下相应的四个exe程序。
另外,里面的 README 跟 FAQ 也是很好的文件,对于初学者如果E文过得去,可以看一下。PS:《libsvm最新ReadMe中文档New2013》在csdn里面有下载。
下面以svm-train为例,简单的介绍下,怎么编译:(这步很简单,也没必要,对于仅仅使用libsvm库的人来说,windows下的4个exe包已经足够了,之所以加这步,是为了那些做深入研究的人,可以按照自己的思路改变一下svm.cpp,然后编译验证)
VC 6.0为例,新建一个控制台(win32 console application)程序,程序名叫svm-train(这个可以随意),点击OK后,选择empty。
进入程序框架后,里面什么都没有,然后找到你的程序目录,把svm-train.c、svm.h和svm.cpp拷贝过去(.c文件是c语言的,要是你习惯了c++,你尽可以改成.cpp),然后把这3个文件添加到工程,编译。。。如果没错误,到debug下面看看,是不是有个svm-train.exe。其实windows下的svm-train.exe就是这样编译出来的。
怎么样是不是很简单。但是,这样的程序直接运行没意义,他要在dos下运行,接收参数才行。下面开始我们的libsvm的体验之旅。
类似地,如果是使用Java版本的Libsvm,在myeclipse里面很快搞定。
windows\的子文件夹,里面有一个名为svm-toy.exe的可执行文件,这个小玩意儿是比较直观地感受下svm的分类效果,它是一个带有图形界面的交互式SVM二分类功能演示小工具。直接双击,运行该可执行文件。
点击第二个按钮“Run”,然后,在左上部分,用鼠标左键随机点几下,代表你选择的第一类模式的数据分布。
之后,点击“Change”,接着,用鼠标左键在窗口右下方随便点击几下,代表你选择的第二类模式的数据分布,如下图所示:
接着,点击“Run”,libSVM就帮你把这两类模式分开了,并用两种不同的颜色区域来代表两类不同的模式,如下图所示:
图中左上方色的区域,是第一类模式所在的区域,右下方的区域,是你选择的第二类模式所在的的区域,而两者的分界面,也就是SVM的最优分类面。当然,SVM是通过核函数将原始数据映射到高维空间,在高维空间进行线性分类。换句话说,在高维空间,这两类数据应该是线性可分的,即:最优分类面应该是一条直线,而这里看到的,是将高维空间分类的结果又映射回原始空间所呈现的分类结果,即:非线性的分类面。
细心的朋友可能已经发现,在上述界面的右下角,有一个编辑框,里面写着“-t 2 -c 100”,显然,这是libSVM的一些参数: 径向基核函数,惩罚因子100,你也可以试着更改这些参数,来选择不同的核函数、不同的SVM类型等来达到最好的分类效果。
转载于:https://blog.51cto.com/xuhaijiao/1307688
svm理论与实验之11:svm开发工具包LibSVM相关推荐
- 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.
本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(11)主要介绍: SVM支持向量机(理论) 支持向量机 (support vector machine, SVM) 号称是鲁棒性(rob ...
- 【白话机器学习】算法理论+实战之支持向量机(SVM)
1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法A ...
- 白话机器学习算法理论+实战之支持向量机(SVM)
1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,比如我之前写过的一篇十大机器学习算法的小总结,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑 ...
- ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员
ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员 目录 实验数据 设计思路 实现代码(部分代码) 实验数据 设计思路 实现代码(部分代码) /**js代码实 ...
- java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础
<实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...
- 20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155303 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一(新建文件夹): ...
- SVM学习(一):SVM概念
SVM算法学习之旅,首先介绍一下SVM概念. 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出 ...
- 计算机组成原理艾列富,理论结合实验的计算机组成原理课程教学措施初探.pdf...
理论结合实验的计算机组成原理课程教学措施初探.pdf 信息技术 1 概述 计算机组成原理课程是普通高等院校计算机科学与技术相关 专业本科生的必修核心专业基础课程之一 目的和任务是使学生通 过对这门课程 ...
- java开发环境实验总结_20155212 实验一《Java开发环境的熟悉》实验报告
20155212 实验一<Java开发环境的熟悉>实验报告 命令行下Java程序开发 命令创建实验目录 输入mkdir 2051212创建以自己学号命名的文件夹,通过cd 20155212 ...
最新文章
- 工作心得之-------关于“表现”
- Java Agent
- document.elementFromPoint
- SecureCRT向多个tab窗口发命令
- datetime类型怎么输入_精心整理MySQL基本使用(数据库的操作、数据类型、MySQL的常用命令)...
- 申请加入了sharepoint团队
- OpenCV4每日一练day11:单目位姿估计
- 使用nssm注册系统服务的详细方法
- python的spider如何让鼠标不_【专题教学】python wooyun爬虫模拟鼠标等
- html5改变窗口大小,js怎么改变窗口大小?js改变窗口大小方法
- Youtube 视频自动播放
- 【HTML5入门指北】第二篇 网页相关的标签
- jQuery实现打字小游戏
- Redis技术架构演进
- windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决
- 渲染是不是很费电脑,云渲染对电脑的要求高吗?
- fir300c固件_斐讯路由器漏洞集合(内置账号及隐藏接口)
- 智能优化算法:闪电搜索算法-附代码
- rancher 启动命令_Rancher 中文文档 —— 快速入门指南
- 用pygame写了个俄罗斯方块