资源简介

之前学习并详细总结了一篇k-均值(k-means)算法文章,于是顺便提供Matlab代码实现,这份代码通过Matlab随机生成三组数据,然后进行聚类实现。还有另一份较复杂的实现代码可动态实现k-均值的聚类过程,具体可查看个人CSDN资源

资源截图

代码片段和文件信息


% 第一组数据  
mu1=[0 0 ];  %均值  
S1=[.1 0 ;0 .1];  %协方差  
data1=mvnrnd(mu1S1100);   %产生高斯分布数据  
%第二组数据  
mu2=[1.25 1.25 ];  
S2=[.1 0 ;0 .1];  
data2=mvnrnd(mu2S2100);  
% 第三组数据  
mu3=[-1.25 1.25 ];  
S3=[.1 0 ;0 .1];  
data3=mvnrnd(mu3S3100);  
% 显示数据  
plot(data1(:1)data1(:2)‘b+‘);  
hold on;  
plot(data2(:1)data2(:2)‘r+‘);  
plot(data3(:1)data3(:2)‘g+‘);  
grid on;  
%  三类数据合成一个不带标号的数据类  
data=[data1;data2;data3];   
N=3;%设置聚类数目  
[mn]=size(data);  
pattern=zeros(mn+1);  
center=zeros(Nn);%初始化聚类中心  
pattern(:1:n)=data(::);  
for x=1:N  
    center(x:)=data( randi(3001):);%第一次随机产生聚类中心  
end  
while 1  
distence=zeros(1N);  
num=zeros(1N);  
new_center=zeros(Nn);  
   
for x=1:m  
    for y=1:N  
    distence(y)=norm(data(x:)-center(y:));%计算到每个类的距离  
    end  
    [~ temp]=min(distence);%求最小的距离  
    pattern(xn+1)=temp;           
end  
k=0;  
for y=1:N  
    for x=1:m  
        if pattern(xn+1)==y  
           new_center(y:)=new_

评论

共有 条评论