R: Random Forest melemparkan NaN / Inf dalam kesalahan "panggilan fungsi asing" meskipun tidak ada dataset NaN [ditutup]


29

Saya menggunakan tanda sisipan untuk menjalankan hutan acak lintas divalidasi atas dataset. Variabel Y adalah faktor. Tidak ada NaN, Inf, atau NA di dataset saya. Namun ketika menjalankan hutan acak, saya mengerti

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

Apakah ada yang punya ide apakah kesalahan ini disebabkan oleh NA yang diperkenalkan oleh paksaan? Jika demikian, bagaimana saya bisa mencegah paksaan seperti itu?

Jawaban:


36

Pasti ada beberapa fitur dalam set latihan Anda dengan kelas 'char'.

Silakan periksa ini

> 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 

Hanya untuk menambah- jika fitur ini sebenarnya kategorikal, itu masih dapat dimasukkan dengan mengubahnya menjadi faktor, misalnya. bla <-as.factor (bla)
P.Windridge

14

Mungkin penyebabnya adalah Anda memiliki beberapa variabel karakter dalam bingkai data Anda.

Ubah semua variabel karakter menjadi faktor dalam satu baris:

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


2
Saya tidak berpikir mutate_if()untuk menggunakan ini ... terima kasih!
Andrew Brēza

3

Seperti yang ditunjukkan dalam peringatan ada 28 kesalahan yang terjadi adalah jumlah kolom dengan tipe data karakter ("chr"). Memaksa kolom-kolom ini pada faktor-faktor yang memungkinkan untuk memulai.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.