We can solve arbitrarily bad initialisations of clusters and generally find a solution much faster by using k-Means++. It can be shown that the approximation factor is at most .

  1. Set the first centre to be one of the input points chosen uniformly at random.
  2. For cluster to :
    1. For each point , compute the distance to the nearest centre, i.e. calculate
    2. Open a new centre at a point using the weighted probability distribution that is proportional to , that is:
  3. Continue with k-Means.