R中的SVM-对新实例进行分类

时间:2018-10-29 20:32:24

标签: r machine-learning svm

我使用以下代码构建了SVM模型:

X1 = c(2, 2, -2, -2, 1, 1, -1, -1)
X2 = c(2, -2, -2, 2, 1, -1, -1, 1)
Y = c(1, 1, 1, 1, 2, 2, 2, 2)
alldata = data.frame(X1, X2, Y)
svm_model <- svm(alldata$Y ~ . , kernel = "radial", type = "C-classification", alldata)

现在,我想用值(4,5)对新实例进行分类。我尝试使用以下命令:

predict(svm_model, c(4,5))

但出现以下错误:

Error in dimnames(x) <- dn : 
  length of 'dimnames' [2] not equal to array extent

接下来我要做的是创建一个如下所示的小数据框,尝试进行分类并显示结果:

b1 = c(4)
b2 = c(5)
b = data.frame(b1,b2)
predict(svm_model, b)
   1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> 
   1    1    1    1    2    2    2    2 

我在哪里弄错了?

2 个答案:

答案 0 :(得分:2)

该错误消息表明c(4,5)与您用于训练的alldata中包含的信息不同。更具体地说,colnames()不同。

通过创建新的数据框:

new_data <- data.frame(X1 = 4, X2 = 5),您将能够获得预期的输出。

答案 1 :(得分:0)

您需要在“ b”数据框中使用相同的变量X1和X2进行预测。将代码中的b1和b2替换为X1和X2。

var1=$(ssh server2 bash -s << 'EOF'
  h=$(hostname)
  d=$(date)
  printf '{"hostname": "%s", "date": "%s" }\n' "$h" "$d"
EOF
)