这帖子就是初步教教刚接触 libsvm(svm)的同学如何利用 libsvm 进行分类预测,关于
参数寻优的问题在这里姑且不谈,另有帖子详述。
其实使用 libsvm 进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型
(model),然后利用得到的这个 model 进行分类预测了。
那神马是属性矩阵?神马又是标签呢?我举一个直白的不能在直白的例子:
说一个班级里面有两个男生(男生 1、男生 2),两个女生(女生 1、女生 2),其中
男生 1 身高:176cm 体重:70kg;
男生 2 身高:180cm 体重:80kg;
女生 1 身高:161cm 体重:45kg;
女生 2 身高:163cm 体重:47kg;
如果我们将男生定义为 1,女生定义为-1,并将上面的数据放入矩阵 data 中,即
1. data = [176 70;
2. 180 80;
3. 161 45;
4. 163 47];
复制代码
在 label 中存入男女生类别标签(1、-1),即
1. label = [1;1;-1;-1];
复制代码
这样上面的 data 矩阵就是一个属性矩阵,行数 4 代表有 4 个样本,列数 2 表示属性有两
个,label 就是标签(1、-1 表示有两个类别:男生、女生)。
Remark:这里有一点废话一些(因为我看到不止一个朋友问我这个相关的问题):
上面我们将男生定义为 1,女生定义为-1,那定义成别的有影响吗?
这个肯定没有影响啊!(用脚趾头都能想出来,我不知道为什么也会有人问),这里面的
标签定义就是区分开男生和女生,怎么定义都可以的,只要定义成数值型的就可以。
比如我可将将男生定义为 2,女生定义为 5;后面的 label 相应为 label=[2;2;5;5];
比如我可将将男生定义为 18,女生定义为 22;后面的 label 相应为
label=[18;18;22;22];
为什么我说这个用脚趾头都能想怎么定义都可以呢?学过数学的应该都会明白,将男生定
义为 1,女生定义为-1 和将男生定义为 2,女生定义为 5 本质是一样的,应为可以找到一