from scipy.cluster import hierarchy

0.层次聚类的概念

层次聚类和k-means一样都是很常用的聚类方法。层次聚类是对群体的划分,最终将样本划分为树状的结构。他的基本思路是每个样本先自成一类,然后按照某种规则进行合并,直到只有一类或者某一类的样本只有一个点。层次聚类又分为自底而上的聚合层次聚类和自顶而下的分裂层次聚类。

0.1 聚合层次聚类

每一个点初始为1类,得到N(样本点个数)类,计算每一类之间的距离,计算方法有很多,具体可以参考距离的计算方法。聚合层次聚类方法的终止条件是所有样本点都处于同一类了,或者两类之间的距离超过设置的某个阈值。大多数层次聚类都是聚合层次聚类。

0.2 分裂层次聚类

和聚合层次聚类是反着的,属于自上而下的一种聚类方法。刚开始的时候所有的样本点都位于同一类,然后一步步划分,终止条件是所有的样本点都位于单独的一类,或者两类之间的距离超过设置的某个阈值。

下面这个图可以比较好的说明这个过程:

层次聚类的两种方法

1.凝聚层次聚类算法步骤

1.1 算法过程

1)N个样本单独成类,G1(0)、G2(0)、G3(0)、……、GN(0),0代表初始状态。

2)更新距离矩阵D(n),找出D(n)中最小值,把对应的两类合并为1类。

3)更新距离矩阵D(n+1),重复步骤2-3。

当两类之间的最小距离小于给定的阈值或者所有样本都单独成类的时候,结束算法。

1.2算法案例

有个老师带了五个学生,想给学生分组,让他们分组学习,采用层次聚类来对学生进行聚类,基础数据如下图。

学生基础数据

先来算距离D(0),就采用欧式距离就好了。

初始距离矩阵

找到最小的那两个合并为1类。

合并后的新数据

然后计算更新后的距离D(1)

合并的后新距离

以后的以此类推:

聚类的整体过程

我们看到其实124是一类,35是一类。

画出图来就是下面这个格式:

聚类结果

3.Python处理层次聚类的包

用的是在scipy.cluster里的hierarchy方法,下面来看代码,支持hierarchical clustering 和 agglomerative clustering。

首先来看一些基本函数的用法

linkage

scipy.cluster.hierarchy.linkage(data,method = 'single')

method 参数是类距离的计算公式

singele 两个类之间最短的点的距离

complete 两个类之间最长距离的点的距离

centroid 两个类所有点的中点的距离

pdist计算样本点之间的两两距离

scipy.cluster.hierarchy.distance.pdist(data, metric='euclidean')

metric参数是求距离的方法,默认是欧氏距离,可选的还有:

‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’, ‘euclidean’, ‘hamming’, ‘jaccard’, ‘jensenshannon’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’

关于求距离的函数我可能还会再更一篇文章,感兴趣的朋友可以等一下。笔者之前算字符相似度自己还写了一个杰尔卡德相似度,现在看看真实太费事了。

dendrogram(linkage)

scipy.cluster.hierarchy.dendrogram(linkage),这个函数是画图用的。

import numpy

import pandas

from sklearn import datasets

import scipy.cluster.hierarchy as hcluster

import scipy

#iris = datasets.load_iris()

#data = iris.data

#target = iris.target

points=scipy.randn(20,4)

# Compute and plot first dendrogram.

linkage = hcluster.linkage(points, method='centroid')

hcluster.dendrogram(linkage, leaf_font_size=10.)

p = hcluster.fcluster( linkage, 3, criterion='maxclust')

聚类结果如下图所示:

聚类结果

以上就是层次聚类的简单应用,当然有不同的需求可以继续探索一些函数的参数,这个方法还是很好用的。

python 凝聚层次聚类_关于层次聚类算法的python实现相关推荐

  1. python 深度 视差 计算_开源双目视觉BM算法-Matlab/Python/Javascript

    更新:应朋友要求,增加了一个Python版本的BM算法和Javascript版本 Python版本BM​github.com JAVASCRIPT版本BM​github.com 整理以前的代码,找到了 ...

  2. python音频聚类_用K-means聚类算法实现音调的分类与可视化

    本文由 伯乐在线 - ggspeed 翻译,耶鲁怕冷 校稿.未经许可,禁止转载! 英文出处:jared polivka.欢迎加入翻译组. 利用 K-means 聚类算法来聚类和可视化音调 Galvan ...

  3. python注册人工智能专业_从专业程度上分析Python和人工智能(AI) 它们如何相关?...

    Python和人工智能(AI) - 它们如何相关? Python是当今开发人员使用的最流行的编程语言之一.Guido Van Rossum于1991年创建它,自成立以来,它一直是使用最广泛的语言之一, ...

  4. numpy是python标准库吗_吐血 整理!140种Python标准库、第三方库和外部工具都有了...

    Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连接.数 ...

  5. python最全知识点_史上最全的Python知识点整理之基本语法

    一.程序的格式框架 1.缩进 缩进是指每行语句前的空白区域,用来表示Python程序间的包含和层次关系. 一般语句不需要缩进,顶行书写且不留空白. 当表示分支.循环.函数.类等含义,在if,while ...

  6. python多目标优化_多目标优化算法(四)NSGA3(NSGAIII)论文复现以及matlab和python的代码...

    前言:最近太忙,这个系列已经很久没有更新了,本次就更新一个Deb大神的NSGA2的"升级版"算法NSGA3.因为multi-objective optimization已经被做烂了 ...

  7. python以图搜图_以图搜图(一):Python实现dHash算法(转)

    近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...

  8. 经典python项目源码_建议收藏,22个Python迷你项目(附源码)

    在使用Python的过程中,我最喜欢的就是Python的各种第三方库,能够完成很多操作. 下面就给大家介绍22个通过Python构建的项目,以此来学习Python编程. 大家也可根据项目的目的及提示, ...

  9. python迷你停车管理系统_建议收藏,22个Python迷你项目(附源码)

    在使用Python的过程中,我最喜欢的就是Python的各种第三方库,能够完成很多操作. 下面就给大家介绍22个通过Python构建的项目,以此来学习Python编程. 大家也可根据项目的目的及提示, ...

最新文章

  1. php数据分析引擎,PHP数据分析引擎计算余弦相似度算法示例
  2. numpy np.sort()函数(指定对某一轴进行排序,返回数组的排序副本)(成对数组不要用这个排,用哪个啥lexsort()或argsort()都行)
  3. 媒体查询media的3种引入方式
  4. Skywalking部署常见问题以及注意事项
  5. linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译
  6. UVA10838 The Pawn Chess
  7. qq安全使用指南.txt
  8. 《大数据技术原理与应用》第一章-大数据概述
  9. 双反馈直流matlab仿真,双闭环直流调速系统的课程设计(MATLAB仿真)
  10. 三层交换技术与链路聚合
  11. MLP-Mixer简介和一些想法
  12. 【Unity3D】【UI】Cannot restructure Prefab instance.
  13. css3揭秘读书笔记--边框内圆角
  14. Kubernetes operators
  15. 制作自己专属的抓包工具
  16. 创建数据库表提示Working outside of application context.
  17. Spyder 运行时kernels启动报错
  18. 史上最快最新最全倾斜摄影(ContextCapture)空三/建模、单机/集群硬件配置方案2018
  19. 论文阅读笔记(1):Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation
  20. videojs实现视频列表 点击播放下个视频

热门文章

  1. JVM基础 -> 什么是STW?
  2. Python第三方库PySpark框架基础应用(阶段六)
  3. “大超人”——基于医疗大数据的的人工智能医生CDSS
  4. 表面材质的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. 直播如何帮助企业做好品牌?
  6. c#ispostback详解
  7. 抖音直播憋单大家都知道怎么做,但是你话术脚本里有细节吗? #播动师
  8. GoLang 学习攻略
  9. 汉化版chatnet1.4
  10. 如何查询你电脑的IP地址?一文带你搞懂IP地址