徐海蛟博士 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相关推荐

  1. 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(11)主要介绍: SVM支持向量机(理论) 支持向量机 (support vector machine, SVM) 号称是鲁棒性(rob ...

  2. 【白话机器学习】算法理论+实战之支持向量机(SVM)

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法A ...

  3. 白话机器学习算法理论+实战之支持向量机(SVM)

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,比如我之前写过的一篇十大机器学习算法的小总结,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑 ...

  4. ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员

    ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员 目录 实验数据 设计思路​ 实现代码(部分代码) 实验数据 设计思路 实现代码(部分代码) /**js代码实 ...

  5. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础

    <实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...

  6. 20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20155303 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一(新建文件夹): ...

  7. SVM学习(一):SVM概念

    SVM算法学习之旅,首先介绍一下SVM概念. 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出 ...

  8. 计算机组成原理艾列富,理论结合实验的计算机组成原理课程教学措施初探.pdf...

    理论结合实验的计算机组成原理课程教学措施初探.pdf 信息技术 1 概述 计算机组成原理课程是普通高等院校计算机科学与技术相关 专业本科生的必修核心专业基础课程之一 目的和任务是使学生通 过对这门课程 ...

  9. java开发环境实验总结_20155212 实验一《Java开发环境的熟悉》实验报告

    20155212 实验一<Java开发环境的熟悉>实验报告 命令行下Java程序开发 命令创建实验目录 输入mkdir 2051212创建以自己学号命名的文件夹,通过cd 20155212 ...

最新文章

  1. 工作心得之-------关于“表现”
  2. Java Agent
  3. document.elementFromPoint
  4. SecureCRT向多个tab窗口发命令
  5. datetime类型怎么输入_精心整理MySQL基本使用(数据库的操作、数据类型、MySQL的常用命令)...
  6. 申请加入了sharepoint团队
  7. OpenCV4每日一练day11:单目位姿估计
  8. 使用nssm注册系统服务的详细方法
  9. python的spider如何让鼠标不_【专题教学】python wooyun爬虫模拟鼠标等
  10. html5改变窗口大小,js怎么改变窗口大小?js改变窗口大小方法
  11. Youtube 视频自动播放
  12. 【HTML5入门指北】第二篇 网页相关的标签
  13. jQuery实现打字小游戏
  14. Redis技术架构演进
  15. windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决
  16. 渲染是不是很费电脑,云渲染对电脑的要求高吗?
  17. fir300c固件_斐讯路由器漏洞集合(内置账号及隐藏接口)
  18. 智能优化算法:闪电搜索算法-附代码
  19. rancher 启动命令_Rancher 中文文档 —— 快速入门指南
  20. 用pygame写了个俄罗斯方块

热门文章

  1. QT textedit 滚动条自动往下滚动
  2. oracle XE解决端口占用等问题
  3. Android 打包混肴
  4. Windows Server 2012 HyperV之SMB共享实时迁移
  5. 从春晚说起:总有一种无耻让我们泪流满面
  6. ASP.NET 2.0 的 Event Validation
  7. Mysql性能优化二
  8. Visual Studio 2012/2010/2008 远程调试
  9. [Zend PHP5 Cerification] Lectures -- 4. XML Web Service
  10. 关于vscode的插件配置