聚类

什么是聚类:
  聚类是一种无监督学习的算法,通过根据特征的相似性对其进行分类(根据给定类别数,或自动分成几类)
常用的聚类算法:
  k均值算法、均值漂移算法、凝聚层次算法、基于密度的聚类算法
解释下k均值算法:
  sklearn.cluster.Kmeans(n_clusters=8 # 聚类数,
    init='k-means++' # 聚类中心选择算法,
    n_init=10 # 初始聚类中心周围最少数,
    max_iter=300 # 迭代的最大次数,
    tol=1e-4,
    precompute_distances='auto' # 是否预先计算样本距离,
    verbose=0,
    random_state=None,
    copy_x=True,
    n_jobs=None,
    algorithm='auto' # 计算样本相似度所使用的方法)
  k均值算法必须给定k个簇,初始选择k个聚类中心,选取聚类中心足够近的点,然后算出属于每个聚类中心的点的均值作为新的该聚类中心的点
  k均值算法初始值聚类中心选取方式,以及异常值的影响:
  初始聚类中心的选取对分类结果又很大的影响。中心得选取算法常用的有三个:1.随机选取, 2.二分k均值,3.k-means++
解释下均值漂移算法:
  sklearn.cluster.MeanShift()
  均值漂移算法是根据初始给定的聚类中心(或随机选择初始聚类中心),在给定的带宽范围内的所有的样本点计算出所有样本点的向量方向的平均值,然后得到样本新的聚类中心,不断的进行迭代直到满足结束条件为止
  参数:bandwidth(带宽,其实就是高斯核函数的参数), seeds, bin_seeding(bool值), min_bin_freq 默认为1, cluster_all(bool值是否区分孤立点), n_jobs
  首先随便选择一个中心点,然后计算该中心点一定范围之内所有点到中心点的距离向量的平均值,计算该平均值得到一个偏移均值,然后将中心点移动到偏移均值位置通过这种不断重复的移动,可以使中心点逐步逼近到最佳位置。这种思想类似于梯度下降方法,通过不断的往梯度下降的方向移动,可以到达梯度上的局部最优解或全局最优解。几何解释为:如果样本点xi服从一个概率密度函数为f(x)的分布,由于非零的概率密度函数的梯度指向概率密度增加最大的方向,因此从平均上来说,
Sh区域内的样本点更多的落在沿着概率密度梯度的方向。因此,Mean Shift向量Mh(x)应该指向概率密度梯度的方向,所以 均值漂移算法本质上是一种基于梯度的优化算法。
均值漂移算法需要注意的点已经使用范围:
  在图像识别中的目标跟踪,数据聚类,分类等场景
解释下凝聚层次算法:
  sklearn.cluster.AgglomerativeClustering(n_clusters=2 # 簇的数量,
    affinity="euclidean" # 欧几里得,l1, l2,
    memory=None # 是否使用保存,值为存储路径,
    connectivity=None,
    compute_full_tree='auto' # 数据深度,
    linkage='ward' ,
    pooling_func='deprecated')
  凝聚层次可以分为自底向上和自顶向下,层次聚类算法的优势在于,可以通过绘制树状图(dendrogram),帮助我们使用可视化的方式来解释聚类结果。层次聚类的另一个优点就是,它不需要事先指定簇的数量。

 

posted on 2019-05-05 13:59  本名边境  阅读(267)  评论(0编辑  收藏  举报

导航