我使用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
?
答案 0 :(得分:0)
要训练SVM,您需要Statistics and Machine Learning Toolbox。
knnclassify
与使用SVM分类器之间的最大区别在于,对新标签进行培训和分类将是两个单独的步骤。
fitcsvm
此步骤教授分类器如何区分您的两个类。它正在学习线性分隔符(或特征的加权组合),其在正例和负例之间具有最大的余量。您提供的所有示例都需要具有基本事实标签。
SVM有许多可调参数,您可以在训练步骤中调整这些参数。 Matlab文档中有几个很好的tutorials描述了这些差异,但对于最基本的版本,你可以使用你的训练样例
model = fitcsvm(training,group);
此模型将用于下一步。
predict
要对新示例进行分类,请运行
class = predict(sample, model);
使用您的模型,您还可以运行交叉折叠验证,这对精度分析非常有用。
cvModel = crossval(model);
classError = kfoldLoss(cvModel);
您也可以像其他任何Matlab变量一样保存模型以备将来使用。
save('model.m', 'model');
knnclassify
来自生物信息学工具箱。在统计和机器学习工具箱中,还有一个KNN模型,您可以使用fitcknn
进行训练并使用predict
进行分类。好处是您可以将KNN模型与多组数据一起使用,比较交叉验证结果,并将其保存以备将来使用。