R: Випадковий ліс, який кидає NaN / Inf у помилці "виклику іноземної функції", незважаючи на відсутність набору даних NaN [закритий]


29

Я використовую caret, щоб запустити перехрещений випадковий ліс над набором даних. Змінна 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

Хтось має ідеї щодо того, чи є ця помилка викликана примушенням НС з примусу? Якщо так, то як я можу запобігти такому примусу?

Відповіді:


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 

Просто додати - якщо функція насправді категорична, її все одно можна включити, перетворивши її у фактор, наприклад. bla <-as.factor (blah)
P.Windridge

14

Можливо, причиною є те, що у вашому кадрах даних є деякі змінні символи.

Перетворити всю змінну символів у фактор в одному рядку:

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


2
Я не думав використовувати mutate_if()для цього ... дякую!
Андрій Бреза

3

Як показано в попередженні, було 28 помилок, що сталося числом стовпців із типами даних символів ("chr"). Примушування цих стовпців до факторів, дозволених розпочати пробіг.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.