k-means is a decent clustering algorithm, however it requires the specification of the number of clusters, and is stochastic.
This function takes a matrix as input, as well as the maximum number of clusters, the cutoff to determine the best model (the fraction of variance explained), and makes sure the results are stable by repeating a number of times specified by the user.
The above method is called the Elbow method.
Sebastien De Landtsheer (2020). kmeans_opt (https://www.mathworks.com/matlabcentral/fileexchange/65823-kmeans_opt), MATLAB Central File Exchange. Retrieved .
My version of Matlab won't execute (X-MIN) where X is a something-by-c matrix and MIN is a 1-by-c vector. Is this allowed in later versions of MATLAB?
I tried using this algorithm to determine the optimal cluster number for my data of 15 points (x and y coordinates) which I used as the input but I am getting the following error message "Error in kmeans_opt (line 33)
[m,~]=size(X); %getting the number of samples". Please help.
Did well on my dataset and was faster than Matlab's evalclusters.m, for the data I was looking at.
New version as of 4th April 2019: unit-normalizes the variables, so the algo works even if the variables are on completely different styles.