2016-10-13 3 views
0

svm에서 훈련 된 모델을 기반으로 A 값을 예측하려고합니다.1 : nrow (newdata)의 오류 : SVM 예측을 사용하는 동안 길이가 0 인 인수

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(...)...) 
+0

진행중인 전체 프로세스 중 작은 예를 제공 할 수 있다면 특히 유용합니다. 특히 데이터'dput (head (train)) '의 작은 하위 집합입니다. – zacdav

답변

0

내가 featvecs는 하나의 열이 의심 때문에 featvecs[f,] 길이 1이다. svm.predict()의 소스 코드 1:nrow(newdata)을하여 오류가 발생 1:NULL 제공 :

그럼 test[,featvecs[f,]]는 벡터 출력 NULL인가 벡터 대신 예상 data.frame (mtcars[, "mpg"]mtcars[, "mpg", drop = FALSE] 차이를 참조) nrow() 출력한다.

drop = FALSE to test[,featvecs[f,], drop = FALSE]을 추가하면 data.frame을 얻을 수 있습니다.

+0

정말 고마워요. 매력처럼 일했습니다. – user2991421

관련 문제