首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >svm预测误差

svm预测误差
EN

Stack Overflow用户
提问于 2015-08-15 09:44:24
回答 2查看 3.9K关注 0票数 4

我训练过一位svm模型。我想测试它,但我面临一个错误的预测()函数。为了简单起见,这里我将测试和训练数据分割成非随机的70/30分割。

代码语言:javascript
复制
library(e1071)

train <- mydata[1:9731, ] 
test  <- mydata[(9731+1):13901, ]

mysvm <- svm(formula = outcome ~ BW + GA, data = train, type = "C-classification", kernel = "linear", gamma = 1, cost = 2)    
predict(mysvm, newdata=test)

预测()中的错误消息是:

代码语言:javascript
复制
Error in names(ret2) <- rowns : 
  'names' attribute [4170] must be the same length as the vector [4106]

数据的头看起来..。

代码语言:javascript
复制
> head(mydata)
    BW  outcome GA
1 2.00 Survived 34
2 2.81 Survived 41
3 1.85 Survived 35
4 2.23 Survived 32
5 1.21 Survived 34
6 2.91 Survived 37

This user具有相同的错误消息。问题是,S/他没有使用数据格式。这不是我的问题。

代码语言:javascript
复制
> class(test)
[1] "data.frame"
> class(train)
[1] "data.frame"

我不知道为什么会发生这个错误,也不知道它意味着什么。跟踪()和调试(预测)也没有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-15 15:58:26

很难提供解决方案,因为您没有提供数据。但是,我的猜测是,您的测试数据中有64行NA值用于GABW。如果使用任何NAs删除行,我认为您的预测将运行:

代码语言:javascript
复制
predict(mysvm, newdata = test[!rowSums(is.na(test)), ])

当然,这意味着您不会得到对这些行的任何预测。如何处理这个问题取决于您自己(例如,您可以将丢失的值或任何适合您特定用例的值归责于此)。

票数 6
EN

Stack Overflow用户

发布于 2016-06-12 10:34:22

我用:

代码语言:javascript
复制
   model <- svm(y = labels, x = data, ...)

   pred <- predict(model, data)

一切都很好。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32023504

复制
相关文章

相似问题

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