matlab-svmtrain安装及简单实用

一、环境

  • 系统:win10
  • 语言:matlab

二、安装步骤

2.1 找车轮

https://blog.csdn.net/qq_31781741/article/details/82666861

这篇博客可以解决大部分问题

2.2 新的问题

make的时候出现错误:

1
2
3
使用 'MinGW64 Compiler (C)' 编译。
Error: D:\Program Files\MATLAB\libsvm\matlab\make.m failed (line 13)
gcc: error: \-fexceptions: No such file or directory

解决方法:

将make.m中的 CFLAGS 替换为 COMPFLAGS ,总共有6个好像。

完成编译,并能调用svmtrain函数

三、简单测试

3.1 程序测试

就是写个简单的测试程序。(一定是这种例子太基础了,这个百度都找不到)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
data=[
1 1;
2 2;
1.1 1.2;
2.1 2;

7.1 8;
8 7.1;
8.1 8;
9 9.1;
];
label = [-1;-1;-1;-1;1;1;1;1];

model = svmtrain(label, data);

testdata = [1.5 1.5; 10 10];
testlabel = [-1; 1];

[predictlabel,accuracy,decision_values] = svmpredict(testlabel,testdata,model);
predictlabel

输出:

1
2
3
4
5
6
7
8
9
optimization finished, #iter = 12
nu = 0.443659
obj = -1.775007, rho = -0.181466
nSV = 5, nBSV = 0
Total nSV = 5
Accuracy = 100% (2/2) (classification)
predictlabel =
-1
1

其中,#iter为迭代次数,nu是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b,nSV为标准支持向量个数(0<a[i]<c),nBSV为边界上的支持向量个数(a[i]=c),Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)。

3.2 工程测试

数据不可能在训练程序中提取,一般都会有一个生成特征的分类文件,这里只需要将他们导入就可以使用:

1
2
3
4
5
6
7
8
9
10
load 'datasets\data.mat'
load 'datasets\label.mat'

model = svmtrain(label,data);

testdata = [1.5 1.5; 10 10];
testlabel = [-1;1];

[predictlabel,accuracy,decision_values] = svmpredict(testlabel,testdata,model);
predictlabel

变量保存方法

1
2
save 'datasets\data.mat' data;
save 'datasets\label.mat' label;

四、图片分类

4.1 HOG特征提取

-------------本文结束感谢您的阅读-------------
0%