R 中的 SVM - 对新实例进行分类
SVM in R - Classify new instance
我使用以下代码构建了我的 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)
你将能够得到预期的输出。
您的 'b' 数据框中需要有相同的变量 X1 和 X2 才能进行预测。用 X1 和 X2 替换代码中的 b1 和 b2。
X1 = c(4)
X2 = c(5)
b = data.frame(X1,X2)
predict(svm_model, b)
我使用以下代码构建了我的 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)
你将能够得到预期的输出。
您的 'b' 数据框中需要有相同的变量 X1 和 X2 才能进行预测。用 X1 和 X2 替换代码中的 b1 和 b2。
X1 = c(4)
X2 = c(5)
b = data.frame(X1,X2)
predict(svm_model, b)