¿Cómo escribir un programa en Matlab para el algoritmo de agrupamiento en clústeres K-means?
) es un método básico de clasificación no supervisada, también llamado algoritmo de C-means. Su idea básica es: actualizar el valor de a través del método de iteración. centro de cada grupo uno por uno hasta obtener el mejor resultado de agrupamiento.
Suponiendo que el conjunto de muestras se divide en c categorías, el algoritmo es el siguiente:
(1) Seleccione adecuadamente los centros iniciales de c categorías;
(2) En las iteraciones de In k, para cualquier muestra, la distancia a c centros será la distancia más corta entre la muestra y el centro de la clase.
(3) Utilice métodos como la media para actualizar el centro de la clase;
Esta es la primera vez que usamos el método C-mean para actualizar el centro de esta clase.
(4) Para todos los centros de clúster c, si el valor permanece sin cambios después de actualizar utilizando el método de iteración en (2) (3), la iteración finaliza; de lo contrario, la iteración continúa.
El siguiente es un programa escrito por el autor para dividir dos categorías, que se pueden llamar como una función.
Función
[samp1, samp2]=kmeans(samp);
Como llamada a función, elimina los caracteres de comentario
samp=[11.1506
6.7222
2.3139
5.9018
11.0827
5.7459 p>
13.2174
13.8243
4.8005
0.9370
12.3576];
Muestra set
[l0
l]=size(samp);
Utilice la media para dividir las muestras en dos categorías y luego utilice la media de cada una. categoría como centro del clúster
th0=mean(samp);n1=0;n2=0;c1=0.0;c1=double(c1);c2=c1;for
i=1:lif
muestra(i)lt;th0
c1=c1 muestra(i);n1=n1 1;elsec2=c2 muestra(i);n2=n2 1; endendc1=c1/n1;c2 =c2/n2;
Centro de agrupamiento inicial t=0; cl1=c1; cl2=c2;
c11=c1;
Centro de agrupación while
t==0samp1=zeros(1,l);
samp2=samp1; p>
i=1:lif
abs(muestra(i)-c11)lt; abs(muestra(i)-c22)
muestra1(n1)=muestra (i);
cl1=cl1 muestra(i); n1=n1 1;
c11=cl1/n1; elsesamp2(n2)=muestra(i); >
cl2 =cl2 muestra(i);n2=n2 1;
c22=cl2/n2;endendif
c11==c1
amp ;amp;
p>
c22==c2t=1; endcl1=c11; cl2=c22;
c1=c11; p>end
samp1, samp2 son los resultados de la agrupación.
Lo que se utiliza aquí es la media del valor central inicial, que también se puede determinar empíricamente según la naturaleza del problema, o el conjunto de muestras se divide aleatoriamente en c categorías y la media de cada categoría. se calcula.
El algoritmo k-means necesita conocer el número de categorías de antemano, lo cual es su defecto.