AUTO CLUSTERING instead of setting the value of 'C' in Fuzzy C-Mean

I have a problem in FCM. i want it to be AUTO CLUSTERING instead of setting the value of 'C'?. This is a normal FCM code that need manually set the C: options = [NaN 100 0.001 0]; [centers,U,objFun] = fcm(data,3,options);

 Accepted Answer

Yes, I know exactly how to get the best possible results in that situation: set the number of clusters to the number of unique points. Every cluster will then contain exactly one point (and any duplicates of it), which will always give you the best possible fitting, with no fitting error at all.

3 Comments

Hai, thank you for your respond. "set the number of clusters to the number of unique points", can you give an example for this? and what is the meaning of "unique points"? i would love to understand it better. TQ
The following does the best possible clustering without specifying the number of clusters in advance:
[cluster_centers, ~, cluster_idx] = unique(YourInputMatrix, 'rows');
That is the entire code. Every unique row becomes its own cluster.
The error in cluster assignment is provably 0.
Fantastic. Thank you very much. I will try it.

Sign in to comment.

More Answers (1)

If you do not have a clear idea of the number of clusters in your data, you can use the subclust function to estimate the number clusters before running FCM.
As of R2023a, you can specify the number of clusters as a vector of values using the NumClusters property of an fcmOptions object. The FCM function computes clusters for each cluster count value and returns the cluster centers for the optimal number of clusters.

Categories

Products

Community Treasure Hunt

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

Start Hunting!