2012-02-12 21 views
9

Küme doğrulamasını gerçekleştirmek için R'de fpc paketi kullanıyorum.R Kümeleme 'saflık' metriği

Kümelememi bir dış bölümlendirme ile karşılaştırmak ve rand Index, entropy e.t.c. gibi birkaç metriği hesaplamak için cluster.stats() işlevini kullanabilirim.

Ancak, ben, R.

sayesinde bu tedbirin bir uygulama olup olmadığını merak ediyorum http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

tanımlanan 'saflık' veya 'küme doğruluğu' adlı bir metrik için arıyorum Chet

cevap

11

bir off-the-raf fonksiyonunun biliyorum, ama burada varsa bağlantınızda denklemi kullanılarak kendiniz yapabileceğini bir yoludur yoktur:

ClusterPurity <- function(clusters, classes) { 
    sum(apply(table(classes, clusters), 2, max))/length(clusters) 
} 

Burada biz saflık 1/sayı-of-sınıflarına olmasını bekliyoruz inanıyoruz rastgele atamaları, test edebilirsiniz:

> n = 1e6 
> classes = sample(3, n, replace=T) 
> clusters = sample(5, n, replace=T) 
> ClusterPurity(clusters, classes) 
[1] 0.334349 
+1

kısa ve kolay olduğunu gösterir! R'yi çok seyrek kullanıyorum ve bunu yapmak için uzun bir işlev yazmak için yalvarıyordum. Bana zaman kazandıran ve bana bir şey öğrettiğin için çok teşekkür ederim. R. – chet

+0

@chet Müthiş olduğu için çok memnunum. İyi şanslar! –