2012-02-12 22 views
9

Estoy usando el paquete fpc en R para realizar la validación del clúster.R Clustering 'pureza' métrica

Podría usar la función cluster.stats() para comparar mi agrupamiento con una partición externa y calcular varias métricas como Rand Index, entropy e.t.c.

Sin embargo, yo estoy buscando una métrica llamada 'pureza' o 'exactitud por grupos' que se define en http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

Me pregunto si hay una aplicación de esta medida en R.

gracias, Chet

Respuesta

11

no sé de una función off-the-shelf, pero aquí es una manera que podría hacerlo por sí mismo utilizando la ecuación en su enlace:

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

Aquí podemos probarlo en algunas asignaciones aleatorias, en las que creo que esperamos que la pureza sea 1/número-de-clases:

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

eso era corto y fácil! Uso R con bastante poca frecuencia y estaba empezando a escribir una función larga para hacer esto. Muchas gracias por ahorrarme tiempo y enseñarme una cosa más en R. – chet

+0

@chet Genial Me alegro de que ayude. ¡Buena suerte! –