SVM predict on dataframe with different factor lev

2019-03-04 18:08发布

I have a dataframe I want to make predictions on from an SVM, but the dataframe doesn't have all of the levels that the original training dataframe did. Is there an easy way around this?

Here's a quick example

library(e1071)
df = data.frame(y = c(rep(1:3, each = 3)), x = rep(c("A", "B", "C"), each = 3))

m1 = svm(y ~ x, df)
df2 = data.frame(x = "B")

predict(m1, df2)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels

标签: r predict
1条回答
啃猪蹄的小仙女
2楼-- · 2019-03-04 18:22

Just be sure to specify the levels in df2

library(e1071)
df = data.frame(y = c(rep(1:3, each = 3)), x = rep(c("A", "B", "C"), each = 3))

m1 = svm(y ~ x, df)
df2 = data.frame(x = factor("B",levels = c("A","B","C")))

predict(m1, df2)
查看更多
登录 后发表回答