MATLAB中的支持向量机SVM
最近和组内的师兄聊到SVM的实现,发现身边很多朋友还在用libsvm和老版本matlab中自带的svmtrain函数(该函数在新版本中已被移除),因此写篇blog向大家介绍一下新版MATLAB中机器学习工具箱里的fitcsvm函数。
fitcsvm和svmtrain的个人使用感想
旧版matlab中的svmtrain函数使用体验确实不好,所以笔者以前也是用libsvm工具包中的svmtrain函数。去年发现新版matlab的机器学习工具箱内的fitcsvm函数使用体验还不错,所以转用了这个新工具。笔者所用的matlab版本为2018a及以上。
1 fitcsvm函数简介
1.1 基本语法
1.1.1 输入为double类型矩阵
Mdl = fitcsvm(X,Y);
Mdl—训练好的分类器
X—训练集数据特征矩阵
Y—训练集数据标签
以上为最常见的fitcsvm使用方法,它的输入变量可以是double类型的矩阵,也可以是table类型的表格
例如,我有一个包含109个样本的训练集,每个样本具有150个特征
训练集保存在一个名为data的double类型矩阵中,第151列是样本标签
我们可以直接使用这个double类型矩阵进行SVM训练
mdl = fitcsvm(data(:,1:150),data(:,151));
1.1.2 输入为table类型的表格
Mdl = fitcsvm(Tbl,ResponseVarName)
Tbl—包含了训练集样本特征和标签的表格,是一个table类型的变量
ResponseVarName—对应Tbl中数据标签的变量名
也可以用函数array2table将这个double类型的矩阵转换为table类型的表格再进行SVM训练
data_tbl = array2table(data