Cara memperbaiki: kesalahan dalam do_one(nmeth): na/nan/inf dalam pemanggilan fungsi asing (arg 1)


Kesalahan yang mungkin Anda temui di R adalah:

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

Kesalahan ini terjadi ketika Anda mencoba melakukan pengelompokan k-means di R tetapi bingkai data yang Anda gunakan memiliki satu atau lebih nilai yang hilang.

Tutorial ini menjelaskan dengan tepat cara memperbaiki kesalahan ini.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita memiliki bingkai data berikut di R dengan nilai yang hilang di baris kedua:

 #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

Jika kita mencoba menggunakan fungsi kmeans() untuk melakukan pengelompokan k-means pada frame data ini, kita akan menerima kesalahan:

 #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)

Bagaimana cara memperbaiki kesalahan tersebut

Cara termudah untuk memperbaiki kesalahan ini adalah dengan menggunakan fungsi na.omit() untuk menghapus baris dengan nilai yang hilang dari bingkai data:

 #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"

Perhatikan bahwa algoritma pengelompokan k-means berjalan dengan sukses setelah kami menghapus baris dengan nilai yang hilang dari bingkai data.

Bonus: Panduan langkah demi langkah lengkap untuk pengelompokan k-means di R

Sumber daya tambahan

Cara memperbaikinya di R: NA yang diperkenalkan dengan paksaan
Cara memperbaiki di R: indeks di luar batas
Cara memperbaikinya di R: panjang benda yang lebih panjang bukan kelipatan panjang benda yang lebih pendek

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *