针对muliclasses数据集的Matlab SVM培训

时间:2012-01-29 01:16:21

标签: matlab svm

我对SVM MATLAB工具箱2009b有疑问!问题是:

如何训练SVM分类器在MATLAB工具箱2009b中对多类数据集进行分类?

我只想使用MATLAB工具箱,所以如果有办法实现它,请回答它。例如,下面的代码用于对两个类数据集进行分类:

svmtrain( training data,              ...
          labels of training data,    ...
          'Kernel_Function',          ...
          'rbf',                      ...
          'RBF_Sigma',                ...
          sigma value,                ...
          'Method',                   ...
          'LS',                       ...
          'BoxConstraint',            ...
          C                           ...
          ); 

我想知道有没有办法通过编写上面代码等代码来训练多类数据集的SVM,或者我应该编写一些代码来训练每个类与其他类的SVM?

这意味着,我应该考虑 1 作为所选类的标签,并将其他类的标签设置为 0 ,并使用上面的代码训练SVM,并为所有课程进行操作!?

感谢您的考虑: - )

3 个答案:

答案 0 :(得分:1)

我没有在Matlab中使用过SVM,所以其他人可能会提供更明智的回复,但我会分享我所学到的知识。

Matlab Bioinformatics Toolbox SVM

从阅读documentation开始,生物信息学工具箱中的SVM似乎只支持二进制分类。正如问题中所建议的,二元分类器可以通过一些努力用于分类为多个类。关于在SVM here的上下文中执行此操作的方法有一些讨论。

备用选项

LIBSVM支持多类分类,并附带Matlab interface。您可以尝试安装和使用它。

此外,在研究这个问题时,我确实遇到了其他几个带有SVM实现的Matlab工具箱。如果LIBSVM不适合您,那么可能值得一看,看看不同的SVM实现是否符合您的需求。

答案 1 :(得分:1)

如果您有MATLAB版本R2014b或更高版本,您可以使用统计和机器学习工具箱中的fitcecoc功能来训练多类SVM。

答案 2 :(得分:0)

Yup,解决问题的方法 - 是实施一对一策略。 SVM缺乏的一个原因是它没有直接的多分类实现。 但您可以通过二进制分类来实现它。 我在matlab中没有看到svm multi分类的任何功能。但我认为自己实施它并不困难