1. 简单介绍一下机器学习中的libsvm
  2. libsvm工具箱在matlab下的安装
  3. libsvm工具箱在matlab下的应用
  4. libsvm的实际应用
  5. 小结

一、机器学习中的libsvm介绍

支持向量机(SUPPORT VECTOR MACHINE),是非常强大且流行的算法,在一些情况下,能面向一些复杂的非线性问题提供比逻辑回归或神经网络要更加简洁的解决方案。 
下面具体讲一下SVM 
 
 

LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。

下面一个网站里面是大牛写的关于libsvm的一些东西,可以看看 关于libsvm的那点破事

二、libsvm在matlab下的安装

1、首先下载libsvm工具箱

下载网址:LIBSVM a library for support vector machines 
上述网址是林智仁官网,可以从github中下载最新版本的libsvm

2、接着是将下载的工具箱安装

  1. 将libsvm-mat所在工具箱添加到matlab工作搜索目录 
    (File ——》 
    Set Path… ——》 
    Add with Subfolders…);
  2. 选择编译器(mex -setup);
  3. 编译文件(make)。

详细的步骤讲解请看 LIBSVM 在matlab下的安装 
这里我只说我遇到的问题,在选择编译器的时候不管是 y还是n 都找不到自己所安装的编译器,有可能是安装顺序的问题,我所解决的方法是,讲编译器和matlab卸载,然后重新安装,重安装的时候注意先安装编译器,再安装matlab

在编译文件make的时候出现找不到文件,需要进入到libsvm-master>matlab 中再make就可以了

三、 libsvm工具箱在matlab下的应用

详细的使用说明请看网址 如何使用LIBSVM进行分类

<code class="hljs delphi has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//%获取traindata、trainlabel,testdata、testlabel</span>
traindata =[ train( : , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> ), train( : , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> ), train( : , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span> ), train( : , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span> )];
trainlabel = train( : , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span> );testdata = [ test( :  , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> ), test( :  , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> ), test( :  , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span> ), test( :  , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span> ) ];
testlabel = test(  : , <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span> );<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//%用traindata和trainlabel来训练出一个模型,引号里面参数的详细解释看上述网址的详解</span>
model = svmtrain(trainlabel ,traindata,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'-s 0 -t 2 -c 4 -g 1.2 -b 1'</span>);
save model model<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//%用testdata、testlabel和训练出的模型进行做预测</span>
[plabel, accuracy, dec_values] = svmpredict(testlabel,testdata,model,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'-b 1'</span>);
save <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">label</span>.txt  plabel -ascii<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//%evaluate training results evaluate是自己写的一个评估函数</span>
[TP,FN,FP,TN,POD,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">FAR</span>,CSI,AUC,P,R,F] = Evaluate(plabel,testlabel);
save result P R F AUC CSI POD <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">FAR</span> TP FN FP TN  dec_values
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>

四、 libsvm的实际应用

1、获取原始数据

获取所需要的特征值和标签

2、将数据进行预处理

差分、归一化 
(1)差分 
由于气象中的特征,差分后的特征值会包含一些有用的信息,所以需要差分。新的特征值=原始特征值+差分(差分用的是向前差分d(t)=data(t)-data(t-1)) 
(2)归一化 
现在的归一化方法有两种max_min归一化和mu_sigma归一化。公式如下: 
new—data=(data-min)/(max-min) 
new—data=(data-mu)/sigma

经对比结果发现第一种归一化方法更适用于我们的应用。

3、训练、预测

这里的训练、预测如‘三、libsvm工具箱在matlab下的应用’中的代码

4、评估

对评估结果分析发现POD、CSI、FAR达不到要求,分析可能是由于正例置信度为0.5,即:当某一个样例的概率大于50%,预测此样例为正样例。如果想要提高各项预测值,需要获得每个样本的预测概率以此来修改置信度。 
具体解决方法如下 

如上图椭圆框出来的,在训练 svmtrain和预测 svmpredict的时候都加上参数‘-b 1’会得到 dec_values。 在我们的实验中(二分,label 有1和-1)dec_values分为2列,第一列为样例预测为-1的概率,第二列为样例预测为1的概率。这样我们就可以根据dec_values来调整阈值(正例置信度),以达到提高精确度的效果。

五、小结

通过这一阶段的学习我发现,不能怕遇到问题,遇到问题后不能急仔细查找各种解决的方法。要仔细分析。。。心细。。。

机器学习:林智仁libsvm 工具箱 在matlab下的应用总结相关推荐

  1. matlab 林智仁,机器学习:林智仁libsvm 工具箱 在matlab下的应用总结

    简单介绍一下机器学习中的libsvm libsvm工具箱在matlab下的安装 libsvm工具箱在matlab下的应用 libsvm的实际应用 小结 一.机器学习中的libsvm介绍 支持向量机(S ...

  2. 科研实习 | 阿联酋MBZUAI林智仁教授招聘文本分类方向研究助理/实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! MBZUAI 穆罕默德·本·扎耶德人工智能大学(MBZUAI),是全球首所 ...

  3. spams工具箱在MATLAB下的安装编译

    简介: SPAMS (SPArse Modeling Software)是一个为解决各种稀疏估计问题的开源优化工具箱.其主要包含以下子工具箱: 1.Dictionary Learning and Ma ...

  4. MATLAB安装libsvm工具箱的方法

    亲测可行的方法,原文地址:https://www.cnblogs.com/Ran-Chen/p/9462825.html 支持向量机(support vector machine,SVM)是机器学习中 ...

  5. libsvm工具箱会和matlab,MATLAB实现多分类和libsvm工具箱的安装使用详解

    首先告诉大家MATLAB现在可以实现多类分类的问题!但是需要借助工具箱! 下面介绍的是台湾林智仁教授的libsvm工具箱在MATLAB中的安装和使用: 安装环境:Win7.Microsoft Visu ...

  6. matlab中的分类工具箱svm,MATLAB实现多分类和libsvm工具箱的安装使用详解

    首先告诉大家MATLAB现在可以实现多类分类的问题!但是需要借助工具箱! 下面介绍的是台湾林智仁教授的libsvm工具箱在MATLAB中的安装和使用: 安装环境:Win7.Microsoft Visu ...

  7. 支持向量机SVM详细原理,Libsvm工具箱详解,svm参数说明,svm应用实例,神经网络1000案例之15

    目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的股票价格预测 支持向量机SVM的详细原理 SVM的定义 ...

  8. LIBSVM在Matlab下的使用

    支持向量机(SVM,Support Vector Machine)是一种基于统计学习理论的模式识别方法,在解决小样本.高维度及非线性的分类问题中应用非常广泛. LIBSVM是一个由台湾大学林智仁(Li ...

  9. LIBSVM在Matlab下的使用和LIBSVM的matlab软件下README全文翻译

    1.简介 我们每次用matlab编写SVM模型做预测和分类时,就会需要用到这个工具包,当然现在新版本有matlab自带的工具APP,可以完成支持向量机(SVM),不需要写代码,因此就不需要安装工具包. ...

最新文章

  1. 开关电源过流保护-打嗝模式
  2. REAL6410、OK6410、TE6410 的区别
  3. Jmeter之线程组详解
  4. 【干货】马化腾亲身分享:腾讯兵法教你做一款高口碑的产品
  5. 批处理for命令详解(转) 批处理for命令详解
  6. pythonpil库过滤图像contour_一秒钟带你走进P图世界-----(python)PIL库的使用
  7. 【日常踩坑】Android机微信webview中页面跳转的问题
  8. Python计算器练习
  9. JAVA内存模型和GC原理
  10. ABAQUS盾构隧道开挖模型Cae文件,一环7片,含螺栓,配筋。 (此模型用的㎜单位制)
  11. 文本框、图片的一些使用方法
  12. 理解复数域上的向量空间
  13. 55--mvc:annotation-driven标签解析
  14. HTML+JS 前端雪花飘落
  15. 【Matlab学习手记】ELM分类
  16. 【CentOS 7 Web服务器配置】
  17. VM15安装macOS一些问题,unlocker解锁后无mac选项,mac系统磁盘分区问题
  18. PostgreSQL的几种常见问题和解决方法
  19. jQuery轮播图之上下轮播
  20. Linux下命令行cd进入名字乱码的文件夹

热门文章

  1. Docker源码分析(八):Docker Container网络(下)
  2. 中文转unicode,中文转bytes,unicode转bytes java实现
  3. spring-security-oauth2注解详解
  4. Quartz Java resuming a job excecutes it many times--转
  5. spring mvc DispatcherServlet详解之前传---前端控制器架构
  6. 机器学习-数据科学库(第六天)
  7. 2018年DApp分析 | 链塔区块链产业年鉴精选
  8. 58同城创始人姚劲波:未来十年是中国创业最好机会
  9. 去掉BootStrap的错误弹框信息
  10. 算法题——Cantor表