【问题标题】:How to do Classification using svmLinear carat package and not Regression如何使用 svm 线性插入符号包而不是回归进行分类
【发布时间】:2018-04-17 18:46:20
【问题描述】:

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

trainer = train(y~., data=traindf, method="svmLinear")
predicted = predict(trainer, testdf)

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

【问题讨论】:

    标签: r classification svm


    【解决方案1】:

    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')

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2019-01-16
      • 2019-04-19
      • 2020-02-05
      • 2018-05-19
      • 1970-01-01
      • 2017-02-06
      • 2017-12-04
      • 2014-05-10
      相关资源
      最近更新 更多