Académique Documents
Professionnel Documents
Culture Documents
Javier Corredor
Objetivo: identificar los elementos para el cálculo del funcional c-means.
Considerando el capítulo 4:Fuzzy Clustering de las notas de clase, se busca minimizar el funcional
Observar que para cada cluster (c) se recorren todos los datos (N), calculando una distancia entre el
cluster actual y elemento actual
clear all;
c=2;
N=2;
z1=[2;3];z2=[7;2];v1=[2;1];v2=[5;3];
Z=[z1 z2];% Matriz de datos
V=[v1 v2];% Matriz de centros de los cluster
clf; grid on;
hold on;
xlim([0 9]);
ylim([0 5]);
h=plot(Z(1,:),Z(2,:),'o','color','blue');
plot(V(1,:),V(2,:),'x','color','red')
title('z1 y z2 son los datos a clasificar. V1 y V2 los centros de dos clusters')
text(z1(1),z1(2)+0.2,'z_1','color','blue')
text(z2(1),z2(2)+0.2,'z_2','color','blue')
text(v1(1),v1(2)+0.2,'\bf V_1','color','red')
text(v2(1),v2(2)+0.2,'\bf V_2','color','red')
Calculamos el funcional para los datos z1 y z2, donde los centros de los cluster son v1 y v2. Para esto,
es necesario calcular la distancia , que se define como:
• Como se debería modificar el código para definir una matriz U, donde se define un partición hard y
una difusa sin restricción?
• Cómo se define la norma de Mahalonobis?
A continuación se presenta el cálculo del funcional c-means (se muestra de manera ilustrativa),
donde
for c=1:2
for k=1:2
D(c,k) = (Z(:,k)-V(:,c))'*A*(Z(:,k)-V(:,c)); % norma
Du(c,k) = U(c,k).^m*D(c,k); %
end
end
D
Du
J=sum(sum(Du))
Calcular el funcional para vectores del cluster y , cercanos a los vectores a clasificar y .
clear D Du;
for c=1:2
for k=1:2
D(c,k) = (Z1(:,k)-V(:,c))'*A*(Z1(:,k)-V(:,c));
Du(c,k) = U(c,k).^m*D(c,k);
end
end
D
Du
J1=sum(sum(Du))
• Para qué sirve el parámetro , qué significa un valor cercano a 1? y un valor grande? y cero?
help initfcm
help stepfcm
help fcm
help distfcm
%fcmdemo
%findcluster
Referencias
[Babuska'17] Robert Babuska and Jens Kober, Knowlege-Based Control Systems, Lecture Notes, V
2015-1-2107