Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

clusterdata

Construya clústeres aglomerativos a partir de datos

Descripción

ejemplo

T = clusterdata(X,cutoff) Devuelve índices de clúster para cada observación (fila) de una matriz de datos de entrada, dado un umbral para cortar un árbol jerárquico aglomerativo del que genera la función.XcutofflinkageX

soporta clustering aglomerativo e incorpora las funciones, que puede utilizar por separado para un análisis más detallado.clusterdatapdistlinkagecluster Vea para más detalles.Descripción del algoritmo

ejemplo

T = clusterdata(X,Name,Value) especifica opciones adicionales mediante uno o varios argumentos de par nombre-valor. Por ejemplo, puede especificar que se encuentre un máximo de cinco clústeres.'Maxclust',5

Ejemplos

contraer todo

Busque y visualice un máximo de tres clústeres en un conjunto de datos generados aleatoriamente utilizando dos enfoques diferentes:

  1. Especifique un valor para el argumento de entrada.cutoff

  2. Especifique un valor para el argumento de par nombre-valor.'MaxClust'

Cree un conjunto de datos de ejemplo que consta de datos generados aleatoriamente de tres distribuciones uniformes estándar.

rng('default');  % For reproducibility X = [gallery('uniformdata',[10 3],12); ...     gallery('uniformdata',[10 3],13)+1.2; ...     gallery('uniformdata',[10 3],14)+2.5]; y = [ones(10,1);2*(ones(10,1));3*(ones(10,1))]; % Actual classes

Cree un gráfico de dispersión de los datos.

scatter3(X(:,1),X(:,2),X(:,3),100,y,'filled') title('Randomly Generated Data in Three Clusters');

Busque un máximo de tres clústeres en los datos especificando el valor 3 para el argumento de entrada.cutoff

T1 = clusterdata(X,3);

Dado que el valor es mayor que 2, se interpreta como el número máximo de clústeres.cutoffclusterdatacutoff

Trace los datos con las asignaciones de clúster resultantes.

scatter3(X(:,1),X(:,2),X(:,3),100,T1,'filled') title('Result of Clustering');

Busque un máximo de tres clústeres especificando el valor 3 para el argumento de par nombre-valor.'MaxClust'

T2 = clusterdata(X,'Maxclust',3); 

Trace los datos con las asignaciones de clúster resultantes.

scatter3(X(:,1),X(:,2),X(:,3),100,T2,'filled') title('Result of Clustering');

Mediante ambos enfoques, identifica los tres clústeres distintos en los datos.clusterdata

Cree un árbol de clúster jerárquico y busque clústeres en un paso. Visualice los clústeres utilizando un gráfico de dispersión 3D.

Cree una matriz 20.000-by-3 de datos de muestra generados a partir de la distribución uniforme estándar.

rng('default');  % For reproducibility X = rand(20000,3);

Busque un máximo de cuatro clústeres en un árbol de clústeres jerárquico creado mediante el método de vinculación.ward Especifique como construir clústeres sin calcular la matriz de distancia.'SaveMemory''on' De lo contrario, puede recibir un error de memoria si el equipo no tiene suficiente memoria para contener la matriz de distancia.

T = clusterdata(X,'Linkage','ward','SaveMemory','on','Maxclust',4);

Grafique los datos con cada cluster mostrado en un color diferente.

scatter3(X(:,1),X(:,2),X(:,3),10,T)

identifica cuatro clústeres en los datos.clusterdata

Argumentos de entrada

contraer todo

Datos de entrada, especificados como una matriz numérica con dos o más filas. Las filas representan observaciones y las columnas representan categorías o dimensiones.

Tipos de datos: single | double

Umbral para cortar el árbol jerárquico definido por, especificado como un escalar positivo entre y o un entero positivo. se comporta de forma diferente según el valor especificado para.linkage02≥ 2clusterdatacutoff

  • Si 0 < cutoff < 2, a continuación, forma clústeres cuando los valores son mayores que.clusterdatainconsistentcutoff

  • Si es un entero, entonces forma un máximo de clústeres.cutoff≥ 2clusterdatacutoff

Ejemplo: clusterdata(X,3)

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: Especifica la creación de un máximo de tres clústeres de uso de vinculación de Ward.clusterdata(X,'Linkage','ward','MaxClust',3)X

Criterio para definir clústeres en un árbol de clústeres jerárquico, especificado como el par separado por comas que consta de y cualquiera o.'Criterion''inconsistent''distance' Al especificar, también debe especificar un valor para o.'Criterion'MaxClustCutoff

Ejemplo: clusterdata(X,'Criterion','distance','Cutoff',.5)

Tipos de datos: char | string

Límite para el criterio de distancia o incoherente, especificado como el par separado por comas que consta de un escalar positivo. utiliza como umbral para las alturas o los coeficientes de inconsistencia de los nodos, dependiendo del valor de.'Cutoff'clusterdataCutoffCriterion Si especifica un valor para sin especificar el criterio para definir clústeres, utiliza el criterio de forma predeterminada.'Cutoff'clusterdata'inconsistent'

  • Si es así, agrupa todas las hojas en o debajo de un nodo en un cluster, siempre que la altura del nodo sea menor que.'Criterion''distance'clusterdataCutoff

  • Si es así, los valores de un nodo y todos sus subnodos deben ser menores que para agruparlos en un clúster.'Criterion''inconsistent'inconsistentCutoffclusterdata

Ejemplo: clusterdata(X,'Cutoff',0.2)

Tipos de datos: single | double

Profundidad para calcular valores incoherentes, especificados como el par separado por comas que consta de un escalar numérico. evalúa valores incoherentes mirando a la profundidad especificada debajo de cada nodo del árbol de clústeres jerárquico.'Depth'clusterdata

Ejemplo: clusterdata(X,'Depth',3,'Cutoff',0.5)

Tipos de datos: single | double

Distancia métrica, especificada como el par separado por comas que consta de y cualquier métrica de distancia aceptada por la función, como se describe en esta tabla.'Distance'pdist

MétricasDescripción
'euclidean'

Distancia euclidiana (por defecto)

'squaredeuclidean'

Distancia euclidiana cuadrada. (Esta opción se proporciona sólo para la eficiencia. No satisface la desigualdad triangular.)

'seuclidean'

Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre las observaciones se escala dividiendo por el elemento correspondiente de la desviación estándar, S = nanstd(X).

'mahalanobis'

Mahalanobis distancia utilizando la covarianza de muestra de,X C = nancov(X)

'cityblock'

Distancia de bloque de ciudad

'minkowski'

Distancia Minkowski. El exponente predeterminado es 2. Para utilizar un exponente diferente, especifique After, donde es un valor escalar positivo:.PP'minkowski'P'minkowski',P

'chebychev'

Chebychev distancia (diferencia máxima de coordenadas)

'cosine'

Uno menos el coseno del ángulo incluido entre los puntos (tratado como vectores)

'correlation'

Uno menos la correlación de muestra entre puntos (tratado como secuencias de valores)

'hamming'

Distancia de Hamming, que es el porcentaje de coordenadas que difieren

'jaccard'

Uno menos el coeficiente Jaccard, que es el porcentaje de coordenadas distintas de cero que difieren

'spearman'

Uno menos la correlación de rango de Spearman de muestra entre las observaciones (tratadas como secuencias de valores)

@distfun

Mango de función de distancia personalizado. Una función de distancia tiene la forma donde

function D2 = distfun(ZI,ZJ) % calculation of distance ...

  • es un vector que contiene una sola observación.ZI1n

  • es una-por-matriz que contiene múltiples observaciones. debe aceptar una matriz con un número arbitrario de observaciones.ZJm2ndistfunZJ

  • es un vector de distancias, y es la distancia entre las observaciones y.D2m21D2(k)ZIZJ(k,:)

Si los datos no son escasos, el uso de un built-in es generalmente más rápido que usar un identificador de función.distance

Para obtener más información, consulte.Las métricas de distancia

Ejemplo: clusterdata(X,'Distance','minkowski','MaxClust',4)

Tipos de datos: char | string | function_handle

Algoritmo para calcular la distancia entre clústeres, especificado como el par separado por comas que consta de y cualquier algoritmo aceptado por la función, como se describe en esta tabla.'Linkage'linkage

AlgoritmoDescripción
'average'

Distancia media no ponderada (UPGMA)

'centroid'

Distancia del centroide (UPGMC), apropiada para las distancias euclidiana solamente

'complete'

La distancia más lejana

'median'

Centro ponderado de distancia de masa (WPGMC), adecuado para distancias euclidiana sólo

'single'

La distancia más corta

'ward'

Distancia cuadrada interna (algoritmo de varianza mínima), apropiada para distancias euclidiana sólo

'weighted'

Distancia media ponderada (WPGMA)

Para obtener más información, consulte.Vínculos

Ejemplo: clusterdata(X,'Linkage','median','MaxClust',4)

Tipos de datos: char | string

Número máximo de clústeres a formar, especificado como el par separado por comas que consta de un entero positivo.'MaxClust'

Ejemplo: clusterdata(X,'MaxClust',4)

Tipos de datos: single | double

Opción para guardar la memoria, especificada como el par separado por comas que consta de y cualquiera o.'SaveMemory''on''off' La configuración provoca la construcción de clústeres sin calcular la matriz de distancia.'on'clusterdata La configuración se aplica cuando se cumplen ambas condiciones:'on'

  • es, o.Linkage'centroid''median''ward'

  • es (valor predeterminado).Distance'euclidean'

Cuando se aplican estas dos condiciones, el valor predeterminado es si tiene 20 columnas o menos, o si el equipo no tiene suficiente memoria para almacenar la matriz de distancia.'SaveMemory''on'X De lo contrario, el valor predeterminado es.'SaveMemory''off'

Cuando es, el tiempo de ejecución es proporcional al número de dimensiones (número de columnas de).'SaveMemory''on'linkageX Cuando es, el requisito de memoria es proporcional a'SaveMemory''off'linkage N2, donde está el número de observaciones.N La elección de la mejor configuración (menos tiempo) depende de las dimensiones del problema, el número de observaciones y la memoria disponible.'SaveMemory' La configuración predeterminada es una aproximación aproximada de una configuración óptima.'SaveMemory'

Ejemplo: 'SaveMemory','on'

Tipos de datos: char | string

Argumentos de salida

contraer todo

Índices de clúster, devueltos como un vector de columna numérico. tiene tantas filas como, y cada fila de indica la asignación de clúster de la observación correspondiente en.TXTX

Sugerencias

  • Si es o, a continuación, puede producir un árbol de clúster que no es monotónico.'Linkage''centroid''median'linkage Este resultado se produce cuando la distancia de la Unión de dos clústeres y, a un tercer clúster es menor que la distancia entre y.rsrs En este caso, en un dendrograma dibujado con la orientación predeterminada, la ruta de una hoja al nodo raíz toma algunos pasos hacia abajo. Para evitar este resultado, especifique otro valor para.'Linkage' La siguiente imagen muestra un árbol de clústeres no monótono.

    En este caso, el clúster 1 y el clúster 3 se unen en un nuevo clúster, mientras que la distancia entre este nuevo clúster y el clúster 2 es menor que la distancia entre el clúster 1 y el clúster 3.

Algoritmos

Si especifica un valor para el argumento de entrada,ccutoff T = clusterdata(X,c) realiza los siguientes pasos:

  1. Crear un vector de la distancia euclidiana entre pares de observaciones en utilizando.Xpdist

    Y = pdist(X,'euclidean')

  2. Cree un árbol de clúster jerárquico aglomerativo utilizando con el método para calcular la distancia más corta entre los clústeres.Ylinkage'single'

    Z = linkage(Y,'single')

  3. Si, use para definir clústeres desde cuando los valores incoherentes son menores que.0 < c < 2clusterZc

    T = cluster(Z,'Cutoff',c)

  4. Si es un valor entero, use para buscar un máximo de clústeres.c≥ 2clustercZ

    T = cluster(Z,'MaxClust',c)

Funcionalidad alternativa

Si tiene un árbol de clústeres jerárquico (la salida de la función para la matriz de datos de entrada), puede utilizar para realizar clustering aglomerativo y devolver la asignación de clúster para cada observación (fila) en.ZlinkageXclusterZX

Introducido antes de R2006a