SVM:需要数值因变量进行回归

时间:2017-04-19 15:17:07

标签: r

我有以下数据

scorer<-function(points){
        points["scores"] <- as.vector((points$X-5)^2+(points$Y-5)^2-9)
        points["class"]<-(as.vector(  points$scores<0 ))
        points
}
dt<-scorer(data.frame(X=c(0,1,5,20,5,3,9,3,5,5),Y=c(0,9,9,0,-18,3,4,5,7,4)))

然后我尝试使用SVM预测最后一列(类)

library(e1071)
model <- svm(class ~ . , dt)
predictedClass <- predict(model, dt)

但它抱怨:

Error in svm.default(x, y, scale = scale, ..., na.action = na.action) : 
  Need numeric dependent variable for regression.

2 个答案:

答案 0 :(得分:2)

来自nya建议确实有效。

请看一下type参数说明

  

svm可以用作分类机器,回归机器或者用作   新奇检测。取决于y是否是因子,默认设置   类型为 C-classification eps-regression ... page 50

答案 1 :(得分:1)

使用您的数据集,您可以使用svm方法进行分类。

但是如果你想绝对做出回归,试着用数字形式转换变量“class”,负值得分为1,positif得分为0。

function(points) {

points["scores"] <- as.vector((points$X-5)^2+(points$Y-5)^2-9)
                   points["class"]<-as.vector(  ifelse(points$scores<0 ,1,0))
                   points
                 }
dt<-scorer(data.frame(X=c(0,1,`enter code here`5,20,5,3,9,3,5,5),Y=c(0,9,9,0,-18,3,4,5,7,4)))
svm(class~.,dt)