支持向量机libsvm实战入门
一、libsvm介绍
SVM支持向量机是目前比较流行的一种数据挖掘方法,能够处理较高维度,具体介绍可参考这篇博文:
支持向量机通俗导论(理解SVM的三层境界)
LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。
软件下载地址http://www.csie.ntu.edu.tw/~cjlin/libsvm/#java,最新版3.2.0
这里我们使用JAVA版本的,主要就是svm_scale,svm_train,svm_predict这三个程序,只要安装了JDK就可以使用如下命令运行
java -classpath libsvm.jar svm_scale +参数
java -classpath libsvm.jar svm_train +参数
java -classpath libsvm.jar svm_predict +参数
二、数据准备
LibSVM使用的数据格式为<label> <index1>:<value1> <index2>:<value2> …,label表示分类,index表示第几个变量/特征,软件官网已提供了大量符合数据格式要求的数据集供我们下载:
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
下载其中名为usps的数据集,如图所示,该数据集分成了10类,训练样本7291,测试样本2007,属性(变量)256个
三、数据缩放(归一化)
svm-scale帮助提示
归一化后的数据默认显示在控制台上所以我们要重定向到文件里保存
java -classpath libsvm.jar svm_scale -s 1.txt usps > scale
表示将usps训练集进行缩放(默认的规则),将缩放后的数据结果重定向输出到scale,并将这个缩放规则存储在1.txt中以便后面继续使用。
四、 训练并生成模型
svm-train帮助提示
java -classpath libsvm.jar svm_train scale model
将归一化后的数据文件scale训练成模型保存在model文件中,训练过程如下
生成的模型文件如下所示:
五、利用模型进行预测
svm_predict帮助提示
java -classpath libsvm.jar svm_predict usps.t model output
利用第三步生成的模型对测试数据usps.t进行预测,预测结果保存在output文件中。
生成的预测结果文件output中直接是测试集中每个样本的分类。
注:
svm_toy小程序
java -classpath libsvm.jar svm_toy
弹出一个图形窗口自己可以在上面绘制不同颜色的点进行测试
注:
One Class SVM 是指你的training data 只有一类positive (或者negative)的data, 而没有另外的一类。在这时,你需要learn的实际上你training data 的boundary。而这时不能使用 maximum margin 了,因为你没有两类的data。 所以呢,在这边文章中,“Estimating the support of a high-dimensional distribution”, Schlkopf 假设最好的boundary要远离feature space 中的原点。
左边是在original space中的boundary,可以看到有很多的boundary 都符合要求,但是比较靠谱的是找一个比较 紧(closeness) 的boundary (红色的)。这个目标转换到feature space 就是找一个离原点比较远的boundary,同样是红色的直线。当然这些约束条件都是人为加上去的,你可以按照你自己的需要采取相应的约束条件,比如让你data的中心离原点最远。
参考文章:
http://www.tanglei.name/an-example-for-beginning-to-learn-libsvm/
别人翻译的README里面命令参数详解
http://blog.sina.com.cn/s/blog_4c38701d01011ept.html
libsvm 参数说明【中英文双语版本】
http://www.matlabsky.com/forum-viewthread-tid-12380-fromuid-18677.html
本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1655672
支持向量机libsvm实战入门相关推荐
- 《自然语言处理实战入门》 ---- 总目录
文章大纲 前言 综论 第 一 部分 :NLP 前置知识 开发环境 基础技术 网络爬虫 机器学习必知必会开源库 深度学习基础 常用资源 第 二 部分:NLP 基础理论 序列标注与分词算法 词嵌入(分布式 ...
- Kaggle实战入门:泰坦尼克号生还预测(进阶版)
Kaggle实战入门:泰坦尼克号生还预测 1. 加载数据 2. 特征工程 3. 模型训练 4. 模型部署 Kaggle实战入门:泰坦尼克号生还预测(基础版)对机器学习的全流程进行了总体介绍.本文继续以 ...
- R构建径向核支持向量机分类器实战代码(Radial kernel Support Vector Classifier)
R构建径向核支持向量机分类器实战代码(Radial kernel Support Vector Classifier) 目录 R构建径向核支持向量机分类器实战代码(Radial kernel Supp ...
- 数据中台实战入门篇:数据中台对内、对外合作机制
前言 之前文章讲了 <数据中台实战入门篇:双中台战略>,主要解决了什么是中台.什么是数据中台.业务中台.什么公司适合搭建双中台体系这几个问题.本篇文章讲一下数据中台的人员构成.内部如何合作 ...
- python爬虫多url_Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘
之前文章中所介绍的爬虫都是对单个URL进行解析和爬取,url数量少不费时,但是如果我们需要爬取的网页url有成千上万或者更多,那怎么办? 使用for循环对所有的url进行遍历访问? 嗯,想法很好,但是 ...
- [菜鸟SpringCloud实战入门]第七章:配置中心客户端主动刷新机制 + 配置中心服务化和高可用改造...
前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...
- 跟我一起学.NetCore之EF Core 实战入门,一看就会
前言 还记得当初学习数据库操作时,用ADO.NET一步一步地进行数据操作及查询,对于查询到的数据还得对其进行解析,然后封装返回给应用层:遇到这种重复而繁琐的工作,总有一些大神或团队对其进行封装,从而出 ...
- 《ASP.NET Core项目开发实战入门》送书活动结果公布
截至2020.09.20 本次送书活动<ASP.NET Core项目开发实战入门>.下面把Top 5的留言截图给大家回顾一下. 以下5位同学将获赠书籍一本: 小林子 鉴 静 红脸先生 阿星 ...
- 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
<ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...
最新文章
- [视频]用SQL Server Compact创建简单的Windows应用程序
- 蓝图Blueprint
- java网络编程之Socket编程
- 计算机浮点数运算误差与解决误差的算法
- 60度斜坡怎么计算_【测绘】南方CASS土方计算方法—方格网法
- 微信小程序入门三:轮播图
- python类的成员没有访问控制限制_Python 访问限制 private public的详细介绍
- windows进程中的内存结构(转)
- 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-1-论文学习
- python递归函数代码_python – 进行深度优先搜索的递归函数
- oracle宿舍管理系统实训报告,学生宿舍管理系统_开题报告
- 国庆不出京!沉浸式high玩清凉谷
- 服务器无线组网,物联网无线组网介绍
- 虚拟运营商出牌:流量不清零难成杀手锏
- shell和javaAPI两种方式创建hbase表并预分区
- 熵速率定义与各类熵的关系
- JS实现城市选择(详细讲解,步骤清晰)
- Selenium修改HTTP请求头三种方式
- PHP设计模式之简单工厂模式*解读
- 数据引擎-列存储数据库