R: Rừng ngẫu nhiên ném NaN / Inf vào chức năng nước ngoài gọi lỗi Lỗi mặc dù không có dữ liệu NaN trong tập dữ liệu [đã đóng]


29

Tôi đang sử dụng dấu mũ để chạy một rừng ngẫu nhiên được xác thực chéo qua tập dữ liệu. Biến Y là một yếu tố. Không có NaN, Inf, hoặc NA trong tập dữ liệu của tôi. Tuy nhiên, khi chạy rừng ngẫu nhiên, tôi nhận được

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

Có ai có ý tưởng nào về việc lỗi này là do sự ép buộc của NA không? Nếu vậy, làm thế nào tôi có thể ngăn chặn sự ép buộc như vậy?

Câu trả lời:


36

Phải có một số tính năng trong tập huấn luyện của bạn với lớp 'char'.

Làm ơn kiểm tra cái này

> 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 

Chỉ cần thêm - nếu tính năng này thực sự phân loại, nó vẫn có thể được bao gồm bằng cách chuyển đổi nó thành một yếu tố, ví dụ. blah <-as.factor (blah)
P.Windridge

14

Có lẽ nguyên nhân là bạn có một số biến ký tự trong khung dữ liệu của bạn.

Chuyển đổi tất cả các biến ký tự thành yếu tố trong một dòng:

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


2
Tôi đã không nghĩ đến việc sử dụng mutate_if()cho việc này ... cảm ơn!
Andrew Brēza

3

Như được hiển thị trong cảnh báo, có 28 lỗi xảy ra là số lượng cột có kiểu dữ liệu ký tự ("chr"). Buộc các cột này thành các yếu tố được phép để chạy bắt đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.