接下来就是在Visual Studio中的工作了。其实很简单,只要在C#中的引用那一栏将src文件夹中的dll文件全部添加为引用,就可以实现两者的混合编程了。
2。6Libsvm工具函数
libsvm是林智仁副教授等人开发设计的一个简单易用、快速有效的SVM模式识别与回归的软件包,提供源代码和参数调用[9]。下载工具箱后,只需在MATLAB中添加相应的路径,并在命令行输入mex –setup命令,逐步进行环境的配置即可。过程较为简单,这里就不详细介绍了。
本小节主要对libsvm里使用到的的一些方法,以及涉及到的一些参数和返回值,进行简单的介绍。
(1)训练
libsvmtrain函数用于对训练集的数据进行训练,从而获得已训练好的模型。具体的函数为:
model=libsvmtrain(trainlabel, traindata, [,'libsvm_options']);
这个函数有三个参数,其中
① trainlabel: 训练样本的类标,若有m个样本,就是m x 1的矩阵,且必需为double类型。
② traindata: 训练样本的特征,若有m个样本,每个样本的特征是n维,则为m x n的矩阵,且必需为double类型。
③ libsvm_options:训练的参数,将在第3点里具体介绍。
(2)预测
libsvmpredict函数用于对测试集的数据进行效果测试,同时也能预测未知样本。具体的函数为:
libsvmpredict(testlabel, testdata, model [,'libsvm_options']);
这个函数包括四个参数,其中
① testlabel:测试样本的类标,若有m个样本,就是m x 1的矩阵,且必须为double类型。若类标未知,则初始化为任意一个m x 1的double型数组。
② testdata:测试样本的特征,若有m个样本,每个样本特征是n维,则为m x n的矩阵,且必须为double类型。
③ model:之前使用libsvmtrain函数后返回的模型
④ libsvm_options:预测的参数,将在第3点具体介绍。
(3)训练的参数,即libsvmtrain函数里libsvm_options的参数
训练时有很多可供选择的参数,这里主要对涉及到的参数进行介绍:
① -s svm类型:设置SVM类型,缺省值为0
0 — C-SVC; 1 –v-SVC; 2 – 一类SVM; 3 — e-SVR; 4 — v-SVR
② -t 核函数类型:设置核函数类型,缺省值为2
0 –线性核函数 1 –多项式核函数 2 –RBF核函数 3 – sigmoid核函数
③ -g r(gamma):核函数中的gamma函数设置(针对多项式/RBF/sigmoid核函数,缺省值为1/k,k为总类别数)
④ -c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数,缺省值为1)论文网
以上这些参数的设置可以按照SVM的类型和核函数的类型进行任意组合,如果SVM类型或核函数中不存在该参数,则程序不接收该参数,且对程序没有影响;如果给定的参数设置错误,参数将设置为缺省值。
(4)训练返回的内容
libsvmtrain函数返回已训练好的SVM分类模型,可用来对未知的样本进行预测,本文主要使用的参数包含以下成员:
① Parameters: 一个5 x 1的矩阵,每个行向量从上往下依次表示为:
-s SVM类型,缺省值为0;
-t 核函数类型,缺省值为2;
-d 核函数中degree参数设置(针对多项式核函数缺省值为3);
-g 核函数中r(gamma)函数设置(针对多项式/RBF/sigmoid核函数,缺省为1/k,k为类别数目);
-r 核函数中的coef0参数设置(针对多项式/sigmoid核函数,缺省为0)
② nr_class: 表示分类模型的总类别数。
③ totalSV: 表示支持向量的总数。