2013-10-10 2 views
6

원래 N 행에 12 개의 열로 구성된 데이터 프레임이있었습니다. 마지막 열은 제 클래스 (0 또는 1)입니다. 나는R에서 분류를 위해 randomforest()를 사용?

training <- sapply(training.temp,as.numeric) 

와 숫자에 내 전체 데이터 프레임을 전환했다 그러나 나는이 분류로 랜덤 포레스트() 도구를 사용하는 요소 열 수 클래스 열 필요하다고 생각, 그래서

training[,"Class"] <- factor(training[,ncol(training)]) 
했다

나는

training_rf <- randomForest(Class ~., data = trainData, importance = TRUE, do.trace = 100) 

로 트리를 만들기 위해 진행하지만 두 가지 오류 받고 있어요 :

누군가 제가 포맷 실수를 지적 할 수 있으면 감사하겠습니다.

감사합니다.

+0

당신은'<-'대신에 할당을 위해'<='를 사용하려고합니다. 또한 새로운 열을 만드시겠습니까? 그렇다면'Class'의 숫자 버전을 제거하거나 공식에서'.'을 사용하지 말아야합니다. –

+0

이 질문을 해결할 수있는 유일한 정보는'str (training)'의 결과입니다. – joran

+0

@joran : num [1 : 891, 1:12] 1 2 3 4 5 6 7 8 9 10 ... - attr (*, "dimnames") = 목록 2 .. $ : NULL .. $ : chr [1:12] "ID" "Class" "Sex" "Age"... – marc

답변

5

먼저 구문 오류로 인해 요인에 대한 강제 변환이 작동하지 않습니다. 둘째, RF 모델을 지정할 때 항상 색인을 사용해야합니다. 코드를 변경해야 작동합니다.

training <- sapply(training.temp,as.numeric) 
     training[,"Class"] <- as.factor(training[,"Class"]) 

    training_rf <- randomForest(x=training[,1:(ncol(training)-1)], y=training[,"Class"], 
           importance=TRUE, do.trace=100) 

# You can also coerce to a factor directly in the model statement 
    training_rf <- randomForest(x=training[,1:(ncol(training)-1)], y=as.factor(training[,"Class"]), 
           importance=TRUE, do.trace=100) 
+0

이것은 내 문제를 해결하지 못했습니다. 회귀를 원한다면 여전히 묻습니다 ... – marc

+0

방금 ​​게시 한 행을 추가하면이 구문을 사용하여 끝납니다. – marc

6

따라서 문제는 실제로 매우 간단합니다. 내 훈련 데이터가 원자 적 벡터였습니다. 그래서 처음에는 데이터 프레임으로 변환되어야했습니다. 그래서 다음 줄을 추가해야했습니다 :

training <- as.data.frame(training) 

문제가 해결되었습니다!

관련 문제