add kmeans algorithm