层次聚类算法

  • 1.定义
  • 2. 自底向上的合并算法
    • 2.1 计算过程
    • 2.2.两个组合数据点间的距离
    • 2.3实例

1.定义

  • 层次聚类(Hierarchical Clustering)属于聚类算法,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。
  • 在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。
  • 创建聚类树有自下而上合并自上而下分裂两种方法。
  • 基于层次的聚类算法(Hierarchical Clustering)可以是凝聚的(Agglomerative)或者分裂的(Divisive),取决于层次的划分是“自底向上”还是“自顶向下”。

2. 自底向上的合并算法

  • 层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程。
  • 通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。

  • 相似度计算

    • 层次聚类使用欧式距离来计算不同类别数据点间的距离(相似度)

2.1 计算过程

  • 原数据

  • 分别计算欧式距离值(矩阵)

  • 将数据点B与数据点C进行组合后,重新计算各类别数据点间的距离矩阵。数据点间的距离计算方式与之前的方法一样。这里需要说明的是组合数据点(B,C)与其他数据点间的计算方法。当我们计算(B,C)到A的距离时,需要分别计算B到A和C到A的距离均值。

  • 经过计算数据点D到数据点E的距离在所有的距离值中最小,为1.20。这表示在当前的所有数据点中(包含组合数据点),D和E的相似度最高。因此我们将数据点D和数据点E进行组合。并再次计算其他数据点间的距离。

  • 后面的工作就是不断的重复计算数据点与数据点,数据点与组合数据点间的距离。这个步骤应该由程序来完成。这里由于数据量较小,我们手工计算并列出每一步的距离计算和数据点组合的结果。

2.2.两个组合数据点间的距离

  • 计算两个组合数据点间距离的方法有三种,分别为Single Linkage,Complete Linkage和Average Linkage。在开始计算之前,我们先来介绍下这三种计算方法以及各自的优缺点。

    方法 含义
    Single Linkage 将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离。这种方法容易受到极端值的影响。两个很相似的组合数据点可能由于其中的某个极端的数据点距离较近而组合在一起。
    Complete Linkage 此计算方法与Single Linkage相反,将两个组合数据点中距离最远的两个数据点间的距离作为这两个组合数据点的距离。Complete Linkage的问题也与Single Linkage相反,两个不相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。
    Average Linkage 计算两个组合数据点中的每个数据点与其他所有数据点的距离。将所有距离的均值作为两个组合数据点间的距离。这种方法计算量比较大,但结果比前两种方法更合理。
  • 使用Average Linkage计算组合数据点间的距离。计算组合数据点(A,F)到(B,C)的距离,这里分别计算了(A,F)和(B,C)两两间距离的均值。

2.3实例

import pandas as pd
from scipy.cluster.hierarchy import linkage,dendrogram
import matplotlib.pyplot as plt
#加载数据
df=pd.read_csv('./datasets/seeds-less-rows.csv')#1.查看有几个类别
df.grain_variety.value_counts()
# Rosa wheat        14
# Canadian wheat    14
# Kama wheat        14
# Name: grain_variety, dtype: int64#2.拆分数据
#获取分类名
varieties=list(df.pop('grain_variety'))
#获取相应数据
samples=df.values#3.进行层次聚类
mergings=linkage(samples,method='complete')# 4 画图
fig=plt.figure(figsize=(10,6))
dendrogram(mergings,labels=varieties,leaf_rotation=90,leaf_font_size=12)
plt.show()#有3个分错了

无监督学习之层次聚类算法相关推荐

  1. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

  2. R实现K均值算法,层次聚类算法与DBSCAN算法

    1.聚类的基本概念 聚类分析(cluster analysis)仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组.其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不 ...

  3. Crawler/ML:爬虫技术(基于urllib.request库从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类

    Crawler/ML:爬虫技术(基于urllib.request库从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类 目录 一. ...

  4. 【火炉炼AI】机器学习023-使用层次聚类算法构建模型

    [火炉炼AI]机器学习023-使用层次聚类算法构建模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotli ...

  5. 利用层次聚类算法进行基于基站定位数据的商圈分析

    1. 背景与挖掘目标 1.1 背景 • 随着个人手机和网络的普及,手机已经基本成为所有人必须持有的工具. • 根据手机信号再地理空间的覆盖情况结合时间序列的手机定位数据可以完整的还原人群的现实活动轨迹 ...

  6. 机器学习 改进的层次聚类算法

    http://www.cnblogs.com/wentingtu/archive/2012/01/04/2311533.html 基本工作原理 给定要聚类的N的对象以及N*N的距离矩阵(或者是相似性矩 ...

  7. 【机器学习算法】聚类分析-2 聚类算法的分类,层次聚类算法的选择

    目录 聚类算法的分类 层次聚类的算法, 单一聚类法(single link) 完全链结法 平均链结法 中心链结法 Ward's法 我的主页:晴天qt01的博客_CSDN博客-数据分析师领域博主 目前进 ...

  8. 层次聚类算法原理总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 层次聚类(hierarchical clustering)基于簇间 ...

  9. ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调

    ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调 目录 输出结果 实现代码 输出结果 实现代码 #!/usr/bin/python # co ...

最新文章

  1. 第一次胜过MobileNet的二值神经网络,-1与+1的三年艰苦跋涉
  2. matlab通过“ideal_lp设计理想高通滤波器_常见低通、高通、带通三种滤波器的工作原理...
  3. 获取异常信息e.printStackTrace()的内容
  4. 推荐系统中的长尾物品(Tail Items)推荐问题
  5. when is Lessifier triggered to be loaded
  6. jdk 加密_使用JDK的密码流的加密怪癖(以及该怎么做)
  7. [BTS] WCF-SAP Connect to SAP gateway failed
  8. 如何零基础开始自学Python编程,值得一看!
  9. 信息学奥赛C++语言:投资收益
  10. sklearn炼丹术之——交叉验证Cross-validation: evaluating estimator performance
  11. HTML5重要知识点整理
  12. Mimics:快捷键介绍
  13. 无人机三维建模(1) 调研
  14. 思维模型 帕累托法则
  15. “知识地图”助员工岗位成才
  16. IndexError: Caught IndexError in DataLoader worker process 0.
  17. Mac --显示隐藏文件
  18. APS和MES管理系统在印刷行业的应用现状
  19. button layui-btn 色调
  20. K8S 完全安装手册

热门文章

  1. Thymeleaf + Vue组件化开发
  2. SQL创建-----表
  3. Android-Apk的安装流程分析(二)
  4. 【tiny4412】按键控制led灯亮灭
  5. 基于jsp,ssm进销存管理系统
  6. 设置MATLAB中figure图的背景为白色
  7. 【java 微信公众号开发】 微信端获取code和opendId,access_token 步骤调试
  8. UDK 中的委托使用
  9. 信息系统规划工具中的各种矩阵
  10. 程序员看过都说好的资源网站,看看你都用过哪些?