R: Floresta aleatória lançando NaN / Inf em erro de "chamada de função externa", apesar de nenhum NaN no conjunto de dados [fechado]


29

Estou usando o sinal de intercalação para executar uma floresta aleatória validada cruzada em um conjunto de dados. A variável Y é um fator. Não há NaN, Inf ou NA no meu conjunto de dados. No entanto, ao executar a floresta aleatória, recebo

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

Alguém tem ideias sobre se esse erro é causado pelas NAs introduzidas pela coerção? Se sim, como posso evitar essa coerção?

Respostas:


36

Deve haver alguns recursos no seu conjunto de treinamento com a classe 'char'.

Por favor, checar isto

> 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 

Apenas para adicionar, se o recurso for realmente categórico, ele ainda poderá ser incluído convertendo-o em um fator, por exemplo. blah <-as.factor (blah)
P.Windridge

14

Provavelmente, a causa é que você tem algumas variáveis ​​de caracteres em seu quadro de dados.

Converta todas as variáveis ​​de caracteres em fator em uma linha:

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


2
Eu não tinha pensado em usar mutate_if()para isso ... obrigado!
Andrew Brēza

3

Conforme mostrado no aviso, ocorreram 28 erros, que eram o número de colunas com tipos de dados de caracteres ("chr"). Forçar essas colunas a fatores permitidos para o início da execução.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.