K-means Clustering Result Always Changes
26 次查看(过去 30 天)
显示 更早的评论
I'm working on k-means in MATLAB. Here are my codes:
load cobat.txt
k=input('Enter the number of cluster: ');
if k<8
[cidx ctrs]=kmeans(cobat, k, 'dist', 'sqEuclidean');
Z = [cobat cidx]
else
h=msgbox('Must be less than eight');
end
"cobat" is the file of mine and here it looks:
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
My problem is everytime I run the code, it always shows different result, different cluster. How can I keep the clustering result always the same?
0 个评论
采纳的回答
Walter Roberson
2013-5-5
%generate some initial cluster centers according to some deterministic algorithm
%in this case, I construct a space-diagonal equally spaced, but choose your
%own algorithm
minc = min(cobat, 1);
maxc = max(cobat, 1);
nsamp = size(cobat,1);
initialcenters = repmat(minc, nsamp, 1) + bsxfun(@times, (0:nsamp-1).', (maxc - minc) ./ (nsamp-1));
%Once you have constructed the initial centers, cluster using those centers
[cidx ctrs] = kmeans(cobat, k, 'dist', 'sqEuclidean', 'start', initialcenters);
6 个评论
esmat abdallah
2021-11-26
initialcenters = repmat(minc, nsamp, 1) + bsxfun(@times, (0:nsamp-1).', (maxc - minc) ./ (nsamp-1));
please, matlab out an error on this line : "Error using +
Matrix dimensions must agree."
what can i do ??
Walter Roberson
2021-11-26
%generate some initial cluster centers according to some deterministic algorithm
%in this case, I construct a space-diagonal equally spaced, but choose your
%own algorithm
minc = min(cobat, [], 1);
maxc = max(cobat, [], 1);
nsamp = size(cobat,1);
initialcenters = repmat(minc, nsamp, 1) + bsxfun(@times, (0:nsamp-1).', (maxc - minc) ./ (nsamp-1));
%Once you have constructed the initial centers, cluster using those centers
[cidx ctrs] = kmeans(cobat, k, 'dist', 'sqEuclidean', 'start', initialcenters);
更多回答(2 个)
the cyclist
2013-5-4
K-means clustering uses randomness as part of the algorithm Try setting the seed of the random number generator before you start. If you have a relatively new version of MATLAB, you can do this with the rng() command. Put
rng(1)
at the beginning of your code.
2 个评论
Pallavi Saha
2017-9-14
I am facing the same issue inconsistency in the output of fcm. Can anyone help me
3 个评论
Mehmet Volkan Ozdogan
2019-3-28
Hi,
I have a question about rng(). If we use rng() command, K-means algortihm stil repeats until the results are getting convergenced to the best. Is that right?
Thank you
Walter Roberson
2019-3-29
Yes.
rng(SomeParticularNumericSeed)
just ensures that it will always use the same random number sequence provided that no other random numbers are asked for between the rng() call and the kmeans call.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!