Red de conocimiento informático - Material del sitio web - Cómo utilizar Matlab para realizar análisis de conglomerados tipo R

Cómo utilizar Matlab para realizar análisis de conglomerados tipo R

El objetivo de este artículo es presentar cómo utilizar Matlab para el análisis de conglomerados. Si tiene alguna pregunta que deba responderse, deje un mensaje y el autor hará todo lo posible para responderla.

Contenido

Demostrar cómo utilizar MATLAB para el análisis de conglomerados

Generar un mapa de distribución bidimensional aleatorio con tres centros

K - Agrupación de medias

Agrupación jerárquica

Revisión del método K-medias

Mostrar resultados de clasificación

Uso del modelo de distribución de mezcla gaussiana Análisis de conglomerados

Encuentre el número óptimo de categorías mediante el criterio AIC

Demuestre cómo usar MATLAB para el análisis de conglomerados

Utilice agrupamiento jerárquico y agrupamiento jerárquico respectivamente, agrupamiento de K-medias y modelo de mezcla gaussiana y luego compare los resultados de los tres

Genere un gráfico de distribución bidimensional aleatorio con tres centros

Utilice distribución gaussiana (normal)

p>

Generar aleatoriamente 3 centros y desviaciones estándar

s = rng(5,'v5normal');

mu = round((rand(3,2)- 0.5 )*19) 1;

sigma = round(rand(3, 2)*40)/ 10 1;

X = [mvnrnd(mu(1,:), sigma (1,:),200); ...

mvnrnd(mu(2,:), sigma(2,:), 300 ...

mvnrnd ( mu(3,:),sigma(3,:),400)];

Dibujar un gráfico

P1 = figura; clf;

dispersión( X(:,1),X(:,2),10,'ro');

title('Gráfico de dispersión de muestra de investigación')

Clase de agrupamiento de media K

Utilice la distancia euclidiana tradicional para separar distancias en dos clases

[cidx2, cmeans2, sumd2, D2] = kmeans(X, 2, 'dist', 'sqEuclidean') ;

P2 = figura; clf;

[silh2, h2] = silueta(X, cidx2, 'sqeuclidean');

Visto desde la parte superior de la figura de silueta, no. 2 tienen un mejor rendimiento, pero algunos datos de la categoría 1 tienen un rendimiento deficiente. Un número importante de puntos están por debajo de 0,8.

Agrupación jerárquica

eucD = pdist(X,'euclidean');

clustTreeEuc = linkage(eucD,'average');

cophenet(clustTreeEuc, eucD);

P3 = figura; clf;

[h, nodos] = dendrograma(clustTreeEuc, 20);

conjunto (gca,'TickDir','out','TickLength',[.002 0],'XTickLabel',[]);

Puedes elegir el número de nodos que se muestran en el dendrograma, aquí elige 20 .

Los resultados muestran que los datos se pueden dividir en tres categorías

Revisión del método K-means

Cambiar los datos en tres categorías

[cidx3, cmeans3, sumd3 , D3] = kmeans(X, 3, 'dist', 'sqEuclidean');

P4 = figura;

[silh3, h3] = silueta(X, cidx3 , 'sqeuclidean');

Los resultados que se muestran en la figura son una ligera mejora con respecto a los resultados anteriores.

Mostrar resultados de clasificación

P5 = figura; clf

ptsymb = {'bo', 'ro', 'go', ', mo', ' c '};

MarkFace = {[0 0 1], [.8 0 0], [0 .5 0]}; para i =1:3

clust = find(cidx3 == i

plot(X(clust, 1), X(clust, 2), ptsymb{i} , 'MarkerSize', 3, 'MarkerFace', MarkFace{i}, 'MarkerEdgeColor', 'negro'

plot(cmeans3(i, 1), cmeans3(i, 2), ptsymb{); i}, 'MarkerSize', 10, 'MarkerFace', MarkFace{i});

end

Cerrar

Usar el modelo de distribución de mezcla gaussiana para el análisis de agrupamiento.

Muestra los resultados de Contour usando el mapa de distribución, el mapa de calor y el mapa de probabilidad respectivamente

Contour

options = statset('Display', 'off');

gm = gmdistribution.fit(X, 3, 'Opciones', opciones);

P6 = figura; clf

dispersión(X(:, 1) , [-15 15], [-15 10]);

esperar

P7 = figura; clf

dispersión(X(:, 1) , X(:2),10,'ro');

espera

ezsurf(@(x,y) pdf(gm,[x,y]),[ - 15 15], [-15 10]);

mantener desactivado

vista(33, 24)

Termograma

clúster1 = (cidx3 == 1);

cluster3 = (cidx3 == 2);

Por observación, el segundo tipo de método K-medias es el tercer tipo de gm

cluster2 = (cidx3 == 3);

Calcular probabilidad de clasificación

P = posterior(gm,X);

P8 = figura ; clf

plot3(X(cluster1, 1), X(cluster1, 2), P(cluster1, 1), 'r.'

cuadrícula activada; espera

plot3(X(cluster2, 1), X(cluster2, 2), P(cluster2, 2), .'bo')

plot3(X(cluster3, 1), , P(cluster3, 3), 'g*')

legend('Clase 1', 'Clase 2', 'Clase 3', 'Ubicación', 'NW')

clrmap = jet (80); mapa de colores(clrmap(9:72,:))

p>

ylabel(colorbar,'Component 1 Posterior Probability')

view(-45, 20);

El valor de probabilidad del componente puntual de la categoría 3 es bajo y puede ser necesario Se analizan otros datos.

Gráfico de probabilidad

P9 = figura; clf

[~, orden] = sort(P(:, 1));

plot(1:tamaño(X,1),P(orden,1),'r-',1:tamaño(X,1),P(orden,2),'b-',1:tamaño(X ,1),P(order,3),'y-');

legend({'Puntuación del grupo 1' 'Puntuación del grupo 2' 'Puntuación del grupo 3'}, 'ubicación', 'NW ');

ylabel('Puntuación de membresía del clúster');

xlabel('Ranking de puntos');

Encontrar el número óptimo de clasificaciones a través del AIC. estándar

La mayor ventaja del método de modelado de mezclas gaussianas es que proporciona un estándar para el efecto de clasificación

AIC = zeros(1, 4);

NlogL = AIC;

GM = celda(1, 4);

para k = 1:4

GM{k} = gmdistribution.fit(X , k);

AIC(k) = GM{k}.NlogL;

Fin

[minAIC, numComponents] = min(AIC); /p>

Fin

p>

Según el estándar AIC, el número óptimo de categorías es: 3 y el valor AIC correspondiente es: 8647.63

Posdata

(1) pluskid señala que el valor inicial del algoritmo K-means fue significativo para los resultados, pero no se encontraron resultados similares en tiempo de ejecución. Quizás Mathworks optimizó el algoritmo. Examinaré más de cerca el código cuando tenga la oportunidad y publicaré los resultados.

Reimpreso únicamente como referencia, los derechos de autor pertenecen al autor original.