无监督学习——KMeans使用

在当我们获得的数据没有标签时,我们依然希望通过算法学习找到这些数据的特点,这时就用到了KMeans (k均值聚类)把数据点聚类成K个簇

文档地址:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

 class sklearn.cluster.KMeans(n_clusters=8init=’k-means++’n_init=10max_iter=300tol=0.0001precompute_distances=’auto’verbose=0random_state=Nonecopy_x=Truen_jobs=1algorithm=’auto’)

在以上所有的参数中其中有三个参数需要非常注意

n_clusters=8  聚类的数量(簇的数量),默认是8.但这个我们一般都需要调整

n_init=10      初始化的数量。 不同的初始化状况,聚心的位置不同,决定了算法聚类的结果。初始化10次,会得到10个聚类的集合。可以从中选择认为合适的聚类。在认为数据

      难以进行分配的时候,可以调大这个值。

max_iter=300 算法迭代最大次数。每一次迭代都会重新 移动聚类中心 (聚心)的位置,和分配点,绝大部分情况下算法在达到最大值之前一般都停止了,

       所以这个大部分情况下不用调整,默认就行。

 1 from sklearn.cluster import KMeans
 2 import numpy as np
 3 X = np.array([[1, 2], [1, 4], [1, 0],
 4               [4, 2], [4, 4], [4, 0]])
 5 kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
 6 kmeans.labels_   #返回每个点的标签
  array([0, 0, 0, 1, 1, 1], dtype=int32)

8 kmeans.predict([[0, 0], [4, 4]])
  array([0, 1], dtype=int32)
 9 kmeans.cluster_centers_  #返回聚心位置
   array([[ 1.,  2.],
         [ 4.,  2.]])

猜你喜欢

转载自www.cnblogs.com/HL-blog/p/8904776.html