k - means聚类结果总是变化

77(30天)
我工作在MATLAB的k - means。下面是我的代码:
负载cobat.txt
k =输入(的输入集群的数量:);
如果k < 8
(cidx点击率数据)= kmeans (cobat k“距离”,“sqEuclidean”);
Z = [cobat cidx]
其他的
h =对话框(“必须小于8”);
结束
“cobat”是我的文件,这里看起来:
65 80 55
45 75 78
36 67 66
65 78 88
79 80 72
77 85 65
76 77 79
65 67 88
85 76 88
56 76 65
我的问题是每次我运行代码,它总是显示不同的结果,不同的集群。我怎么能保持聚类结果总是一样的?

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2013年5月5日
%生成一些初始聚类中心根据一些确定性算法
%在这种情况下,我构造一个space-diagonal等距的,但选择你
%的算法
minc = min (cobat, 1);
maxc = max (cobat, 1);
nsamp =大小(cobat, 1);
nsamp initialcenters = repmat(明克1)+ bsxfun (@times, (0: nsamp-1)。”,(maxc - minc)。/ (nsamp-1));
%一旦构造初始中心,集群使用这些中心
(cidx点击率数据)= kmeans (cobat k“距离”,“sqEuclidean”,“开始”,initialcenters);
6个评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年11月26日
%生成一些初始聚类中心根据一些确定性算法
%在这种情况下,我构造一个space-diagonal等距的,但选择你
%的算法
minc = min (cobat [], 1);
maxc = max (cobat [], 1);
nsamp =大小(cobat, 1);
nsamp initialcenters = repmat(明克1)+ bsxfun (@times, (0: nsamp-1)。”,(maxc - minc)。/ (nsamp-1));
%一旦构造初始中心,集群使用这些中心
(cidx点击率数据)= kmeans (cobat k“距离”,“sqEuclidean”,“开始”,initialcenters);

登录置评。

更多的答案(2)

骑自行车的人
骑自行车的人 2013年5月4日
k - means聚类算法使用随机算法的一部分尝试设置随机数生成器的种子在你开始。MATLAB的如果你有一个相对较新的版本,你可以与rng()命令。把
rng (1)
代码的开始。
2的评论
骑自行车的人
骑自行车的人 2013年5月4日
类型
> > doc randstream
看怎么做在你的版本。

登录置评。


帕拉维·埃呀尔萨哈
帕拉维·埃呀尔萨哈 2017年9月14日
我面临着同样的问题在fcm的输出不一致。谁能帮我
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年3月29日
是的。
rng (SomeParticularNumericSeed)
确保它总是使用相同的随机数序列提供之间不要求其他随机数rng()调用和kmeans调用。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!