使用 SciPy 探索层次聚类与树状图

在本文中,我们将学习如何使用 Python 中的 Scipy 模块来实现层次聚类树状图。首先,让我们讨论一些相关的基础概念。

层次聚类需要创建具有从上到下预定顺序的聚类。它是一种无监督机器学习算法,用于对未标记的数据点进行聚类。

#### 如何执行?

  • 在开始时,每个数据点都应被视为一个独立的簇。
  • 将开始时的簇数量记为 K。
  • 通过组合两个最近的数据点形成一个簇,从而得到 K-1 个簇。
  • 通过组合两个距离最近的簇形成更多的簇,从而得到 K-2 个簇。
  • 重复上述四个步骤,直到创建出一个单一的大簇。
  • 一旦创建了簇,就使用树状图将其划分为多个簇。

#### 层次聚类的类型

1. 分裂聚类

分裂聚类,也称为自顶向下聚类方法,将所有观察结果分配给单个簇,然后将该簇划分为两个最不相似的簇。

2. 凝聚聚类

在凝聚或自底向上的聚类方法中,每个观察结果都被分配给其自己的簇。

#### 算法

1. 单链接

单链接聚类通常产生的簇是将个体顺序添加到单个组中。两个簇之间的距离定义为它们两个最近数据点之间的距离。

L(a , b) = min(D(xai , xbj))

!image

2. 全链接

全链接聚类通常产生的簇是分离良好且紧凑的。两个簇之间的距离定义为每个簇中两个数据点之间的最长距离。

L(a , b) = max(D(xai , xbj))

!image

3. 平均距离

简单平均算法将簇之间的距离定义为每个成员之间的平均距离,并进行加权,使得两个簇对最终结果具有相等的影响。

L(a , b) = Tab / ( Na * Nb)
**Tab**: 两个簇之间所有成对距离的总和。
**Na and Nb**: 分别为簇 a 和 b 的大小。

!image

树状图是一种用于可视化簇之间关系的树状图。树状图中垂直线的距离越长,这些簇之间的距离就越远。解释树状图的关键在于专注于任何两个对象连接在一起的高度。

树状图示例:

假设我们有六个簇:P、Q、R、S、T 和 U。散点图上显示的这六个观察结果的聚类层次树状图如下:

!image根据给定散点图绘制的树状图

树状图的组成部分:

!image树状图的组成部分

  • 树状图的分支被称为进化枝。这些进化枝根据它们的相似或不同程度进行排列。
  • 树状图的每个进化枝都有一个或多个叶子。P、Q、R、S、T 和 U 是树状图的叶子:
  • 三叶:P, Q, R
  • 二叶:S, T
  • 单叶:U

实现层次聚类和绘制树状图

为了实现层次聚类并绘制树状图,我们将使用以下几种方法:

  • hierarchy 模块 提供了层次和凝聚聚类的函数。
  • 为了执行层次聚类,我们使用 scipy.cluster.hierarchy.linkage 函数。该函数的参数包括:

> 语法: scipy.cluster.hierarchy.linkage(ndarray , method , metric , optimal_ordering)

  • 为了将层次聚类绘制为树状图,我们使用 scipy.cluster.hierarchy.dendrogram 函数。

> 语法: scipy.cluster.hierarchy.dendrogram(Z , p , truncatemode , colorthreshold , getleaves , orientation , labels , countsort , distancesort , showleafcounts , noplot , nolabels , leaffontsize , leafrotation , leaflabelfunc , showcontracted , linkcolorfunc , ax , abovethreshold_color)

示例 1:标准树状图

Python


Python program to plot the hierarchical

clustering dendrogram using SciPy

Import the python libraries

import numpy as np

from scipy.cluster import hierarchy

import matplotlib.pyplot as plt

Create an array

x = np

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/50420.html
点赞
0.00 平均评分 (0% 分数) - 0