Updated to use k-means++ initalization