birkaç kümeleme algoritmaları denedikten sonra ben family = kccaFamily("angle")
ile flexclust::kcca
kullanarak veri kümesi en iyi performansı var.Flexclust'tan kümeleme performans istatistikleri nasıl oluşturulur?
İşte flexclust
den Nclus
veri kümesini kullanarak bir örnek.
library(fpc)
library(flexclust)
data(Nclus)
k <- 4
family <- flexclust::kccaFamily("angle")
model <- flexclust::kcca(Nclus, k, family)
Şimdi, kümelerin sayısını optimize etmek istiyorum. Küme modelleri için en kapsamlı performans metrikleri seti fpc::cluster.stats
kullanılarak bulunur. Bu fonksiyonun iki girişe ihtiyacı vardır: bir uzaklık matrisi ve atanan kümeler.
ikinci kolaydır; Bu sadece [email protected]
.
Ben mesafe matris için temin etmek ne mücadele ediyorum. kcca
bir uzaklık nesnesini döndürmez (ya da varsa, onu bulamadım). genellikle ben dist(Nclus)
kullanacağı konusunda
sanırım. Bu durumda, Öklid mesafesini (veya diğer yöntemlerden herhangi birini kullanılabilir dist
) – Kümeleme algoritması tarafından kullanılan mesafe ölçüsünü istemiyorum. Bu fonksiyondan kodu kullanarak kcca
tarafından kullanılan mesafe matrisini yeniden oluşturabilirim.
control <- as(list(), "flexclustControl")
centers <- flexclust:::initCenters(Nclus, k, family, control)
distmat <- distAngle(Nclus, centers$centers)
Sonra ben sadece
fpc::cluster.stats(distmat, [email protected])
sorun bu beni mesafe argümanı hakkında iki uyarı veriyor kullanılarak küme modeli istatistikleri hesaplamak gerekir.
Warning messages:
1: In as.dist.default(d) : non-square matrix
2: In as.matrix.dist(d) :
number of items to replace is not a multiple of replacement length
Bu bana yanlış bir şey verdiğinden şüpheleniyor.
nasıl cluster.stats
uzaklık matrisi geçmelidir ?
Bu arada, 'fpc :: cluster.stats' çok fazla bellek gerektirir, bu nedenle orta ölçekli veri kümeleri için pratik değildir. Sonunda 'cluster :: silhouette' ile gittim. –