2016-10-13 22 views
0

私はsvmによって訓練されたモデルに基づいてAの値を予測しようとしています。 これは私の電車やテストデータがどのように見えるかです:1:nrow(newdata)のエラー:SVM予測を使用しているときの長さ0の引数

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,]]) 
} 

を私は:

コードスニペットは、以下のとおりである

A  B C  D 
r00 r01 r02 r03 
... ... ... ... 
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(...)...) 
+0

これは、プロセス全体の小さな例、特にデータ 'dput(head(train))の小さなサブセットを提供できる場合に便利です。 – zacdav

答えて

0

私はfeatvecsは1列のみを持っているので、featvecs[f,]は長さ1である疑いがあります。 svm.predict()のソースコードで1:nrow(newdata)あなたのエラーが発生1:NULLを与える:

そしてtest[,featvecs[f,]]ベクトル出力NULLに適用されるベクトルの代わりに期待data.frame(mtcars[, "mpg"]mtcars[, "mpg", drop = FALSE]の違いを参照)、及びnrow()を出力します。

drop = FALSEtest[,featvecs[f,], drop = FALSE]を追加して、data.frameを取得してください。

+0

ありがとうございます。魅力のように働いた。 – user2991421

関連する問題