2014-03-24 4 views
4

randomForest 패키지의 randomForest 함수를 사용하여 가장 중요한 변수를 찾습니다. 내 데이터 프레임을 urban이라고하고 응답 변수는 수익을 나타냅니다. 이 x 변수와 관련된 소스 코드에R 임의의 포리스트 : 데이터 (x)에 0 행이 있습니다.

Error in randomForest.default(m, y, ...) : data (x) has 0 rows 

:

urban.random.forest <- randomForest(revenue ~ .,y=urban$revenue, data = urban, ntree=500, keep.forest=FALSE,importance=TRUE,na.action = na.omit) 

나는 다음과 같은 오류가

n <- nrow(x) 
p <- ncol(x) 
if (n == 0) 
stop("data (x) has 0 rows") 

하지만 난 x 무엇인지 이해할 수 없습니다.

+1

수식과 기본 방법을 혼합합니다. 'randomForest'에 수식을 건네면'y' 값을 다시 넘겨서는 안됩니다. 왜냐하면 함수는 수식이'x' 값이라고 가정하고 일이 잘못되기 때문입니다. – Roland

+0

y = urban $ revenue를 제거했지만 오류가 여전히 존재합니다. randomForest.default (m, y, ...)의 오류 : data (x)가 0 행을 가짐 –

+0

다음과 같은 새로운 오류가 있습니다. randomForest.default (m, y, ...) : 응답의 고유 값은 5 개 이하입니다. 회귀를 원하십니까? 내 응답 변수는 58 개의 고유 값 길이를 가졌지 만 (고유 (도시 $ 수익)) # == 58 –

답변

3

해결했습니다. 나는 모든 값이 NA이거나 같은 컬럼을 몇 개 가지고있었습니다. 나는 그들을 떨어 뜨 렸고, 괜찮아졌다. 내 컬럼 클래스는 문자, 숫자 및 요소였다.

candidatesnodata.index <- c() 
for (j in (1 : ncol(dataframe))) { 

    if ( is.numeric(dataframe[ ,j]) & length(unique(as.numeric(dataframe[ ,j]))) == 1  ) 
    {candidatesnodata.index <- append(candidatesnodata.index,j)} 
           } 

dataframe <- dataframe[ , - candidatesnodata.index]