कैसे ठीक करें: do_one(nmeth) में त्रुटि: विदेशी फ़ंक्शन कॉल में na/nan/inf (arg 1)


R में आपके सामने एक त्रुटि आ सकती है:

 Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)

यह त्रुटि तब होती है जब आप आर में के-मीन्स क्लस्टरिंग करने का प्रयास करते हैं लेकिन आप जिस डेटा फ्रेम का उपयोग कर रहे हैं उसमें एक या अधिक गुम मान हैं।

यह ट्यूटोरियल सटीक रूप से बताता है कि इस त्रुटि को कैसे ठीक किया जाए।

त्रुटि को पुन: उत्पन्न कैसे करें

मान लीजिए कि हमारे पास R में निम्नलिखित डेटा फ़्रेम है, जिसकी दूसरी पंक्ति में कोई मान नहीं है:

 #create data frame
df <- data. frame (var1=c(2, 4, 4, 6, 7, 8, 8, 9, 9, 12),
                 var2=c(12, 14, 14, 8, 8, 15, 16, 9, 9, 11),
                 var3=c(22, NA, 23, 24, 28, 23, 19, 16, 12, 15))

row. names (df) <- LETTERS[1:10]

#view data frame
df

  var1 var2 var3
At 2 12 22
B 4 14 NA
C 4 14 23
D 6 8 24
E 7 8 28
F 8 15 23
G 8 16 19
H 9 9 16
I 9 9 12
D 12 11 15

यदि हम इस डेटा फ़्रेम पर k-मीन्स क्लस्टरिंग करने के लिए kmeans() फ़ंक्शन का उपयोग करने का प्रयास करते हैं, तो हमें एक त्रुटि प्राप्त होगी:

 #attempt to perform k-means clustering with k = 3 clusters
km <- kmeans(df, centers = 3 )

Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)

त्रुटि को कैसे ठीक करें

इस त्रुटि को ठीक करने का सबसे आसान तरीका डेटा फ्रेम से गायब मान वाली पंक्तियों को हटाने के लिए केवल na.omit() फ़ंक्शन का उपयोग करना है:

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

#perform k-means clustering with k = 3 clusters
km <- kmeans(df, centers = 3)

#view results
km

K-means clustering with 3 clusters of sizes 4, 3, 2

Cluster means:
  var1 var2 var3
1 5.5 14.250000 21.75000
2 10.0 9.666667 14.33333
3 6.5 8.000000 26.00000

Vector clustering:
ACDEFGHIJ
1 1 3 3 1 1 2 2 2 

Within cluster sum of squares by cluster:
[1] 46.50000 17.33333 8.50000
 (between_SS / total_SS = 79.5%)

Available components:

[1] "cluster" "centers" "totss" "withinss" "tot.withinss"
[6] "betweenss" "size" "iter" "ifault"

ध्यान दें कि एक बार जब हम डेटा फ्रेम से गायब मान वाली पंक्तियों को हटा देते हैं तो k-मीन्स क्लस्टरिंग एल्गोरिदम सफलतापूर्वक चलता है।

बोनस: आर में के-मीन्स क्लस्टरिंग के लिए एक संपूर्ण चरण-दर-चरण मार्गदर्शिका

अतिरिक्त संसाधन

आर में कैसे ठीक करें: एनएएस को जबरदस्ती पेश किया गया
आर में मरम्मत कैसे करें: सूचकांक सीमा से बाहर
आर में कैसे ठीक करें: लंबी वस्तु की लंबाई छोटी वस्तु की लंबाई का गुणज नहीं है

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *