我使用以下代码构建了我的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
我犯了什么错误?
回答:
该错误信息表明c(4,5)
不包含与您用于训练的alldata
相同的信息。更具体地说,colnames()
不相同。
通过创建一个新的数据框:
new_data <- data.frame(X1 = 4, X2 = 5)
您将能够获得预期的输出。