해결 방법: randomforest.default(m, y, …): 외부 함수 호출의 na/nan/inf


R에서 발생할 수 있는 오류는 다음과 같습니다.

 Error in randomForest.default(m, y, ...): 
  NA/NaN/Inf in foreign function call (arg 1)

이 오류는 다음 두 가지 이유로 발생할 수 있습니다.

  • 데이터 세트에 NA, NaN 또는 Inf 값이 있습니다.
  • 데이터세트의 변수 중 하나는 문자입니다.

이 오류를 해결하는 가장 쉬운 방법은 누락된 데이터가 있는 행을 제거하고 문자 변수를 요인 변수로 변환하는 것입니다.

 #remove rows with missing values 
df <- na. omitted (df)

#convert all character variables to factor variables
library (dplyr)
df %>% mutate_if(is. character , as. factor )

이 튜토리얼에서는 실제로 이 오류를 수정하는 방법의 예를 공유합니다.

관련 항목: R에서 랜덤 포레스트를 생성하는 방법(단계별)

오류를 재현하는 방법

R의 다음 데이터 프레임에 랜덤 포레스트를 맞추려고 한다고 가정해 보겠습니다.

 library (randomForest)

#create data frame
df <- data. frame (y <- c(30, 29, 30, 45, 23, 19, 9, 8, 11, 14),
                 x1 <- c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
                 x2 <- c(4, 4, 5, 7, 8, 7, 9, 6, 13, 15))

#attempt to fit random forest model
model <- randomForest(formula = y ~ ., data = df)

Error in randomForest.default(m, y, ...):
  NA/NaN/Inf in foreign function call (arg 1)

x1이 데이터 프레임의 문자 변수이기 때문에 오류가 발생합니다.

str() 함수를 사용하여 데이터 프레임의 구조를 표시하면 이를 확인할 수 있습니다.

 str(df)

'data.frame': 10 obs. of 3 variables:
 $ y....c.30..29..30..45: num 30 29 30 45 23 19 9 8 11 14
 $ x1....c..A....A....B....B.... : chr "A" "A" "B" "B"
 $ x2....c.4..4..5..7..: num 4 4 5 7 8 7 9 6 13 15

오류를 수정하는 방법

이 오류를 해결하려면 dplyrmutate_if() 함수를 사용하여 각 문자 열을 요인 열로 변환할 수 있습니다.

 library (dplyr)

#convert each character column to factor
df = df %>% mutate_if(is. character , as. factor )

그런 다음 랜덤 포레스트 모델을 데이터 프레임에 맞출 수 있습니다.

 #fit random forest model
model <- randomForest(formula = y ~ ., data = df)

#view summary of model
model

Call:
 randomForest(formula = y ~ ., data = df) 
               Type of random forest: regression
                     Number of trees: 500
No. of variables tried at each split: 1

          Mean of squared residuals: 65.0047
                    % Var explained: 48.64

데이터프레임에 더 이상 문자 변수가 없기 때문에 이번에는 오류가 발생하지 않습니다.

추가 리소스

다음 튜토리얼에서는 R의 다른 일반적인 오류를 해결하는 방법을 설명합니다.

해결 방법: 조건의 길이가 1보다 크고 첫 번째 요소만 사용됩니다.
R에서 수정하는 방법: Dim(X)는 양수 길이를 가져야 합니다.
R에서 수정하는 방법: true/false가 필요한 누락된 값
해결 방법: 강제로 인해 발생하는 NA

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다