如何学习libsvm安装faruto

   可以了,终于可以完结了!这帖子我编辑过n次,不断的往里面添加东西,我想今晚可能是我最后一次编辑这个帖子.在这个帖子里面您可以找到如下和SVM相关的东西.
    (1)本帖子中的所有资源所使用的SVM的工具箱是libsvm-mat,没有使用其他的SVM工具箱,我坚信把这一个SVM的工具箱研究的透彻就够了,反正我是够用了!
 (2)关于libsvm-mat的安装的问题,你可以看下面的Q&A,也可以下载相应的我制作的SVM的视频 (3)关于libsvm-mat工具箱本身的使用问题,几乎所有的疑问你都可以找到答案~

SVM工具箱快速入手简易教程(by faruto)最近发现好多朋友有关SVM的工具箱的使用方法相关的东西,其实帮助文件里都有的[无论是matlab自带的还是libsvm都是有帮助文件的而且写的也明确,但还是有朋友问问],无奈我就写一个小简易的上手的教程,事先声明只给菜鸟写的,高手就不要看了,其实帮助文件里都有,你也可以看帮助文件,不用看我的.O(∩_∩)O..一.

%载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],得到的数据如下图:

%在这里只取meas的第一列和第二列,即只选取前两个属性.

%对于未知的测试集进行分类预测,结果如图:

%分类器效果测评,就是看测试集分类的准确率的高低.

建议大家使用libsvm工具箱,这个更好用一些.可以进行分类[多类别],预测.... =========

%训练样本,具体参数的调整请看帮助文件

%分类预测,这里把训练集当作测试集,验证效果如下:

这回把SVM这点入门的东西都说完了,大家可以参照着上手了,有关SVM的原理我下面有个简易的PPT,是以前做项目时我做的[当时我负责有关SVM这一块代码实现讲解什么的],感兴趣的你可以看看,都是上手较快的东西,想要深入学习SVM,你的学习统计学习理论什么的....挺多的呢..  (391 KB,

}

按照网上的说法,运行libsvm中的make.m可以完成安装,但是博主运行之后出现了找不到编译器的错误,网上找资料说:不支持VS2013 ,需要自己配置,这里博主给你一个地址,上面是配置好的,你只需按照步骤将文件复制粘贴到指定的文件夹即可。

然后可以选择编译器了,但是又会出现问题:

libsvm在matlab下的编译,在32bit和64bit的编译方式不一样,直接运行make.m,会在64bit系统出现问题,应该将代码更改为:

最后可以成功生成以下文件:

}
利用参数寻优函数进行参数寻优,这里的参数是SVMtrain训练模型的参数,参数找的好,模型训练的就好,可以提高后面预测分类的准确率。不同的SVM类型需要寻优的参数不同。然后利用最优参数去训练模型model,得到模型后就可以利用svmpredict函数进行使用预测了。
下面我将学习farutu的笔记整理一下,希望能够帮助到后面学习svm的同学快速入门,因为我也是刚刚看完了farutu作者的视频教程,趁热打铁,记录一下学习的关键部分,为后面做项目进行一个参考,忘了可以来看看自己的博客

输出的str是与score相对应的打印语句。整合函数SVC:上面所说的这些函数都可以被一个整合函数SVC包含(除了VF),SVC是一个分类问题中各种函数插件的一个整合函数,类似的回归问题的整合函数是SVR。下面是SVC的用法。[predict_label,accuracy] 3[pso] 表示采用何种寻参方法输出:predict_label,预测得到的标签,accuracy,整体的分类准确率及各个类别的分类准确率,当然你如果想看训练得到的模型的话,也可以在返回参数中加一个model。大家可以验证一下,得到的结果与上面 svmtrain(train_label,train_data,cmd);tip1:在cmd中使用-t等参数的时候,一定要注意’-t‘等字母的前后空格,因为如果后面不留空格,会将前后的两个参数连在一起,以为是一个数,就会影响后面的结果。我在验证SVC与自己的组合函数得到的结果时总是得不到一样的结果,后来知道就是因为这个原因。tip2:在专门强调一下,用在寻优中的SVMtrain和我们训练时用的SVMtrain是不一样的,’-s‘的位置换成了’-v‘,而且没有核函数的选择,是一个固化好了的训练函数,只是用来训练一个模型然后去进行测试,看结果是怎样的,来评价一下,c,g参数的效果好坏,因为评价c和g好坏的指标就是分类准确率。GUI版本SVM_GUI工具箱是在Libsvm-Faruto Ultimate的基础上改进出来的一个图像可视化使用界面,使用前需要安装工具箱,它整合了SVC和SVR也就是分类和回归的两个整合函数,使用起来很方便,只需要手动去进行一些参数设置就可以了,基本上就是一个SVC参数的选择过程,这里就不详细说明了,使用起来很简单。如何提高分类器的性能:下面这些是我自己的总结,提高分类器的性能首先要提取比较好的特征,这是前提条件。1、试一下,是不是归一化的结果更好2、尝试一下不同类型的SVM类型3、选择适当的核函数,一般情况下径向基RBF核函数效果不会太差4、参数寻优,找到合适的c和g5、如果更加重视某一类的精确度,可以调整惩罚因子的大小,就是在c的基础上乘以一个权重,增大惩罚力度,尤其是对样本数据偏斜问题。先来说说样本的偏斜问题,也叫数据集偏斜(unbalanced),它指的是参与分类的两个类别(也可以指多个类别)样本数量差异很大。比如说正类有10000个样本,而负类只给了100个,这会引起的问题显而易见由于偏斜的现象存在,使得数量多的正类可以把分类面向负类的方向,因而影响了结果的准确性。对付数据集偏斜问题的方法之一就是在惩罚因子上作文章,就是给样本数量少的负类更大的惩罚因子,表示我们重视这部分样本。

上面所说的每一步都有很多细节值得改进推敲,有很多的算法去进行试验,去得到更好的分类准确率。总结:进行分类预测的整个过程就是:1、数据准备:将数据特征按照每行代表一个样本的数据,其列数就是每个样本的特征数,排好矩阵,每个样本对应的标签标好,一定要注意,样本与其标签相对应。2、预处理:是否进行归一化,是否进行降维。3、参数寻优:采用哪种寻优方式进行c和g的寻优。4:训练SVMtrain:利用求得的最优参数进行模型训练。5、预测SVMpredict:利用训练得到的model进行预测。6、根据预测的结果,进行相应的参数的调整。以上就是我在学习Libsvm-Faruto Ultimate工具箱的所有收获,分享给大家,当然可能会有一些不足之处,希望大家批评指正,写了好长时间呀。后面在我的博客中有相应的各个函数的测试样例函数。

}

我要回帖

更多关于 libsvm 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信