sklearn学习笔记之Kmeans聚类

来源:互联网 发布:高铭的书真实的吗 知乎 编辑:程序博客网 时间:2024/06/05 09:22

先讲KMeans的构造函数:

使用前需要导入

import sklearn.cluster import KMeans
KMeans(n_clusters=8,     init='k-means++',     n_init=10,     max_iter=300,     tol=0.0001,     precompute_distances='auto',     verbose=0,     random_state=None,     copy_x=True,     n_jobs=1,     algorithm='auto'    )
各个参数的意义:

参数的意义:

  • n_clusters:簇的个数,即你想聚成几类
  • init: 初始簇中心的获取方法
  • n_init: 获取初始簇中心的更迭次数
  • max_iter: 最大迭代次数(因为kmeans算法的实现需要迭代)
  • tol: 容忍度,即kmeans运行准则收敛的条件
  • precompute_distances:是否需要提前计算距离
  • verbose: 冗长模式(不太懂是啥意思,反正一般不去改默认值)
  • random_state: 随机生成簇中心的状态条件。
  • copy_x: 对是否修改数据的一个标记,如果True,即复制了就不会修改数据。
  • n_jobs: 并行设置
  • algorithm: kmeans的实现算法,有:'auto''full''elkan', 其中 'full'表示用EM方式实现
虽然参数众多,但大多有默认值,下面给出运用实例:


import osimport scipy as spimport numpy as npfrom scipy.stats import normfrom matplotlib import pylabfrom sklearn.cluster import KMeansxw1 = norm(loc=0.3, scale=.15).rvs(20)yw1 = norm(loc=0.3, scale=.15).rvs(20)xw2 = norm(loc=0.7, scale=.15).rvs(20)yw2 = norm(loc=0.7, scale=.15).rvs(20)xw3 = norm(loc=0.2, scale=.15).rvs(20)yw3 = norm(loc=0.8, scale=.15).rvs(20)x = sp.append(sp.append(xw1, xw2), xw3)y = sp.append(sp.append(yw1, yw2), yw3)km = KMeans(init='random', n_clusters=3, verbose=1,            n_init=1, max_iter=6)colors=['red','green','blue']marker=['o','p','^']for i in km.labels_:    pylab.scatter(x[km.labels_==i],y[km.labels_==i],marker=marker[i],c=colors[i])pylab.show()


关于KMeans对象的属性:

labels_:每个点的分类; 

cluster_centers_:向量,[n_clusters, n_features] 

inertia_:float,每个点到其簇的质心的距离之和。 


KMeans对象的方法:

fit(X[,y]):计算k-means聚类。

fi_predictt(X[,y]):计算簇质心并给每个样本预测类别。

fit_transform(X[,y]):计算簇并 transform X to cluster-distance space。

get_params([deep]):取得估计器的参数。

predict(X):给每个样本估计最接近的簇。

score(X[,y]):Opposite of the value of X on the K-means objective (?)

set_params(**params):为这个估计器手动设定参数。

transform(X[,y]):将X转换入cluster-distance 空间。



原创粉丝点击