आर: रैंडम फ़ॉरेस्ट NaN / Inf को "विदेशी फ़ंक्शन कॉल" त्रुटि के बावजूद NaN के डेटासेट में बंद नहीं किया गया [बंद]


29

मैं एक डेटासेट पर एक क्रॉस वेरिफाइड रैंडम फ़ॉरेस्ट को चलाने के लिए कैरट का उपयोग कर रहा हूं। 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

आपके प्रशिक्षण सेट में कक्षा 'चार' के साथ कुछ विशेषताएं होनी चाहिए।

कृपया इसे जाँचे

> 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()लिए उपयोग करने के बारे में नहीं सोचा था ... धन्यवाद!
एंड्रयू ब्रेज़ा

3

जैसा कि चेतावनी में दिखाया गया है कि 28 त्रुटियां थीं जो चरित्र डेटाटाइप्स ("chr") के साथ कॉलम की संख्या में हुईं। इन स्तंभों को जबरदस्ती शुरू करने के लिए अनुमति कारकों के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.