2016-09-25 8 views
0

나는 인자 변수를 가지고 있지만 숫자 엔트리를 가진 모델을 만들고있다. 나는 숫자로 변환했다. 내가 SVM 방사형 커널로 ​​모델을 만들려고 시도했을 때, 나는 이해하지 못하는 이상한 메시지를 받았다. 아래는 내가 한 일이다.나는 내 데이터를 훈련시킨다. 캐럿 트레인 기능을 가진 SVM 사용하기

Subset of data 
class ac_000  ad_000 ag_007 
neg  2130706438 280  25896 
neg  228   100  292936 
pos  42328  856  51190 
neg  24   24  0 
neg  370   346  0 
pos  1534  1388 794698 

factorconvert <- function(f){as.numeric(levels(f))[f]} 
DF[, 2:4] <- lapply(DF[, 2:4], factorconvert) 

SVM 
ctrl<-trainControl(method="repeatedcv"), 
repeats=5, 
summaryFunction=twoClassSummary, 
classProbs=TRUE) 

Train and Tune the SVM 
svm.tune <- train(x=trainX, y= trainData$Class,method = "svmRadial", 
tuneLength = 9, preProc =c("center","scale"),metric="ROC",trControl=ctrl) 

Error in if (any(co)) { : missing value where TRUE/FALSE needed In 
addition: Warning message: In FUN(newX[, i], ...) : NAs introduced by 
coercion. 

any(is.any(DF)). 

또한 na.omit()을 사용하여 데이터의 모든 NA를 제거했습니다. 데이터를 다시 검사했습니다. 누락 된 값이 없습니다. 도움이 필요해.

+0

문제를 재현 할 수 있도록 데이터의 하위 집합을 포함하십시오. 그것 없이는, 당신을 도우는 것이 아주 어렵습니다. [도움말 센터] (http://stackoverflow.com/help/mcve)를보십시오. 감사! – lrnzcig

+0

실제 데이터의 크기는 얼마입니까? – abhiieor

+0

1. factorconvert의 결과를 확인하십시오. 올바르게 작동하지 않을 수 있습니다. 그것은 당신이 제공 한 데이터에 있지 않습니다. 2. 원본 데이터 일부를 출력하십시오. 이 세트는 너무 작아서 테스트 할 수 없습니다. 데이터를 사용하지 않으려면 GermanCredit 데이터 (캐럿 패키지에 포함) 또는 다른 데이터 세트로 오류를 복제하십시오. – phiver

답변

0

데이터 집합의 문자열을 열을 인수 분해하지 않고 숫자 형식으로 직접 변환하려는 경우 발생할 수 있습니다. "factorconvert()"을 사용하여 변환 한 후 데이터를 확인하고 첫 번째 열에 어떤 NA 값이 들어 있는지 확인하는 것이 좋습니다. 문제가 해결되는지 알려주세요.