Non-probabilistic variant of Expectation Maximization. Uses hard membership parameters.

Given data

- Initialize

#* Randomly select K data points and use them as “means”

#* Randomly assign each data point to one of K clusters, then compute the mean from each cluster

- Update
- Assign each data point to its closest mean (or center) using Euclidean distance
- Recompute the K means based on their member data points
- Check for convergence

- Convergence

#* When the sum of squared error or distances from each point to its mean stops decreasing

#* When no data point changes membership between iterations