cluster
Crear grupos aglomerativos a partir de enlaces
Sintaxis
Descripción
define grupos a partir de un árbol aglomerativo de grupos jerárquicos T
= cluster(Z
,'Cutoff'
,C
)Z
. La entrada Z
es la salida de la función linkage
para una matriz de datos de entrada X
. cluster
corta Z
en grupos, utilizando C
como umbral para los coeficientes de inconsistencia (o valores inconsistent
) de los nodos del árbol. La salida T
contiene las asignaciones de grupo de cada observación (fila de X
).
Ejemplos
Definir grupos especificando la profundidad
Realice un agrupación aglomerativa en datos generados de manera aleatoria y evalúe los valores inconsistentes hasta una profundidad de cuatro por debajo de cada nodo.
Genere de manera aleatoria los datos de muestra.
rng('default'); % For reproducibility X = [(randn(20,2)*0.75)+1; (randn(20,2)*0.25)-1];
Cree una gráfica de dispersión de los datos.
scatter(X(:,1),X(:,2));
title('Randomly Generated Data');
Cree un árbol de grupos jerárquicos con el método de enlace ward
.
Z = linkage(X,'ward');
Cree un dendrograma de los datos.
dendrogram(Z)
La gráfica de dispersión y el dendrograma parecen mostrar dos grupos en los datos.
Agrupe los datos con un umbral de 3 para el coeficiente de inconsistencia y busque una profundidad de 4 por debajo de cada nodo. Represente los grupos resultantes.
T = cluster(Z,'cutoff',3,'Depth',4); gscatter(X(:,1),X(:,2),T)
cluster
identifica dos grupos en los datos.
Agrupar datos mediante el criterio de distancia
Realice una agrupación aglomerativa en el conjunto de datos fisheriris
utilizando 'distance'
como criterio para definir los grupos. Visualice las asignaciones de grupos de los datos.
Cargue el conjunto de datos fisheriris
.
load fisheriris
Visualice una gráfica de dispersión 2D de los datos utilizando especies como variable de agrupación. Especifique los colores y símbolos de los marcadores de las tres especies diferentes.
gscatter(meas(:,1),meas(:,2),species,'rgb','do*') title("Actual Clusters of Fisher's Iris Data")
Cree un árbol de grupos jerárquicos con el método 'average'
y la métrica 'chebychev'
.
Z = linkage(meas,'average','chebychev');
Agrupe 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
⋮
T
contiene números que corresponden a las asignaciones de grupos. Halle el número de clases que identifica cluster
.
length(unique(T))
ans = 3
cluster
identifica tres clases para los valores especificados de cutoff
y Criterion
.
Visualice una gráfica de dispersión 2D de los resultados de la agrupación utilizando T
como variable de agrupación. Especifique los colores y símbolos de los marcadores de las tres clases diferentes.
gscatter(meas(:,1),meas(:,2),T,'rgb','do*') title("Cluster Assignments of Fisher's Iris Data")
La agrupación identifica correctamente que la clase setosa (clase 2) pertenece a un grupo distinto, pero distingue mal entre las clases versicolor y virginica (clases 1 y 3, respectivamente). Tenga en cuenta que la gráfica de dispersión etiqueta las clases utilizando los números contenidos en T
.
Comparar asignaciones de grupos con clases
Encuentre un máximo de tres grupos en el conjunto de datos fisheriris
y compare las asignaciones de grupos de las flores con su clasificación conocida.
Cargue los datos de muestra.
load fisheriris
Cree un árbol de grupos jerárquicos con el método 'average'
y la métrica 'chebychev'
.
Z = linkage(meas,'average','chebychev');
Encuentre un máximo de tres grupos en los datos.
T = cluster(Z,'maxclust',3);
Cree un dendrograma de Z
. Para ver los tres grupos, utilice 'ColorThreshold'
con un corte a medio camino entre el antepenúltimo y el penúltimo enlace.
cutoff = median([Z(end-2,3) Z(end-1,3)]);
dendrogram(Z,'ColorThreshold',cutoff)
Muestre las dos últimas filas de Z
para ver cómo se combinan los tres grupos en uno. linkage
combina el grupo 293 (azul) con el grupo 297 (rojo) para formar el grupo 298 con un enlace de 1.7583
. linkage
combina entonces el grupo 296 (verde) con el grupo 298.
lastTwo = Z(end-1:end,:)
lastTwo = 2×3
293.0000 297.0000 1.7583
296.0000 298.0000 3.4445
Compruebe cómo las asignaciones de los grupos corresponden a las tres especies. Por ejemplo, uno de los grupos contiene 50
flores de la segunda especie y 40
flores de la tercera especie.
crosstab(T,species)
ans = 3×3
0 0 10
0 50 40
50 0 0
Agrupar datos y representar el resultado
Genere de forma aleatoria datos de muestra con 20.000 observaciones.
rng('default') % For reproducibility X = rand(20000,3);
Cree un árbol de grupos jerárquicos con el método de enlace ward
. En este caso, la opción 'SaveMemory'
de la función clusterdata
se establece en 'on'
de forma predeterminada. En general, especifique el mejor valor para 'SaveMemory'
en función de las dimensiones de X
y de la memoria disponible.
Z = linkage(X,'ward');
Agrupe los datos en un máximo de cuatro grupos y represente el resultado.
c = cluster(Z,'Maxclust',4);
scatter3(X(:,1),X(:,2),X(:,3),10,c)
cluster
identifica cuatro grupos de los datos.
Argumentos de entrada
Z
— Árbol aglomerativo de grupos jerárquicos
matriz numérica
Árbol aglomerativo de grupos jerárquicos que es la salida de la función linkage
, especificada como matriz numérica. En el caso de una matriz de datos de entrada X
con m filas (u observaciones), linkage
devuelve una matriz Z
de 3 por (m – 1). Para obtener una explicación de cómo linkage
crea el árbol de grupos, consulte Z
.
Ejemplo: Z = linkage(X)
, donde X
es una matriz de datos de entrada
Tipos de datos: single
| double
C
— Umbral para definir grupos
escalar positivo | vector de escalares positivos
Umbral para definir grupos, especificado como un escalar positivo o un vector de escalares positivos. cluster
utiliza C
como umbral para las alturas o los coeficientes de inconsistencia de los nodos, en función del criterion
para definir los grupos en un árbol de grupos jerárquicos.
Si el criterio para definir los grupos es
'distance'
,cluster
agrupa todas las hojas situadas en un nodo o por debajo de él en un grupo, siempre que la altura del nodo sea inferior aC
.Si el criterio para definir los grupos es
'inconsistent'
, los valoresinconsistent
de un nodo y de todos sus subnodos deben ser menores queC
para quecluster
los agrupe en un grupo.cluster
comienza en la raíz del árbol de grupoZ
y desciende hasta que encuentra un nodo cuyo valorinconsistent
es menor que el umbralC
, y cuyos subnodos (o descendientes) tienen valores inconsistentes inferiores aC
. A continuación,cluster
agrupa todas las hojas situadas en el nodo o por debajo de él en un grupo (o en un elemento singular si el propio nodo es una hoja).cluster
sigue cada rama del árbol hasta que todos los nodos hoja están agrupados.
Ejemplo: cluster(Z,'Cutoff',0.5)
Tipos de datos: single
| double
D
— Profundidad para calcular valores inconsistentes
2 (predeterminado) | escalar numérico
Profundidad para calcular valores inconsistentes, especificada como un escalar numérico. cluster
evalúa los valores inconsistentes buscando una profundidad D
por debajo de cada nodo.
Ejemplo: cluster(Z,'Cutoff',0.5,'Depth',3)
Tipos de datos: single
| double
criterion
— Criterio para definir grupos
'inconsistent'
(predeterminado) | 'distance'
Criterio para definir grupos, especificado como 'inconsistent'
o 'distance'
.
Si el criterio para definir los grupos es 'distance'
, cluster
agrupa todas las hojas situadas en un nodo o por debajo de él en un grupo (o en un elemento singular si el propio nodo es una hoja), siempre que la altura del nodo sea inferior a C
. La altura de un nodo en un árbol representa la distancia entre los dos subnodos que se fusionan en él. Si se especifica 'distance'
, se obtienen grupos que corresponden a una sección horizontal de la gráfica dendrogram
de Z
.
Si el criterio para definir los grupos es 'inconsistent'
, cluster
agrupa un nodo y todos sus subnodos en un grupo, siempre que los coeficientes de inconsistencia (o valores inconsistent
) del nodo y los subnodos sean menores que C
. Especificar 'inconsistent'
es equivalente a cluster(Z,'Cutoff',C)
.
Ejemplo: cluster(Z,'Cutoff',0.5,'Criterion','distance')
Tipos de datos: char
| string
N
— Número máximo de grupos
entero positivo | vector de enteros positivos
Número máximo de grupos que se desean formar, especificado como un entero positivo o un vector de enteros positivos. cluster
crea un máximo de N
grupos, utilizando 'distance'
como criterio para definirlos. La altura de cada nodo del árbol representa la distancia entre los dos subnodos que se fusionan en él. cluster
encuentra la altura más pequeña a la que un corte horizontal a través del árbol dejará N
grupos o menos. Para obtener más información, consulte Especificar grupos arbitrarios.
Ejemplo: cluster(Z,'MaxClust',5)
Tipos de datos: single
| double
Argumentos de salida
T
— Asignación de grupos
vector numérico | matriz numérica
Asignación de grupos, devuelta como vector numérico o matriz. En el caso del árbol de grupos jerárquicos Z
de (m – 1) por 3 (la salida de linkage
dada la entrada X
), T
contiene las asignaciones de grupos de las m filas (observaciones) de X
.
El tamaño de T
depende del tamaño correspondiente de C
o N
.
Si
C
es un escalar positivo,T
es un vector con longitud m.Si
N
es un entero positivo,T
es un vector con longitud m.Si
C
es un vector de escalares positivos de longitud l,T
es una matriz de m por l con una columna por cada valor deC
.Si
N
es un vector de enteros positivos de longitud l,T
es una matriz de m por l con una columna por cada valor deN
.
Funcionalidad alternativa
Si tiene una matriz de datos de entrada X
, puede utilizar clusterdata
para realizar una agrupación aglomerativa y devolver índices de grupo para cada observación (fila) en X
. La función clusterdata
realiza todos los pasos necesarios, por lo que no necesita ejecutar las funciones pdist
, linkage
y cluster
por separado.
Historial de versiones
Introducido antes de R2006a
Consulte también
clusterdata
| cophenet
| dendrogram
| inconsistent
| kmeans
| linkage
| pdist
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)