https://www.toutiao.com/a6641489713536434695/

2019-01-01 19:32:04

层次聚类算法将相似的对象分组到称为聚类的组中。层次聚类算法有两种:

  • 凝聚(Agglomerative )-自下而上的方法。从许多小聚类开始,然后将它们合并到一起,创建更大的聚类。
  • 分裂 (Divisive )- 自上而下的方法。从单个聚类开始,而不是将其拆分为更小的聚类。

层次聚类的一些优缺点

优点

  • 不假设特定数量的聚类(即k均值)
  • 可能对应于有意义的层次关系

缺点

  • 一旦决定组合两个聚类,它就无法撤消
  • 遇到大机器学习数据集时太慢,O(2log())

它时如何运作的

1.使每个数据点成为一个聚类

2.取两个最接近的聚类并使它们成为一个聚类

3.重复步骤2,直到只有一个聚类

树形图

我们可以使用树形图来显示分组的历史,并找出最佳的聚类数。

  • 确定不与任何其他聚类相交的最大垂直距离
  • 在两个末端画一条水平线
  • 最佳聚类数等于通过水平线的垂直线数

例如,在下面的例子中,没有的最佳选择。集群将是4。

连接标准(Linkage Criteria)

与梯度下降类似,您可以调整某些参数以获得截然不同的结果。

连接标准指的是如何计算聚类之间的距离

Single Linkage

两个聚类之间的距离是每个聚类中两点之间的最短距离

Complete Linkage

两个聚类之间的距离是每个聚类中两点之间的最长距离

Average Linkage

簇之间的距离是一个聚类中每个点与另一个聚类中每个点之间的平均距离

Ward Linkage

聚类之间的距离是所有聚类内的平方差的总和

距离度量

用于计算数据点之间距离的方法将影响最终结果。

欧几里德距离

两点之间的最短距离。例如,如果x =(a,b)和y =(c,d),则x和y之间的欧几里德距离为√((a-c)²+(b-d)²)

曼哈顿距离

想象一下,你在一个大城市的市中心,你想要从A点到达B点。你将无法跨越建筑物,而是你必须沿着各条街道行走。例如,如果x =(a,b)和y =(c,d),则x和y之间的曼哈顿距离是| a-c | + | b-d |。

python中的示例

让我们看看如何使用层次凝聚聚类来标记机器学习数据的具体示例。

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn.cluster import AgglomerativeClustering
import scipy.cluster.hierarchy as sch

在本教程中,我们使用包含客户列表的csv文件及其gender, age, annual income 和 spending score。机器学习数据库的下载地址:http://www.kankanyun.com/data/Mall_Customers.csv

为了在以后的图表上显示我们的数据,我们只能采用两个变量(annual income 和spending score)。

dataset = pd.read_csv('./data.csv')
X = dataset.iloc[:, [3, 4]].values

观察树状图,与任何聚类不相交的最高垂直距离是中间的绿色。假设5条垂直线超过阈值,则最佳聚类数为5。

dendrogram = sch.dendrogram(sch.linkage(X, method='ward'))

我们利用欧几里得距离来创建AgglomerativeClustering的实例,其中该欧几里得距离是指点之间的距离和用于计算聚类的接近度的距离。

model = AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward')
model.fit(X)
labels = model.labels_

该labels_属性返回一个整数数组,其中值对应于不同的类。

我们可以使用简写表示法将属于某个类的所有样本显示为特定颜色。

plt.scatter(X[labels==0, 0], X[labels==0, 1], s=50, marker='o', color='red')
plt.scatter(X[labels==1, 0], X[labels==1, 1], s=50, marker='o', color='blue')
plt.scatter(X[labels==2, 0], X[labels==2, 1], s=50, marker='o', color='green')
plt.scatter(X[labels==3, 0], X[labels==3, 1], s=50, marker='o', color='purple')
plt.scatter(X[labels==4, 0], X[labels==4, 1], s=50, marker='o', color='orange')
plt.show()

Python中的凝聚层次聚类示例相关推荐

  1. python 凝聚层次聚类_关于层次聚类算法的python实现

    from scipy.cluster import hierarchy 0.层次聚类的概念 层次聚类和k-means一样都是很常用的聚类方法.层次聚类是对群体的划分,最终将样本划分为树状的结构.他的基 ...

  2. 分裂层次聚类matlab实现,凝聚层次聚类算法matlab源码

    <凝聚层次聚类算法matlab源码>由会员分享,可在线阅读,更多相关<凝聚层次聚类算法matlab源码(3页珍藏版)>请在人人文库网上搜索. 1.共享一个在数据挖掘课程中作为示 ...

  3. Python中的GPS轨迹聚类

    当我们想要利用智能手机或智能手环等个人设备生成的GPS数据时,G PS轨迹聚类是一种常见的分析. 在本文中,我们将介绍一种在Python中执行GPS轨迹聚类的快速简便方法.这里的主要目标是创建包含&q ...

  4. 聚类算法:凝聚层次聚类

    凝聚层次聚类: 所谓凝聚的,指的是该算法初始时,将每个点作为一个簇,每一步合并两个最接近的簇.另外即使到最后,对于噪音点或是离群点也往往还是各占一簇的,除非过度合并.对于这里的"最接近&qu ...

  5. 基本凝聚层次聚类算法

    一.基本凝聚层次聚类算法 1:如果需要,计算近邻度矩阵 2:repeat 2.1:合并最接近的两个簇 2.2:更新近邻性矩阵,以反映新的簇与原来的簇之间的近邻性 3:until 仅剩下一个簇 存储近邻 ...

  6. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  7. python grpc 并发_在Python中使用gRPC的方法示例【h】

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip gRPC由两个部分构成,grpcio 和 gRP ...

  8. python中使用grpc方法示例_在Python中使用gRPC的方法示例

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip pip install grpcio pip i ...

  9. python语句分为复合语句与_对Python中for复合语句的使用示例讲解

    当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/p ...

最新文章

  1. node编写定时任务,for循环只执行一遍的解决办法
  2. 【swjtu】数据结构实验4_基于改进KMP算法的子串查找与替换
  3. .net core 项目文件结构浅析
  4. c语言入口及出口参数说明,麻烦帮忙指出一下这个函数的入口参数和出口参数呀!...
  5. LeetCode题解之Reorder List
  6. linux新手入门必看
  7. pycharm-连接mysql设置
  8. [转载]帮你入门 详解JRE和JDK的区别
  9. UIApplication keyWindow rootViewController 为 nil 的
  10. 14.深入分布式缓存:从原理到实践 --- 典型电商应用与缓存
  11. Raki的读paper小记:Empower Entity Set Expansion via Language Model Probing
  12. 从《华为的冬天》到AI的冬天 | 甲子光年
  13. JS 获取某一年有多少周
  14. 怎么根据快递单号批量查询物流信息?
  15. java火星坐标与真实坐标的转换
  16. 视频教程-Kali Linux 网络安全渗透测试-渗透测试
  17. 用友通账套备份操作流程
  18. 红叶李之虚拟机以及Centos安装
  19. goose house 光るなら 若能绽放光芒 平仮名 平假名 假名 标注 注音 歌词
  20. GoogleTest进阶——参数测试、Mock测试、耗时测试、类型测试

热门文章

  1. 清除系统LJ.bat
  2. 全球首个城市内河无人驾驶数据集发布、奥地利学者用「量子扭曲」加速强化学习 | AI日报...
  3. 从理论支撑到具体应用,万字长文详述 CV 中 Transformer 的广阔天地
  4. 华为CodeCraft2017算法结果检查工具(包含测试用例展示)
  5. NASA将天文数据转换为音频,来听听银河系的声音!
  6. 独家 | 规范性分析的实用介绍(附R语言案例研究演示代码)
  7. 近期AI领域8篇精选论文(附论文、代码)
  8. 阿里OceanBase GitHub点赞送礼引争议,CTO道歉,贾扬清、李沐讨论开源刷Star
  9. 香港中文大学 (深圳) -博士硕士招生 -智能优化及规划方向
  10. 最新图神经网络论文笔记汇总(附pdf下载)