Clustering is useful for discovering groups and identifying interesting distributions in the underlying data. At present, k-means algorithm as a method of clustering based on the partition has more applications. By analyzing the problem of k-means, we find the traditional k-means algorithm suffers from some shortcomings, such as requiring the user to give out the number of clusters k in advance, being sensitive to the initial cluster centers, being sensitive to the noise and isolated data, only being applied to the type found in globular clusters, and being easily trapped into a local solution...