benzemezlik (diana, küme R paketi) çıktısından optimum sayıda küme nasıl elde edilir?
Küme paketi ve diana yöntemi (kullanılan öklid farklılığı) ile elde edilen bir dendrogramdan optimum sayıda küme elde etmeye çalışıyorum:
mydatad <- diana(mydata, stand = FALSE)
mydata_dend <- fviz_dend(mydatad, cex = 0.5, k = 2, palette = "jco")
## use factoextra and ggplot2 for visualization
sonra NbClust ile farklılık matrisini kullanmaya çalışıyorum:
NC <- NbClust(data = NULL, diss = mydatadd, distance = NULL, min.nc = 2, max.nc = 50, method= "single", index = "silhouette")
ve şu hata mesajını alıyorum ":
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") :
missing value where TRUE/FALSE needed
ancak verilerimde eksik değer yok, dissim matrisindeki en düşük değerler aynı öğeler için 0 olmalıdır (mydata ~ 2000 öğe, 11 değişken).
Daha sonra ayrılığı tahmin etmeye çalıştım. orijinal verileri kullanarak ve öklid mesafesini tahmin ederek, böylece benzerlik matrisini kullanmadan uzaklık
NC <- NbClust(T2141d, diss = NULL, distance = "euclidean", min.nc = 2, max.nc = 50, method= "single", index = "silhouette")
ve aşağıdaki hata mesajını alıyorum:
Error in t(jeu) %*% jeu :
requires numeric/complex matrix/vector arguments
En uygun küme sayısını elde etmek için farklı yöntemler için öneriler, hatta öneriler memnuniyetle karşılanmaktadır. teşekkürler.
Yanıtlar
NbClust
Fonksiyon, bir ayrılık matris gerektirir. Çalıştırdığınızda diana
, döndürülen nesne hesaplanmış olmasına rağmen bir benzemezlik matrisi değildir. Ayarlaman gerekiyor keep.diss=TRUE
. Örnek bir veri kümesi kullanarak benzerlik matrisini nasıl döndüreceğimi göstermeden önce:
library(factoextra)
library(cluster)
mydata=data.frame(matrix(runif(2000*11),ncol=11))
mydatad <- diana(mydata, stand = FALSE,keep.diss=TRUE)
# check the dissimilarity matrix stored
class(mydatad$diss) [1] "dissimilarity" "dist" NC <- NbClust(data = NULL, diss = mydatad$diss,
distance = NULL, min.nc = 2, max.nc = 50,
method= "single", index = "silhouette")