1:nrow(newdata) 中的错误:使用 SVM 预测时长度为 0 的参数
Error in 1:nrow(newdata) : argument of length 0 while using SVM predict
我正在尝试根据 svm 训练的模型预测 A 值。
这就是我的训练和测试数据的样子:
A B C D
r00 r01 r02 r03
... ... ... ...
代码片段如下:
featvecs = ["B"]
for (f in 1:nrow(featvecs)) {
tuned <- svm(A ~., data = train[,c("A",featvecs[f,])], gamma = 0.01, cost = 10, kernel= "radial")
svm.predict <- predict(tuned, test[,featvecs[f,]])
}
我收到 svm.predict 行的以下错误,我不确定为什么?
Error in 1:nrow(newdata) : argument of length 0
火车数据的结构:
structure(list(A = structure(6L, .Label = c("'1'",
"'2'", "'3'" ), class = "factor"), B = structure(15L, .Label = c(...)...)
测试数据的结构:
structure(list(A = structure(2L, .Label = c("'1'",
"'2'", "'3'" ), class = "factor"), B = structure(17L, .Label = c(...)...)
我怀疑 featvecs
只有一列,所以 featvecs[f,]
的长度是 1
。
然后test[,featvecs[f,]]
输出一个向量而不是预期的data.frame(参见mtcars[, "mpg"]
和mtcars[, "mpg", drop = FALSE]
之间的区别),并将nrow()
应用于a向量输出 NULL
: svm.predict()
源代码中的 1:nrow(newdata)
给出 1:NULL
导致你的错误。
尝试将 drop = FALSE
添加到 test[,featvecs[f,], drop = FALSE]
以便获得 data.frame.
我正在尝试根据 svm 训练的模型预测 A 值。 这就是我的训练和测试数据的样子:
A B C D
r00 r01 r02 r03
... ... ... ...
代码片段如下:
featvecs = ["B"]
for (f in 1:nrow(featvecs)) {
tuned <- svm(A ~., data = train[,c("A",featvecs[f,])], gamma = 0.01, cost = 10, kernel= "radial")
svm.predict <- predict(tuned, test[,featvecs[f,]])
}
我收到 svm.predict 行的以下错误,我不确定为什么?
Error in 1:nrow(newdata) : argument of length 0
火车数据的结构:
structure(list(A = structure(6L, .Label = c("'1'",
"'2'", "'3'" ), class = "factor"), B = structure(15L, .Label = c(...)...)
测试数据的结构:
structure(list(A = structure(2L, .Label = c("'1'",
"'2'", "'3'" ), class = "factor"), B = structure(17L, .Label = c(...)...)
我怀疑 featvecs
只有一列,所以 featvecs[f,]
的长度是 1
。
然后test[,featvecs[f,]]
输出一个向量而不是预期的data.frame(参见mtcars[, "mpg"]
和mtcars[, "mpg", drop = FALSE]
之间的区别),并将nrow()
应用于a向量输出 NULL
: svm.predict()
源代码中的 1:nrow(newdata)
给出 1:NULL
导致你的错误。
尝试将 drop = FALSE
添加到 test[,featvecs[f,], drop = FALSE]
以便获得 data.frame.