كيفية الإصلاح: randomforest.default(m, y, …): na/nan/inf في استدعاء الوظيفة الخارجية


الخطأ الذي قد تواجهه في R هو:

 Error in randomForest.default(m, y, ...): 
  NA/NaN/Inf in foreign function call (arg 1)

يمكن أن يحدث هذا الخطأ لسببين:

  • توجد قيم NA أو NaN أو Inf في مجموعة البيانات
  • أحد المتغيرات في مجموعة البيانات هو الحرف

أسهل طريقة لإصلاح هذا الخطأ هي إزالة الصفوف التي تحتوي على بيانات مفقودة وتحويل متغيرات الأحرف إلى متغيرات عوامل:

 #remove rows with missing values 
df <- na. omitted (df)

#convert all character variables to factor variables
library (dplyr)
df %>% mutate_if(is. character , as. factor )

يشارك هذا البرنامج التعليمي مثالاً لكيفية إصلاح هذا الخطأ عمليًا.

ذات صلة: كيفية إنشاء غابات عشوائية في R (خطوة بخطوة)

كيفية إعادة إنتاج الخطأ

لنفترض أننا نحاول ملاءمة مجموعة عشوائية لإطار البيانات التالي في R:

 library (randomForest)

#create data frame
df <- data. frame (y <- c(30, 29, 30, 45, 23, 19, 9, 8, 11, 14),
                 x1 <- c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
                 x2 <- c(4, 4, 5, 7, 8, 7, 9, 6, 13, 15))

#attempt to fit random forest model
model <- randomForest(formula = y ~ ., data = df)

Error in randomForest.default(m, y, ...):
  NA/NaN/Inf in foreign function call (arg 1)

لقد تلقينا خطأ لأن x1 هو متغير حرف في إطار البيانات.

يمكننا تأكيد ذلك باستخدام الدالة str() لعرض بنية إطار البيانات:

 str(df)

'data.frame': 10 obs. of 3 variables:
 $ y....c.30..29..30..45: num 30 29 30 45 23 19 9 8 11 14
 $ x1....c..A....A....B....B.... : chr "A" "A" "B" "B"
 $ x2....c.4..4..5..7..: num 4 4 5 7 8 7 9 6 13 15

كيفية اصلاح الخطأ

لإصلاح هذا الخطأ، يمكننا استخدام الدالة mutate_if() dplyr لتحويل كل عمود حرف إلى عمود عامل:

 library (dplyr)

#convert each character column to factor
df = df %>% mutate_if(is. character , as. factor )

يمكننا بعد ذلك ملاءمة نموذج الغابة العشوائية مع إطار البيانات:

 #fit random forest model
model <- randomForest(formula = y ~ ., data = df)

#view summary of model
model

Call:
 randomForest(formula = y ~ ., data = df) 
               Type of random forest: regression
                     Number of trees: 500
No. of variables tried at each split: 1

          Mean of squared residuals: 65.0047
                    % Var explained: 48.64

لا نتلقى أي أخطاء هذه المرة لأنه لا يوجد المزيد من متغيرات الأحرف في إطار البيانات.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية حل الأخطاء الشائعة الأخرى في R:

كيفية الإصلاح: الشرط له طول > 1 وسيتم استخدام العنصر الأول فقط
كيفية الإصلاح في R: dim(X) يجب أن يكون له طول موجب
كيفية الإصلاح في R: القيمة المفقودة حيث تكون هناك حاجة إلى صواب/خطأ
كيفية الإصلاح: زمالة المدمنين المجهولين المقدمة عن طريق الإكراه

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *