MATLAB GMM by fitgmdist gives different values even after initializing using kmeans

So I am trying to compare two Gaussian Mixture Models with two distributions every time I run the program i get different values even after initializing using k-means. Am I missing something??
X = mat_cell;
[counts,binLocations] = imhist(X);
stem(binLocations, counts, 'MarkerSize', 1 );
xlim([-1 1]);
% inital kmeans step used to initialize EM
K = 2; % number of mixtures/clusters
cInd = kmeans(X(:), K,'MaxIter', 75536);
% fit a GMM model
options = statset('MaxIter', 75536);
gmm = fitgmdist(X(:),K,'Start',cInd,'CovarianceType','diagonal','Regularize',1e-5,'Options',options);

5 Comments

kmeans is not a deterministic function so it will give different results each time.
kmeans is used to initialise the parameters for the mixture model. Is there an alternative way?
You can use
doc rng
before kmeans to force it to always use the same 'random' values and return the same result each time. It doesn't make it deterministic, but it makes it repeatable at least.
Or you can use any method you want that gives you some initial clusters. I used hierarchical clustering when I used a GMM a few years ago.
Adem would you please let me know the way you did with GMM and the hierarchical clustering ????
Thanks
K-means is not deterministic. Given that K-means will give a different result each time it is run, you cannot use it to ensure identical runs for the GMM algorithm.

Sign in to comment.

Answers (1)

Set the seed for the pseudorandom number generation in your code. For example, put the line
rng 'default'
as the first line.
This will give you a pseudorandom sequence, but it will be reproducible.

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Asked:

on 23 Jun 2017

Commented:

on 7 May 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!