The Fuzzy K-Means algorithm is a variation of the classical K-Means algorithm, with the
major difference that a single data point is not uniquely assigned to a single cluster.
Instead, each point i has a set of weights uij which indicate the degree of membership
to the cluster j.

The algorithm then tries to minimize the objective function:

J = ∑i=1..C∑k=1..N uikmdik2

with dik being the distance between data point i and the cluster center k.

The algorithm requires two parameters:

k: the number of clusters

fuzziness: determines the level of cluster fuzziness, larger values lead to fuzzier clusters

Additional, optional parameters:

maxIterations: the maximum number of iterations

epsilon: the convergence criteria, default is 1e-3

The fuzzy variant of the K-Means algorithm is more robust with regard to the selection
of the initial cluster centers.