**
Matlab–k-means聚类算法实现
**
第一次在CSDN写自己的博客,希望开门大吉 哈哈哈
也希望分享的内容大家能够喜欢。
本次创作内容为-----k-means聚类算法实现。
自己用matlab写的时候,遇到很多问题,一些常见matlab语法等等,查找很多博主分享的知识,获益许多,由此形成了这次的完整代码,运行成功的!
本次编写内容为:
编程实现k-means聚类算法,并将实验结果显示出来。
代码如下,也欢迎大家一起交流,共同学习和进步!
E1 = [0,0]; %数学期望
sigma = [0.9,0.4; 0.4,0.3]; %协方差矩阵
data1 = mvnrnd(E1, sigma, 50);%生成50个样本
E2 = [5,0]; %数学期望
data2 = mvnrnd(E2, sigma, 50);%生成50个样本
E3 = [3,3]; %数学期望
data3 = mvnrnd(E3, sigma, 50);%生成50个样本
%合并数组
data = [data1; data2; data3];
save mydata data;%保存为.mat文件
m=load('mydata.mat');%加载.mat文件
x = m.data(:,1);%读取第一列数据
y= m.data(:,2);%读取第二列数据
plot(x,y,'.');%绘图
执行上述代码,生成如下聚类图:
接下来,编写程序实现k-means聚类算法,随机初始化聚类中心,显示聚类结果,不同的颜色代表不同的类别,代码如下:
load mydata
[idx,C] = kmeans(data,3);%这里k = 3
[hang, lie] = size(C);
colo = ('rgbk'); %颜色属性,可以增加
sign = ('o*pd'); % 点标记属性,可以增加
figure
gscatter(data(:,1),data(:,2),idx,'rgbk')
hold on
for i = 1:hang
plot(C(i,1),C(i,2),[colo(i),sign(i)],'MarkerSize',15)
end
执行上述代码,结果下如下:
第一篇博客就这样结束啦!