我有一个数据集,其标签为y = 1,2,3,4。我希望使用r中的carat包中提供的train()函数通过svmLinear方法进行分类。这是我写的示例代码。我使用了默认的trainControl函数。
extern "C"
但看起来,它正在执行回归而不是分类,因为预测值不是1,2,3,4的值。它也有十进制值。 如何使用列车函数的svmLinear方法运行多类分类。
答案 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')