聚类算法中的凝聚聚类算法

=======================================================================
              Machine Learning notebook
Python机器学习基础教程(introduction to Machine Learning with Python)

=======================================================================

凝聚聚类(agglomerative clustering)指的是许多基于相同原则构建的聚类算法,这一原则是:算法首先声明每个点是自己的簇,然后合并两个最相似的簇,直到满足某种停止准则为止。scikit-learn中实现的停止准则是簇的个数,因此相似的簇被合并,直到仅剩下指定个数的簇。还有一些**链接(linkage)**准则,规定如何度量“最相似的簇”。这种度量总是定义在两个现有的簇之间。

class sklearn.cluster.AgglomerativeClustering(n_clusters=2, 
											  affinity=’euclidean’, 
											  memory=None, 
											  connectivity=None, 
											  compute_full_tree=’auto’, 
											  linkage=’ward’, 
											  pooling_func=’deprecated’)

scikit-learn实现了以下三种链接准则:

linkage : {“ward”, “complete”, “average”, “single”}, optional (default=”ward”)

ward:默认选项,挑选两个簇来合并,是的所有簇中的方差增加最小。这通常会得到大小差不多相等的簇。
average链接:将簇中所有点之间平均距离最小的两个簇合并。
complete链接:也称为最大链接,将簇中点之间最大距离最小的两个簇合并。

ward适用于大多数数据集。如果簇中的成员个数非常不同(比如其中一个比其他所有都大得多),那么average或complete可能效果更好。

由于算法的工作原理,凝聚算法不能对新数据点做出预测。因此AgglomerativeClustering没有predict方法。为了构造模型并得到训练集上簇的成员关系,可以改用fit_predict方法。

1.层次聚类与树状图
凝聚聚类生成了所谓的层次聚类(hierarchical clustering)。聚类过程迭代进行,每个点都从一个单点簇变为属于最终的某个簇。每个中间步骤都提供了数据的一种聚类(簇的个数也不相同)。

虽然这种可视化为层次聚类得提供了非常详细的视图,但它依赖于数据的二维性质,因此不能用于具有两个以上特征的数据集。还有另一个将层次聚类可视化的工具叫做树状图,它可以处理多维数据集。

不幸的是,目前scikit-learn没有绘制树状图的功能。但可以使用SciPy轻松生成树状图。SciPy的聚类算法接口与scikit-learn的聚类算法稍有不同。SciPy提供了一个函数,接受数据数组x并计算出一个链接数组(linkage array),它对层次聚类的相似度进行编码。然后我们可以将这个链接数组提供给SciPy的dendrogram函数来绘制树状图。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值