如何使用libsvm进行分类

如何使用libsvm进行分类

ID:11474195

大小:21.08 KB

页数:7页

时间:2018-07-12

如何使用libsvm进行分类_第1页
如何使用libsvm进行分类_第2页
如何使用libsvm进行分类_第3页
如何使用libsvm进行分类_第4页
如何使用libsvm进行分类_第5页
资源描述:

《如何使用libsvm进行分类》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这帖子就是初步教教刚接触libsvm(svm)的同学如何利用libsvm进行分类预测,关于参数寻优的问题在这里姑且不谈,另有帖子详述。其实使用libsvm进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测了。那神马是属性矩阵?神马又是标签呢?我举一个直白的不能在直白的例子:说一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中男生1身高:176cm体重:70kg;男生2身高:180cm体重:80kg;女生1身高:161cm体

2、重:45kg;女生2身高:163cm体重:47kg;如果我们将男生定义为1,女生定义为-1,并将上面的数据放入矩阵data中,即1.data=[17670;2.18080;3.16145;4.16347];复制代码在label中存入男女生类别标签(1、-1),即1.label=[1;1;-1;-1];复制代码这样上面的data矩阵就是一个属性矩阵,行数4代表有4个样本,列数2表示属性有两个,label就是标签(1、-1表示有两个类别:男生、女生)。Remark:这里有一点废话一些(因为我看到不止一个朋友问我这个相

3、关的问题):上面我们将男生定义为1,女生定义为-1,那定义成别的有影响吗?这个肯定没有影响啊!(用脚趾头都能想出来,我不知道为什么也会有人问),这里面的标签定义就是区分开男生和女生,怎么定义都可以的,只要定义成数值型的就可以。比如我可将将男生定义为2,女生定义为5;后面的label相应为label=[2;2;5;5];比如我可将将男生定义为18,女生定义为22;后面的label相应为label=[18;18;22;22];为什么我说这个用脚趾头都能想怎么定义都可以呢?学过数学的应该都会明白,将男生定义为1,女生定

4、义为-1和将男生定义为2,女生定义为5本质是一样的,应为可以找到一个映射将(2,5)转换成(1,-1),so所以本质都是一样的,后面的18、22本质也是一样的。这里要多说一些,如果你原本的数据集合的标签不是数值型的(比如a、b、c)那么你完全可以通过某种转换映射将不是数值型的标签转换成数值型的。现在回归正题,有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:1.model=svmtrain(label,data);复制代码有了model我们就可以做分类预测,比如此时该

5、班级又转来一个新学生,其身高190cm,体重85kg我们想通过上面这些信息就给出其标签(想知道其是男【1】还是女【-1】)比如令testdata=[19085];由于其标签我们不知道,我们假设其标签为-1(也可以假设为1) Remark:这里又有一点废话一些(因为我看到不止一个朋友问我这个相关的问题):如果测试集合的标签没有怎么办?测试集合的标签就应该没有,否则测试集合的标签都有了,还预测你妹啊!?没有是正确的,就像上面一样,新来的学生其标签咱不应知道,就想通过其属性矩阵来预测其标签,这才是预测分类的真正目的。之

6、所以平时做测试时,测试集合的标签一般都有,那是因为一般人们想要看看自己的分类器的效果如何,效果的评价指标之一就是分类预测的准确率,这就需要有测试集的本来的真实的标签来进行分类预测准确率的计算。话归正传,即testdatalabel=-1;然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:1.[predictlabel,accuracy]=svmpredict(testdatalabel,testdata,model)复制代码下面我们整体运行一下上面这段恶搞[egao]的背景数据和代码(你别笑,这个

7、是真能运行的,也有结果的):1.data=[17670;2.18080;3.16145;4.16347];1.label=[1;1;-1;-1];2.3.model=svmtrain(label,data);4.5.testdata=[19085];6.testdatalabel=-1;7.8.[predictlabel,accuracy]=svmpredict(testdatalabel,testdata,model);9.predictlabel复制代码运行结果如下:1.Accuracy=0%(0/1)(cl

8、assification)2.predictlabel=3.    1复制代码哎,我们看到,通过预测我们得知这个新来的学生的标签是1(男生),由于原本我们假设其标签为-1,假设错误,所以分类准确率为0%。好,通过上面的讲解,不知道诸位看官对于利用libsvm进行分类是否有了一定了解【谁要是这么通俗的例子还搞不清楚怎么使用libsvm进行分类,那我真无语啦】,下面使用lib

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。