Asked by Elysi Cochin
on 6 May 2013

i used kmeans for clustering similar images.... if i run the code first i get the correct clusters..... but without closing matlab if i execute the second time for the same image, it is clustering different output.... why like that..... what shud i do to get the same output whenever i execute the code... please do reply.....

Answer by Youssef Khmou
on 6 May 2013

Accepted answer

hi, i think this question has been asked before, the reason is that the K-means algorithm starts with random partition so every time you run the code, you get the same result but with different RMSE.

(try to clear the Workspace and re-run ...)

Show 2 older comments

Walter Roberson
on 7 May 2013

Could you indicate

size(repmat(minc, nsamp, 1)) size( bsxfun(@times, (0:nsamp-1).', (maxc - minc) ./ (nsamp-1)) )

Answer by José-Luis
on 6 May 2013

Edited by José-Luis
on 6 May 2013

An option is to reset the random number generator to its initial state every time before running your code:

rng default % ->This is the important bit X = [randn(100,2)+ones(100,2);... randn(100,2)-ones(100,2)]; opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,... 'Distance','city',... 'Replicates',5,... 'Options',opts);

This will always produce the same result, but it sorts of beat the purpose of the function and might produce bad results.

José-Luis
on 6 May 2013

For example:

X = [randn(100,2)+ones(100,2);... randn(100,2)-ones(100,2)]; opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,... 'Distance','city',... 'Replicates',1,... 'Options',opts,... 'start',[0.25 0.25; 0.75 0.75]);

But that does not guarantee that the result will always be the same.

Elysi Cochin
on 7 May 2013

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 0 Comments