首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聚类算法之层次聚类

聚类算法之层次聚类

作者头像
Ewdager
发布2020-07-14 14:22:20
2.7K0
发布2020-07-14 14:22:20
举报
层次聚类
层次聚类

层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别的相似度类创建一个有层次的嵌套的树。

层次聚类怎么算

层次聚类分为自底向上自顶向下两种,这里仅采用scikit-learn中自底向上层次聚类法。

  1. 将数据集中每一个样本都标记为不同类
  2. 计算找出其中距离最近的2个类别,合并为一类
  3. 依次合并直到最后仅剩下一个列表,即建立起一颗完整的层次树

以下为看图说话~ 感谢 Laugh’s blog借用下说明图

第一步
第一步

把所有数据全部分为不同组

第二步
第二步

将相邻最近的两组归为同一组

重复上述操作
重复上述操作

重复第二步,直到合并成为一个组,聚类结束

层次树
层次树

聚类过程的散点图变化一下,就是我们要的层次图

层次聚类 Python 实现

import numpy as np
from sklearn.cluster import AgglomerativeClustering
data = np.random.rand(100, 3) #生成一个随机数据,样本大小为100, 特征数为3

#假如我要构造一个聚类数为3的聚类器
estimator = AgglomerativeClustering(n_clusters=3)#构造聚类器
estimator.fit(data)

print(estimator.labels_)#获取聚类标签

主函数 AgglomerativeClustering 参数解释

AgglomerativeClustering(affinity='euclidean', compute_full_tree='auto',
                        connectivity=None, linkage='ward', 
                        memory=None, n_clusters=2,
                        pooling_func='deprecated')
  • affinity: 亲和力度量,有 euclidean(欧式距离), l1(L1 范数), l2(L2 范数)
  • compute_full_tree: 通常当训练了n_clusters后,训练过程就会停止,但是如果compute_full_tree=True,则会继续训练从而生成一颗完整的树
  • connectivity: 一个数组或者可调用对象或者None,用于指定连接矩阵
  • linkage: 连接方法:ward(单连接), complete(全连接), average(平均连接)可选
  • memory: 用于缓存输出的结果,默认为不缓存
  • n_clusters: 表示最终要查找类别的数量,例如上面的 2 类
  • pooling_func: 一个可调用对象,它的输入是一组特征的值,输出是一个数

返回值

  • labels: 每个样本的簇标记
  • n_leaves_: 分层树的叶节点数量
  • n_components: 连接图中连通分量的估计值
  • children: 一个数组,给出了每个非节点数量
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 层次聚类怎么算
  • 层次聚类 Python 实现
  • 主函数 AgglomerativeClustering 参数解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档