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.

cluster

Construir clusters aglomerativos a partir de vínculos

Descripción

T = cluster(Z,'Cutoff',C) define los clústeres de un árbol de clústeres jerárquico aglomerativo.Z La entrada es la salida de la función para una matriz de datos de entrada. corta en clústeres, utilizando como umbral para los coeficientes de inconsistencia (o valores) de los nodos del árbol.ZlinkageXclusterZCinconsistent La salida contiene asignaciones de clúster de cada observación (fila de).TX

ejemplo

T = cluster(Z,'Cutoff',C,'Depth',D) evalúa los valores mirando a una profundidad debajo de cada nodo.inconsistentD

ejemplo

T = cluster(Z,'Cutoff',C,'Criterion',criterion) USA (valor predeterminado) o como para definir clústeres. debe ser menor que para definir clústeres.'inconsistent''distance'criterioncriterionCcluster

ejemplo

T = cluster(Z,'MaxClust',N) define un máximo de clústeres utilizando como criterio para definir clústeres.N'distance'

Ejemplos

contraer todo

Realice clustering aglomerativo en datos generados aleatoriamente evaluando valores incoherentes a una profundidad de cuatro debajo de cada nodo.

Genere aleatoriamente los datos de muestra.

rng('default'); % For reproducibility X = [(randn(20,2)*0.75)+1;     (randn(20,2)*0.25)-1];

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

scatter(X(:,1),X(:,2)); title('Randomly Generated Data');

Cree un árbol de clústeres jerárquico mediante el método de vinculación.ward

Z = linkage(X,'ward');

Cree una gráfica de dendrograma de los datos.

dendrogram(Z)

El gráfico de dispersión y el diagrama de dendrograma parecen mostrar dos clústeres en los datos.

Agrupara los datos usando un umbral de 3 para el coeficiente de inconsistencia y mirando a una profundidad de 4 debajo de cada nodo. Trace los clústeres resultantes.

T = cluster(Z,'cutoff',3,'Depth',4); gscatter(X(:,1),X(:,2),T)

identifica dos clústeres en los datos.cluster

Realice clustering aglomerativo en el conjunto de datos utilizando como criterio para definir clústeres.fisheriris'distance' Visualice las asignaciones de clúster de los datos.

Cargue el conjunto de datos.fisheriris

load fisheriris

Visualice una gráfica de dispersión 2-D de los datos utilizando especies como variable de agrupamiento. Especifique los colores de marcador y los símbolos de marcador para las tres especies diferentes.

gscatter(meas(:,1),meas(:,2),species,'rgb','do*') title("Actual Clusters of Fisher's Iris Data")

Cree un árbol de clústeres jerárquico mediante el método y la métrica.'average''chebychev'

Z = linkage(meas,'average','chebychev');

Agruparse los datos utilizando un umbral de 1,5 para el criterio.'distance'

T = cluster(Z,'cutoff',1.5,'Criterion','distance')
T = 150×1

     2
     2
     2
     2
     2
     2
     2
     2
     2
     2
      ⋮

contiene números que corresponden a las asignaciones de clúster.T Busque el número de clases que identifica.cluster

length(unique(T))
ans = 3 

identifica tres clases para los valores especificados de y.clustercutoffCriterion

Visualice una gráfica de dispersión en 2-D de los resultados de clustering utilizando como variable de agrupamiento.T Especifique los colores de marcador y los símbolos de marcador para las tres clases diferentes.

gscatter(meas(:,1),meas(:,2),T,'rgb','do*') title("Cluster Assignments of Fisher's Iris Data")

La agrupación en clústeres identifica correctamente la clase setosa (clase 2) como perteneciente a un clúster distinto, pero distingue mal entre las clases versicolor y virginica (clases 1 y 3, respectivamente). Tenga en cuenta que el gráfico de dispersión etiqueta las clases utilizando los números contenidos en.T

Busque un máximo de tres clústeres en el conjunto de datos y compare las asignaciones de clúster de las flores con su clasificación conocida.fisheriris

Cargue los datos de ejemplo.

load fisheriris

Cree un árbol de clústeres jerárquico mediante el método y la métrica.'average''chebychev'

Z = linkage(meas,'average','chebychev');

Busque un máximo de tres clústeres en los datos.

T = cluster(Z,'maxclust',3);

Cree una trama de dendrograma de.Z Para ver los tres clústeres, utilíllese con un corte a mitad de camino entre los vínculos de la tercera desde la última y la segunda desde la última.'ColorThreshold'

cutoff = median([Z(end-2,3) Z(end-1,3)]); dendrogram(Z,'ColorThreshold',cutoff)

Visualice las dos últimas filas para ver cómo se combinan los tres clústeres en uno. combina el clúster 293rd (azul) con el 297th (rojo) Cluster para formar el clúster 298th con una vinculación de. a continuación, combina el clúster 296th (verde) con el clúster 298th.Zlinkage1.7583linkage

lastTwo = Z(end-1:end,:)
lastTwo = 2×3

  293.0000  297.0000    1.7583
  296.0000  298.0000    3.4445

Vea cómo las asignaciones de clústeres corresponden a las tres especies. Por ejemplo, uno de los racimos contiene flores de la segunda especie y flores de la tercera especie.5040

crosstab(T,species)
ans = 3×3

     0     0    10
     0    50    40
    50     0     0

Genere aleatoriamente datos de muestra con 20.000 observaciones.

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

Cree un árbol de clústeres jerárquico mediante el método de vinculación.ward En este caso, la opción de la función se establece de forma predeterminada.'SaveMemory'clusterdata'on' En general, especifique el mejor valor según las dimensiones y la memoria disponible.'SaveMemory'X

Z = linkage(X,'ward');

Agruparse los datos en un máximo de cuatro grupos y trazar el resultado.

c = cluster(Z,'Maxclust',4); scatter3(X(:,1),X(:,2),X(:,3),10,c)

identifica cuatro grupos en los datos.cluster

Argumentos de entrada

contraer todo

Árbol de clúster jerárquico aglomerativo que es la salida de la función, especificada como una matriz numérica.linkage Para una matriz de datos de entrada con filas (u observaciones), devuelve unXmlinkage (m – 1)-por-3 matriz.Z Para obtener una explicación de cómo crea el árbol del clúster, consulte.linkageZ

Ejemplo: , donde se encuentra una matriz de datos de entradaZ = linkage(X)X

Tipos de datos: single | double

Umbral para definir clústeres, especificado como un escalar positivo o un vector de escalares positivos. utiliza como umbral para las alturas o los coeficientes de inconsistencia de los nodos, en función de la definición de clústeres en un árbol de clústeres jerárquico.clusterCcriterion

  • Si el criterio para definir clústeres es, a continuación, agrupa todas las hojas en o por debajo de un nodo en un clúster, siempre que la altura del nodo es menor que.'distance'clusterC

  • Si el criterio para definir clústeres es, los valores de un nodo y todos sus subnodos deben ser menores que para agruparlos en un clúster. comienza desde la raíz del árbol del clúster y los pasos hacia abajo a través del árbol hasta que encuentra un nodo cuyo valor es menor que el umbral, y cuyos subnodos (o descendientes) tienen valores incoherentes menores que.'inconsistent'inconsistentCclusterclusterZinconsistentCC A continuación, agrupa todas las hojas en o debajo del nodo en un clúster (o un singleton si el nodo en sí es una hoja). sigue todas las ramas del árbol hasta que todos los nodos de hoja estén en clústeres.clustercluster

Ejemplo: cluster(Z,'Cutoff',0.5)

Tipos de datos: single | double

Profundidad para calcular valores incoherentes, especificados como un escalar numérico. evalúa valores incoherentes mirando a una profundidad debajo de cada nodo.clusterD

Ejemplo: cluster(Z,'Cutoff',0.5,'Depth',3)

Tipos de datos: single | double

Criterio para definir clústeres, especificado como o.'inconsistent''distance'

Si el criterio para definir clústeres es, a continuación, agrupa todas las hojas en o por debajo de un nodo en un clúster (o un singleton si el nodo en sí es una hoja), siempre que la altura del nodo es menor que.'distance'clusterC La altura de un nodo en un árbol representa la distancia entre los dos subnodos que se fusionan en ese nodo. Especificación de resultados en clústeres que corresponden a un segmento horizontal de la gráfica de.'distance'DendrogramaZ

Si el criterio para definir clústeres es, a continuación, agrupa un nodo y todos sus subnodos en un clúster, siempre que los coeficientes de inconsistencia (o valores) del nodo y subnodos sean menores que.'inconsistent'clusterinconsistentC Especificar equivale a.'inconsistent'cluster(Z,'Cutoff',C)

Ejemplo: cluster(Z,'Cutoff',0.5,'Criterion','distance')

Tipos de datos: char | string

Número máximo de clústeres a formar, especificado como un entero positivo o un vector de enteros positivos. construye un máximo de clústeres, utilizando como criterio para definir clústeres.clusterN'distance' La altura de cada nodo del árbol representa la distancia entre los dos subnodos combinados en ese nodo. encuentra la altura más pequeña en la que un corte horizontal a través del árbol dejará o menos clústeres.clusterN Vea para más detalles.Especifique clústeres arbitrarios

Ejemplo: cluster(Z,'MaxClust',5)

Tipos de datos: single | double

Argumentos de salida

contraer todo

Asignación de clúster, devuelta como un vector numérico o matriz. Para el (m – 1)-por-3 árbol de clúster jerárquico (la salida de entrada dada), contiene las asignaciones de clúster de las filas (observaciones) de.ZlinkageXTmX

El tamaño depende del tamaño correspondiente de o.TCN

  • Si es un escalar positivo, entonces es un vector de longitud.CTm

  • Si es un entero positivo, entonces es un vector de longitud.NTm

  • Si es un vector de longitud de escalares positivos, entonces es una-por-matriz con una columna por valor en.ClTmlC

  • Si es un vector de longitud de enteros positivos, entonces es una-por-matriz con una columna por valor en.NlTmlN

Funcionalidad alternativa

Si tiene una matriz de datos de entrada, puede usar para realizar clústeres aglomerativos y devolver índices de clúster para cada observación (fila) en.XclusterdataX La función realiza todos los pasos necesarios para usted, por lo que no es necesario ejecutar el, y funciones por separado.clusterdatapdistlinkagecluster

Introducido antes de R2006a