Fuzzy-C-Means (FCM) clustering algorithm 

It's a prototype based method. An object represents a cluster. It's a probabilistic method and the sum of the membership values of an object to all clusters is 1. The idea for cluster computing is to minimize the distances of all the data points from all cluster centers. The cluster number c must be specified. And it is also the C in Fuzzy-C-Means.

J FCM = k = 1 N i = 1 C ( mik ) m dik 2 J_{FCM}=sum from{k=1} to{N}sum from{i=1} to{C}(mik)^{m}cdot dik^{2}

It is a heuristic method and I use it as follows:

Step 1: Initialization

I choose the Euclidean distance norm for distance measure. The initial distribution of the fuzzy partition matrix U variable. You can choose random values or one cluster with 1.0 and the other with 0.0. The termination condition for termination threshold is normally 1.0e-7. The object length and the number of clusters has to be determined.

Step 2: Determination of the cluster centers

vi [ k ] [ ] = i = 0 mik.length mik [ i ] [ k ] m = 2 object [ i ] [ ] k = 1 mik.length mik [ i ] [ k ] m = 2 vi[k][]={sum from {i=0} to {mik.length} mik[i][k]^{m=2} cdot object[i][]} over {sum from {k=1} to {mik.length} mik[i][k]^{m=2} }

Step 3: Calculate the new partition matrix

mik [ i ] [ k ] = ( 1 dik = object [ i ] [ ] vi [ k ] [ ] ) 1 m = 2 1 j = 0 vi.length ( 1 dik = object [ i ] [ ] vi [ j ] [ ] ) 1 m = 2 1 mik[i][k]={({1} over {dik=object[i][]-vi[k][]} )}^{1 over {m=2-1}} over {sum from j=0 to vi.length{(1 over {dik=object[i][]-vi[j][]})}^{1 over {m=2-1}}}

Step 4: Termination or repetition

Step 5: optional - Repeat calculation (steps 2 to 4)