如何使用svmLinear克拉包而不是回归进行分类

时间:2017-11-05 14:42:32

标签: r classification svm

我有一个数据集,其标签为y = 1,2,3,4。我希望使用r中的carat包中提供的train()函数通过svmLinear方法进行分类。这是我写的示例代码。我使用了默认的trainControl函数。

extern "C"

但看起来,它正在执行回归而不是分类,因为预测值不是1,2,3,4的值。它也有十进制值。 如何使用列车函数的svmLinear方法运行多类分类。

1 个答案:

答案 0 :(得分:0)

什么类是y?除非svmLinear包中的参数指定了输出类型,否则将分析y并建立关于其类型的模型。至少这是它如何与Caret包装的其他监督方法(例如nnet)一起使用。

简而言之,通过以下方式确保y类型为factor来解决此问题:

trainer = train(as.factor(y) ~ . -y, data=traindf, method="svmLinear")

<强>更新
我无法找到Caret为linearSVM包装的特定包的文档,但您还应该能够在参数中指定类型。例如type=C-svc

predict()也可能是这种情况,您也可以在其中指定类型。例如type = c('prob', 'class')