我有以下数据
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.
答案 0 :(得分:2)
请看一下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)