value changes when running each time
Mostrar comentarios más antiguos
x=imread('im9.bmp');
HSV = rgb2hsv(x);
H = HSV(:,:,1); H = H(:);
S = HSV(:,:,2); S = S(:);
V = HSV(:,:,3); V = V(:);
idx = kmeans([H S V], 3,'distance','sqEuclidean');
tabulate(idx)
the percentage for each idx gets changed every time i run the program,whay i am getting like this,kindly assist
3 comentarios
BTW., The creation of your [H S V] can be abbreviated, such that you do not need H, S and V explicitly:
idx = kmeans(reshape(HSV, [], 3), 3,'distance','sqEuclidean');
This behaviour of kmeans is explained in the dcoumentation. It is strongly recommended to read it, especially in cases of problems: doc kmeans
kash
el 22 de Mzo. de 2013
Walter Roberson
el 22 de Mzo. de 2013
kmeans still uses random initialization when you use reshape(), unless you provide the starting centroids like I showed below.
Respuestas (1)
Youssef Khmou
el 5 de Mzo. de 2013
Editada: Youssef Khmou
el 5 de Mzo. de 2013
1 voto
hi kash,
i quote , from Wikipedia : " Commonly used initialization methods are Forgy and Random Partition" so each time you run the code : Random partition is the cause of that small change , so here is what you can do :
you run the code 10 times , each time you store that variable, it is then a R.V calculate its mean and STD , and conclude .
9 comentarios
Walter Roberson
el 5 de Mzo. de 2013
Right. kmeans uses random initialization unless you provide initial values.
kash
el 5 de Mzo. de 2013
Walter Roberson
el 5 de Mzo. de 2013
kmeans([H S V], 3, 'distance', 'sqEuclidean', 'start', MatrixOfCentroids)
MatrixOfCentroids would have to be 3 (number of clusters) by 3 (number of columns of [H S V])
kash
el 22 de Mzo. de 2013
Walter Roberson
el 22 de Mzo. de 2013
What does the documentation for kmeans() say should be passed in after the word 'start' ?
kash
el 22 de Mzo. de 2013
kash
el 22 de Mzo. de 2013
Teja Muppirala
el 22 de Mzo. de 2013
Are you sure you have typed everything correctly?
x = imread('peppers.png');
HSV = rgb2hsv(x);
C=HSV(102:104,102:104);
idx = kmeans(reshape(HSV, [], 3),3,'distance','sqEuclidean','Start',C);
tabulate(idx)
For me, no matter how many times I run this, I always get the same result:
Value Count Percent
1 74013 37.64%
2 99481 50.60%
3 23114 11.76%
kash
el 22 de Mzo. de 2013
Categorías
Más información sobre k-Means and k-Medoids Clustering en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!