R : 데이터 집합에 NaN이 없어도 "외부 함수 호출"오류에서 NaN / Inf를 발생시키는 임의 포리스트 [닫기]


29

캐럿을 사용하여 데이터 세트에 대해 교차 유효성 검사 임의 포리스트를 실행하고 있습니다. Y 변수는 요인입니다. 내 데이터 세트에 NaN, Inf 또는 NA가 없습니다. 그러나 임의의 포리스트를 실행하면

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)
In addition: There were 28 warnings (use warnings() to see them)
Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In data.matrix(x) : NAs introduced by coercion
3: In data.matrix(x) : NAs introduced by coercion
4: In data.matrix(x) : NAs introduced by coercion

이 오류가 NA가 강제에 의해 도입 된 것인지에 대한 아이디어가 있습니까? 그렇다면 그러한 강요를 어떻게 방지 할 수 있습니까?

답변:


36

클래스 'char'로 훈련 세트에 몇 가지 기능이 있어야합니다.

이것을 확인하십시오

> a <- c("1", "2",letters[1:5], "3")
> as.numeric(a)
[1]  1  2 NA NA NA NA NA  3
Warning message:
NAs introduced by coercion 

추가하기 위해 기능이 실제로 범주 형인 경우 기능을 요인으로 변환하여 포함시킬 수 있습니다 (예 : blah <-as.factor (blah)
P.Windridge

14

데이터 프레임에 문자 변수가있을 수 있습니다.

모든 문자 변수를 한 줄에있는 요소로 변환합니다 :

library(dplyr) data_fac=data_char %>% mutate_if(is.character, as.factor)


2
나는 mutate_if()이것을 위해 사용할 생각하지 않았다 ... 고마워!
앤드류 Brēza

3

경고에 표시된 것처럼 문자 데이터 유형 ( "chr")이있는 열 수인 28 개의 오류가 발생했습니다. 이러한 열을 요인으로 강제 실행하면 실행이 시작됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.