如何将二进制KNN分类器更改为SVM分类器?

时间:2017-02-24 21:01:26

标签: matlab

我使用KNN分类器对性别进行分类。 我想添加一个SVM分类器而不是KNN分类器,其标签为0和1(女性为0,男性为1)

我有一个测试示例矩阵sample,一个训练示例矩阵training,以及一个带有训练样例group标签的向量。我想要class,这是测试示例的标签矢量。

class = knnclassify(sample, training, group);
if class==1
    x='Male';
else
    x='Female';
end

如何更改此代码以使用SVM查找class

1 个答案:

答案 0 :(得分:0)

要训练SVM,您需要Statistics and Machine Learning Toolbox

knnclassify与使用SVM分类器之间的最大区别在于,对新标签进行培训和分类将是两个单独的步骤。

1。训练您的SVM:fitcsvm

此步骤教授分类器如何区分您的两个类。它正在学习线性分隔符(或特征的加权组合),其在正例和负例之间具有最大的余量。您提供的所有示例都需要具有基本事实标签。

SVM有许多可调参数,您可以在训练步骤中调整这些参数。 Matlab文档中有几个很好的tutorials描述了这些差异,但对于最基本的版本,你可以使用你的训练样例

model = fitcsvm(training,group);

此模型将用于下一步。

2。对新示例进行分类:predict

要对新示例进行分类,请运行

class = predict(sample, model);

说明:

使用您的模型,您还可以运行交叉折叠验证,这对精度分析非常有用。

cvModel = crossval(model);
classError = kfoldLoss(cvModel);

您也可以像其他任何Matlab变量一样保存模型以备将来使用。

save('model.m', 'model');

knnclassify来自生物信息学工具箱。在统计和机器学习工具箱中,还有一个KNN模型,您可以使用fitcknn进行训练并使用predict进行分类。好处是您可以将KNN模型与多组数据一起使用,比较交叉验证结果,并将其保存以备将来使用。