
Error al plotear
Publicado por Manuel (5 intervenciones) el 14/06/2018 23:30:47
Estoy realizando un ejemplo de K-means. Tengo problemas al plotear las nuevas posición de los centroides. No me aparecen.
Esto es lo que hice:
Pd: Me salen en el plot, solo los datos y no los centroides (m).
Esto es lo que hice:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
clc; clear all;
%condiciones iniciales
x=[0 0 0 1 1 1 2 3 4 5 5 5 6 6 6]';
y=[1 2 3 1.5 2 2.5 2 2 2 1.5 2 2.5 1 2 3]';
x1=x+7; y1=y.*2; x2=x1+7; y2=y.*(-2);
x0=[x;x1;x2];
y0=[y;y1;y2];
X=[x0,y0]; %datos a agrupar
v=[2 4; 2.3 2]; %posicion de centroides iniciales
%c=2;
%Se calcula las distancias
[n,N]=size(X); %matriz de datos
[no,c]=size(v); %matriz de centroides
for i=1:c
for j=1:N
sumaa=0;
for k=1:no
dis(k)=(X(k,j)-v(k,i))^2;
sumaa=sumaa+dis(k);
end
d(i,j)=sqrt(sumaa);
end
end
%se actualiza la matriz de pertenecia
for j=1:N
if d(1,j)>d(2,j);
U(1,j)=0;
U(2,j)=1;
else
U(1,j)=1;
U(2,j)=0;
end
end
%se calcula la media de los valores de las muestras(matriz de centroides)
suma=zeros(n,c);
cantidad=zeros(c,1);
%cantidad de los valores
for C=1:no
for j=1:N
if U(C,j)==1
cantidad(C,1)=cantidad(C,1)+1;
suma(:,C)=suma(:,C)+X(:,j);
end
end
media(:,C)=suma(:,C)/cantidad(C,1);
end
%se actualiza el vector centroide
m=media;
% %dibuja
figure(1)
plot(X(:,1),X(:,2),'b.','MarkerSize',15);
hold on
plot(m(:,1),m(:,2),'kx', 'color', 'r');
Pd: Me salen en el plot, solo los datos y no los centroides (m).
Valora esta pregunta


0