R: การสุ่มฟอเรสต์การโยน NaN / Inf ในข้อผิดพลาด“ การเรียกฟังก์ชันต่างประเทศ” แม้จะไม่มีชุดข้อมูลของ NaN [ปิด]


29

ฉันใช้คาเร็ตเพื่อรันฟอเรสต์แบบสุ่มที่ผ่านการตรวจสอบความถูกต้องข้ามชุดข้อมูล ตัวแปร Y เป็นปัจจัย ไม่มีชุดข้อมูลของ NaN, Inf's หรือ 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()สิ่งนี้ ... ขอบคุณ!
Andrew Br Andrewza

3

ดังที่แสดงในคำเตือนมีข้อผิดพลาด 28 ข้อซึ่งเกิดขึ้นเป็นจำนวนคอลัมน์ที่มีประเภทข้อมูลอักขระ ("chr") การบังคับคอลัมน์เหล่านี้ให้อยู่ในปัจจัยที่อนุญาตให้เริ่มต้นได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.