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?

Info5ek
sumber

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 
Pankaj Sharma
sumber
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)

pablo_sci
sumber
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.

Info5ek
sumber