西电数据挖掘大作业k-means和k-medoids
Eold=0;
Enew=1000;
while(abs(Enew-Eold)>0.001)
%将所有样本分配到最近的代表点
for i=1:N
for j=1:k
dist(1,j)=norm(sample(i,:)-med(j,:));
end
temp(i,1)=min(dist);
for s=1:k
if(dist(1,s)==temp(i,1))
temp(i,2)=s;
end
end
end
y=temp(:,2);
Eold=sum(temp(:,1));
%随机的选择一个非代表点,生成新的代表点集合
index=index+1;
med_temp=med;
E=zeros(1,k);
for j=1:k
med_temp(j,:)=sample(index,:);
%将所有样本分配到最近的代表点
for i=1:N
for t=1:k
dist(1,t)=norm(sample(i,:)-med_temp(t,:));
end
temp(i,1)=min(dist);
for s=1:k
if(dist(1,s)==temp(i,1))
temp(i,2)=s;
end
end
end
E(1,j)=sum(temp(:,1));
end
Enew=min(E);
for t=1:k
if(E(1,t)==Enew)
obest=t;
end
end
if(Enew<Eold)