2014-12-19 4 views
1

저는 R이 처음이에요. 무엇이 잘못되었는지 이해해주세요. 일부 데이터를 예측하려고하지만 예측 함수가 반환하는 객체 (이상한 클래스 (요소))에 낮은 데이터가 포함되어 있습니다. 테스트 세트 크기는 5886입니다. 예측 된 객체 길이가 110 일 때 160 개의 변수 중 ... 예측 된 클래스 또는 데이터 프레임의 벡터가 기대됩니다. 나는 무엇을 잘못 이해 하는가?R SVM 예측

library(MASS) 
library(e1071) 
set.seed(333) 

data <- read.csv(file="D:\\MaсhLearningAssign\\pml-training.csv", head=TRUE, sep=",") 

index <- 1:nrow(data) 
testindex <- sample(index, trunc(length(index)*30/100)) 
train <- data[-testindex, ] 
test <- data[testindex, ] 

model <- svm(classe~., data = train, kernel="radial", gamma=0.001, cost=10) 
prediction <- predict(model, test) 
summary(prediction) 



Output: 
    A B C D E 
    28 24 25 12 22 

Dataset here

관찰 누락 처리하지 않습니다
+0

[위대한 R 재현 가능한 예제를 만드는 방법?] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – zero323

+0

데이터 집합을 추가했습니다 – UndeadDragon

답변

3

svm 및 데이터 세트 NAS에 가득합니다 :

> dim(data[complete.cases(data), ]) 
[1] 406 160 

당신은 SVM에게

을 NAS가 열을 제거하고 훈련을 시도 할 수 있습니다
> data <- data[, which(colSums(apply(data, 2, is.na)) == 0)] 
> dim(data) 
[1] 19622 93 

이제 데이터를 쪼갤 수 있습니다. svm. 나는 조심 스러울 것이다. 여전히 꽤 큰 데이터 집합과 svm은 다소 배가 고픈 자원입니다.

힌트 : 귀하의 데이터를 검토 한 결과, 데이터 세트 설명을주의 깊게 읽으십시오. 두 가지 완전히 다른 유형의 행이 있습니다. 그것은 NA의 풍부함을 설명 할뿐만 아니라 테스트 세트가 주어질 때 예측에 유용한 아이디어를 제공해야합니다.

+0

감사합니다 ! SVM 대신 사용할 수있는 것은 무엇입니까? – UndeadDragon

+0

그리고 그 예측 객체로 ROC를 어떻게 그릴 수 있습니까? – UndeadDragon

+0

첫 번째 질문은 상당히 광범위합니다. 거의 모든 기술을 사용하려면 누락 된 관찰을 처리하는 방법이 필요하며 그 자체로 쉬운 주제는 아닙니다. 이 부분을 무시한다고 할지라도, 방법의 선택은 실제로 당신의 목표에 달려 있으며 실제로 프로그래밍상의 문제는 아닙니다. ROC에 관해서는 https://rocr.bioinf.mpi-sb.mpg.de/를 시도 할 수 있지만 빠른 Google 검색은 다른 선택을 찾는 데 도움이 될 것입니다. – zero323