首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持向量机:回归需要数值因变量

支持向量机:回归需要数值因变量
EN

Stack Overflow用户
提问于 2017-04-19 23:17:07
回答 2查看 6.9K关注 0票数 2

我有以下数据

代码语言:javascript
复制
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)))

然后尝试使用支持向量机预测最后一列(类)

代码语言:javascript
复制
library(e1071)
model <- svm(class ~ . , dt)
predictedClass <- predict(model, dt)

但它抱怨道:

代码语言:javascript
复制
Error in svm.default(x, y, scale = scale, ..., na.action = na.action) : 
  Need numeric dependent variable for regression.
EN

回答 2

Stack Overflow用户

发布于 2017-06-23 03:00:41

来自nyaadvice真的很有效。

请看一下type参数说明

支持向量机可以用作分类机、回归机或新颖性检测。根据y是否为因子,类型的默认设置为C-classificationeps-regression ... page 50

票数 4
EN

Stack Overflow用户

发布于 2017-11-19 05:57:33

对于你的数据集,你可以使用支持向量机方法进行分类。

但是如果你绝对想要做回归,试着把你的变量"class“转换成数值形式,它可以取值1表示负分,0表示正分。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43499772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档