scipy层次聚类

news/2024/5/20 6:03:11 标签: scipy, 聚类, 数据挖掘, linkage, python, 机器学习

文章目录

linkage_2">linkage

linkagescipy中的一个层次聚类函数,可将距离最近的数聚在一起,形成聚类簇;多个聚类簇再次聚类,得到更高层级的聚类簇。重复这个过程,直到所有的聚类簇都聚成一个最终的类。

其调用方法为

python">scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean', optimal_ordering=False)

其中method表示聚类方法;metric表示聚类时采用的距离。在详细介绍这两者的可选参数之前,先对linkage做一个简单示例。

python">from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt
X = [[i] for i in [2, 8, 0, 4, 1, 9, 9, 0]]

Z = linkage(X, 'single')
print(Z)

Z Z Z的结果如下,是一个二维数组,记 X X X的长度为 n n n,则 Z Z Z尺寸为 ( n − 1 ) × 4 (n-1)\times4 (n1)×4。其中 Z i 0 , Z i 1 Z_{i0}, Z_{i1} Zi0,Zi1属于第 n + i n+i n+i聚类簇,且二者之间的距离为 Z i 2 Z_{i2} Zi2 Z i 3 Z_{i3} Zi3表示对于一个新形成的聚类簇中的元素个数。

i i i Z i 0 Z_{i0} Zi0 Z i 1 Z_{i1} Zi1 Z i 2 Z_{i2} Zi2 Z i 3 Z_{i3} Zi3类别
027028
156029
2041210
38101411
4191312
53112513
612134814

Z i 0 , Z i 1 Z_{i0}, Z_{i1} Zi0,Zi1中的这些数显然不是从 X X X中抽取得到的,而是 X X X中每个元素的所属类别,映射如下

28041990
01234567

Z Z Z的第一行表示, 2 2 2 7 7 7组成一个簇,且 2 , 7 2,7 2,7之间距离为0,根据上表, 2 , 7 2,7 2,7对应的是两个 0 0 0,所以二者之间的距离为0。且二者新形成的聚类簇为 n + i = 8 + 0 = 8 n+i=8+0=8 n+i=8+0=8,二者组成的簇共有两个元素。第二、三行与之类似。

第四行表明, 8 8 8 10 10 10之间距离为1,其中 8 8 8是由 2 , 7 2,7 2,7两个位置的两个 0 0 0组成; 10 10 10 0 , 4 0,4 0,4两个位置组成的,以此类推。

上面的矩阵可通过dendrogram进行可视化,结果如下

python">dn = dendrogram(Z)
plt.show()

在这里插入图片描述

method

可选方法及其含义如下

  • single 最小距离
  • complete 最大距离
  • average 平均距离
  • weighted 加权距离
  • centroid 中心距离
  • median 和中心距离相似
  • ward 基于Ward方差最小化算法

metric

可选距离包括下表

距离函数备注表达式
braycurtisBray-Curtis距离 ∑ ∣ u i − v i ∣ ∑ ∣ u i + v i ∣ \frac{\sum\vert u_i-v_i\vert}{\sum\vert u_i+v_i\vert} ui+viuivi
canberraCanberra距离 ∑ ∣ u i − v i ∣ ∑ ∣ u i ∣ + ∣ v i ∣ \frac{\sum\vert u_i-v_i\vert}{\sum\vert u_i\vert+\vert v_i\vert} ui+viuivi
chebyshev切比雪夫距离 max ⁡ ( u ⃗ − v ⃗ ) \max(\vec u-\vec v) max(u v )
minkowski([,p])闵氏距离 ∥ u − v ∥ p \Vert u-v\Vert_p uvp
cityblock曼哈顿距离 ∑ ∣ u i − v i ∣ \sum\vert u_i-v_i\vert uivi
euclidean欧氏距离 ∥ u − v ∥ 2 \Vert u-v\Vert_2 uv2
sqeuclidean平方欧式距离 ∑ w i ∣ u i − v i ∣ 2 \sum w_i\vert u_i-v_i\vert^2 wiuivi2
cosine余弦距离 1 − u ⋅ v ∥ u ∥ 2 ∥ v ∥ 2 1-\frac{u\cdot v}{\Vert u\Vert_2\Vert v\Vert_2} 1u2v2uv
correlation相关距离 1 − ( u − u ˉ ) ( v − v ˉ ) ∥ u − u ˉ ∥ 2 ∥ v − v ˉ ∥ 2 1-\frac{(u-\bar u)(v-\bar v)}{\Vert u-\bar u\Vert_2\Vert v-\bar v\Vert_2} 1uuˉ2vvˉ2(uuˉ)(vvˉ)
jensenshannonJS距离
mahalanobis马氏距离
seuclidean归一化欧式距离
距离函数备注表达式
diceDice距离 ∣ 10 ∣ + ∣ 01 ∣ 2 ∣ 11 ∣ + ∣ 01 ∣ + ∣ 10 ∣ \frac{\vert10\vert+\vert01\vert}{2\vert11\vert+\vert01\vert+\vert10\vert} 2∣11∣+∣01∣+∣10∣∣10∣+∣01∣
hamming汉明距离 [ 01 ] + [ 10 ] N \frac{[01]+[10]}{N} N[01]+[10]
jaccard杰卡德距离 ∣ 10 ∣ + ∣ 01 ∣ ∣ 11 ∣ + ∣ 01 ∣ + ∣ 10 ∣ \frac{\vert10\vert+\vert01\vert}{\vert11\vert+\vert01\vert+\vert10\vert} ∣11∣+∣01∣+∣10∣∣10∣+∣01∣
kulczynski1Kulczynski距离 [ 11 ] [ 01 ] + [ 10 ] \frac{[11]}{[01]+[10]} [01]+[10][11]
rogerstanimoto谷本距离 R [ 11 ] + [ 00 ] + R \frac{R}{[11]+[00]+R} [11]+[00]+RR
russellraoRussell&Rao距离 N − [ 11 ] N \frac{N-[11]}{N} NN[11]
sokalmichenerSokal-Michener距离 R R + [ 11 ] + [ 00 ] \frac{R}{R+[11]+[00]} R+[11]+[00]R
sokalsneathSokal-Sneath距离 R [ 11 ] + [ 00 ] + R \frac{R}{[11]+[00]+R} [11]+[00]+RR
yuleYule距离 2 [ 01 ] ⋅ [ 10 ] [ 11 ] ⋅ [ 00 ] + [ 10 ] ⋅ [ 01 ] \frac{2[01]\cdot[10]}{[11]\cdot[00]+[10]\cdot[01]} [11][00]+[10][01]2[01][10]

可用方法method,主要是针对距离的聚类算法,下面记D为距离值,d为采用的方法

  • signle d ( u , v ) = min ⁡ ( D ( u i , v j ) ) d(u,v)=\min(D(u_i,v_j)) d(u,v)=min(D(ui,vj))
  • complete d ( u , v ) = max ⁡ ( D ( u i , v j ) ) d(u,v)=\max(D(u_i,v_j)) d(u,v)=max(D(ui,vj))
  • average d ( u , v ) = ∑ i , j D ( u i , v j ) d(u,v)=\sum_{i,j}\frac{D(u_i,v_j)}{} d(u,v)=i,jD(ui,vj)
  • weighted d ( u , v ) = d ( s , v ) + d ( t , v ) 2 d(u,v)=\frac{d(s,v)+d(t,v)}{2} d(u,v)=2d(s,v)+d(t,v)
  • centroid d ( s , t ) = ∥ c s − c t ∥ 2 d(s,t)=\Vert c_s-c_t\Vert_2 d(s,t)=csct2

http://www.niftyadmin.cn/n/5336533.html

相关文章

vscode配置web开发环境(WampServer)

这里直接去下载了集成的服务器组件wampserver,集成了php,MySQL,Apache 可能会出现安装问题,这里说只有图上这些VC包都安装了才能继续安装,进入报错里提供的链接 在页面内搜索相关信息 github上不去可以去镜像站 下载…

【Python 千题 —— 基础篇】参加聚会

题目描述 题目描述 我们向五名同学(Alan、Bob、Candy、Eric、Sandy)发送了各发送了一封聚会邀请邮件,Alan、Candy 与 Sandy 都表示会参加,Bob 与 Eric 都表示不会参加;对于会参加的同学,将会回复 “I’m xxx. I’ll come to the party.”,对于不参加的同学,将会回复 …

XR虚拍技术:微剧与短剧的未来之路

在当今这个信息爆炸的时代,观众对于娱乐内容的需求越来越高。微剧和短剧作为一种新型的影视形式,凭借其紧凑的剧情、精良的制作和高效传播方式,已经逐渐成为观众的新宠。而在这些微剧和短剧的背后,XR虚拍技术正发挥着越来越重要的…

【数据结构】快速排序,归并排序

快速排序 1.hoare版本 根据动图的演示,整理的思路如下, 1.定义left,right,key。key默认是左边第一个元素,像两个指针,左边找比key大的,右边找比k小的,找到的话,交换二者,往返这个过…

开发实践8_REST

一、Django REST Framework, Django View & APIView MTV模式实现前后端分离。Representational State Transfer 表现层状态转化。Representation 资源(Resource a specific info. on net.)具体呈现形式。ST 修改服务端的数据。修改数据 POST请求。…

JAVA和C++ SECS/GEM300开发和概念

编译SECS示例程序 1. 示例程序使用默认路径: D:\SECS 稳定版\SECS Debug\ 2. 该操作分为俩步 ① 将C#的Secs库编译成设备相同Net版本。 如.net3.5、4.0、4.5等等 ② 编译金南瓜SECS demo程序 编译C#的SecsEquip.dll 1. 找到SecsEquip项目 项目文件 使用Visua…

【flink番外篇】15、Flink维表实战之6种实现方式-通过Temporal table实现维表数据join

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

将 SQL Server 2022 数据库备份到 MinIO

Microsoft 在将 S3 连接器和 Polybase 添加到 SQL Server 2022 时取得了重大飞跃。因此,企业可以利用他们保存到对象存储中的大量数据,并使用它来丰富 SQL Server 表。他们还可以利用对象存储来备份 SQL Server,这是开放性和云原生灵活性的又…