2014-03-27 4 views
2

e1071 SVM을 교육 한 후 이상한 오류가 발생합니다. 대형 (10000x1000) 스파 스 매트릭스 (DTM)의 텍스트 문서 다중 클래스 분류입니다. 기능 (열)에 문제가있는 것 같습니다.SVM 교육 (e1071) 후 R - 이상한 오류/경고

summary(svmModel)이 작동합니다. .)

그러나, 뭔가 잘못이며,이 결과가 일치하지 않는 이유가 될 수

> svmModel <- svm(labels ~., data= train[,-1], cross = 10, seed = 1234, kernel="linear") 

Warning message: 
In svm.default(x, y, scale = scale, ..., na.action = na.action) : 
    Variable(s) ‘abgebildet’ and 
... 
‘could’ and [... truncated] 
+0

교육 및 테스트 전에 기능 데이터 서식 지정에 대한 추가 정보 파일을 확인 했습니까? – kAmol

답변

2

드물게 발생 단어가 다음이되지 않는 경우, 결과는 (항상 (더 좋을 수 있습니다. 교육 데이터의 해당 기능이 0 일 수는 없습니다.이 경고가 발생할 수 있습니다.

+0

이것은 더 많은 코멘트입니다.하지만 어떻게 해결할 수 있을까요? 열의 양을 줄여야합니까 (아마도 PCA 또는 이와 비슷한 것을 사용합니까?). – rj2700

2

교육 데이터 집합에서 값이없는 변수를 확인하십시오.이 작업을 수행하는 한 가지 방법은 모든 열

colSums(train[,!colnames(train)=yvar]) 

제거 할 수없는 독립 변수의 값이 0 인 경우 보통 층화 된 샘플을 학습 데이터 집합으로 사용합니다. 그것은 일반적으로 당신은 또한 추가 할 수있는 반면에 플래그 변수 촬영 값을 0과 1

#stratified sampling 
library(sampling) 
Training<- strata(train, stratanames = "emptyvar", size = c(1000,500)) 
#this creates a sample of size 1000 and 500 for 0 and 1 each 
strata.train<-getdata(train,Training) 
#it creates additional 3 columns which you can remove 
train<-strata.train[,!colnames(strata.train) %in% c("ID_unit","Prob","Stratum")] 

, 당신의 svm()-scale=F과 사전에 변수를 확장 수행됩니다. 이렇게하면 svm 함수가 변수를 스케일링하지 않아 z 값이 변수가 비어있는 NaN이됩니다. 그러나 수동으로 할 수있는 변수의 크기를 조정하고자 할 수 있습니다.

cols<-c(1:5) #say you want to scale the first 5 variables 
library(plyr) 
standardize <- function(x) as.numeric((x - mean(x))/sd(x)) 
train[cols] <- plyr::colwise(standardize)(train[cols])