机器学习算法基础--层次聚类法

news/2024/5/20 9:13:37 标签: 机器学习, 算法, 聚类

文章目录

    • 1.层次聚类法原理简介
    • 2.层次聚类法基础算法演示
      • 2.1.Single-linkage的计算方法演示
      • 2.2.Complete-linkage的计算方法演示
      • 2.3.Group-average的计算方法演示
    • 3.层次聚类法拓展算法介绍
      • 3.1.质心法原理介绍
      • 3.2.基于中点的质心法
      • 3.3.Ward方法
    • 4.层次聚类法应用实战
      • 4.1.层次聚类聚类应用
      • 4.2.层次聚类聚类树绘制
        • 4.2.1.Single-linkage连接方法
        • 4.2.2.Complete-linkage连接方法
        • 4.2.3.Group-average连接方法
        • 4.2.4.Centroid连接方法
        • 4.2.5.Ward连接方法
    • 5.致谢

1.层次聚类法原理简介

#聚合聚类(层次聚类方法)
"""
1.层次聚类顾名思义就是按照某个层次对样本集进行聚类操作,这里层次并非是真实的层次,实际上指的就是某种距离定义,(我们其实已经学过了很多的距离定义了)
2.层次聚类方法的目标就是采用自下而上的方法去去消除类别的数量,类似与树状图的由叶子结点向根结点靠拢的过程。
3.更简单的说,层次聚类是将初始化的多个类簇看做树节点,每一次迭代都会两两距离相近的类簇进行合并,如此反复,直至最终只剩一个类簇(也就是根结点)。
"""

2.层次聚类法基础算法演示

层次聚类法的三种不同方法:
依据对相似度(距离)的不同定义,将层次聚类法的聚类方法分为三种:
1.Single-linkage:要比较的距离为元素对之间的最小距离。
2.Complete-linkage:要比较的距离为元素对之间的最大距离。
3.Group average:要比较的距离为类之间的平均距离。
我们首先拿出几个数据进行计算演示一番这最基础的算法,如图所示,这是ABCDE五个点的相互之间的距离:
在这里插入图片描述

2.1.Single-linkage的计算方法演示

Single-linkage:要比较的距离为元素对之间的最小距离。所以我们需要找到每个点对应的最小距离。
第一步:A的最小距离是B,所以AB先合并,记作{AB}。
在这里插入图片描述
第二步:以AB为整体进行对C合并的研究。在这里插入图片描述
最后发现CD最短,合并记作{CD}。
第三步:以{AB}/{CD}为整体进行对E合并的研究。
在这里插入图片描述
最后发现CD->E最短,合并记作{CDE}。
第四步:合并最后的两个簇即可,即{AB}{CDE}合并。

2.2.Complete-linkage的计算方法演示

2.Complete-linkage:要比较的距离为元素对之间的最大距离。所以我们需要找到每个点对应的最大距离。
第一步:A与各个元素之间的最大距离的最小距离是B,所以AB先合并,记作{AB}。
aad5384fbf5f056a6.png)
第二步:
C与各元素的最大距离的最小值如下所示:
在这里插入图片描述
所以C的各元素的最大距离的最小值是D,合并CD并且记作{CD}。
第三步:以{AB}/{CD}为整体进行对E合并的研究。
在这里插入图片描述
最后发现CD->E最短,合并记作{CDE}。
第四步:合并最后的两个簇即可,即{AB}{CDE}合并。

2.3.Group-average的计算方法演示

Group-average要比较的距离为元素对之间的最平均距离。所以我们需要找到每个点对应的最平均距离。
第一步:A与各个元素之间的最大距离的最小距离是B,所以AB先合并,记作{AB}。
aad5384fbf5f056a6.png)
第二步:
C与各元素的平均距离的最小值如下所示:
在这里插入图片描述
所以C的各元素的最平均距离的最小值是D,合并CD并且记作{CD}。
第三步:以{AB}/{CD}为整体进行对E合并的研究。
在这里插入图片描述
最后发现CD->E的平均距离最短,合并记作{CDE}。
第四步:合并最后的两个簇即可,即{AB}{CDE}合并。

3.层次聚类法拓展算法介绍

来源:https://blog.csdn.net/huangguohui_123/article/details/106995538

3.1.质心法原理介绍

在这里插入图片描述
如果两个族群合并之后,下一步合并时的最小距离反而减小(质心在不断变化),我们则称这种情况为倒置(Reversal/Inversion),在系统树图中表现为交叉(Crossover)现象。

在一些层次聚类方法中,如简单连接、完全连接和平均连接,倒置不可能发生,这些距离的度量是单调的(monotonic)。显然质心方法并不是单调的。

3.2.基于中点的质心法

在这里插入图片描述

3.3.Ward方法

在这里插入图片描述

4.层次聚类法应用实战

4.1.层次聚类聚类应用

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram, linkage
#%%
# 读取数据
data = pd.read_excel('Clustering_5.xlsx')
# 提取特征和标签
X = data.iloc[:, :2].values
y = data['y'].values
# 创建凝聚聚类模型
n_clusters = 5
agg_clustering = AgglomerativeClustering(n_clusters=n_clusters)
# 进行聚类
labels = agg_clustering.fit_predict(X)
#%%
# 绘制聚类结果
plt.figure(figsize=(10, 6))
for i in range(n_clusters):
    cluster_points = X[labels == i]
    plt.scatter(cluster_points[:, 0], 
                cluster_points[:, 1], label=f'Cluster {i + 1}',s=16)

plt.title('Agglomerative clustering')
plt.legend()
plt.show()

聚类效果比较不错
在这里插入图片描述

4.2.层次聚类聚类树绘制

4.2.1.Single-linkage连接方法
#%%
linked = linkage(X, 'single')  # 使用ward方法计算链接
dendrogram(linked, orientation='top', 
           distance_sort='descending', show_leaf_counts=True)
plt.title('Single-linkage连接方法')
plt.show()

在这里插入图片描述

4.2.2.Complete-linkage连接方法
#%%
linked = linkage(X, 'complete')  # 使用ward方法计算链接
dendrogram(linked, orientation='top', 
           distance_sort='descending', show_leaf_counts=True)
plt.title('Complete-linkage连接方法')
plt.show()

在这里插入图片描述

4.2.3.Group-average连接方法
#%%
linked = linkage(X, 'average')  # 使用ward方法计算链接
dendrogram(linked, orientation='top', 
           distance_sort='descending', show_leaf_counts=True)
plt.title('Group-average连接方法')
plt.show()

在这里插入图片描述

4.2.4.Centroid连接方法
#%%
linked = linkage(X, 'centroid')  # 使用ward方法计算链接
dendrogram(linked, orientation='top', 
           distance_sort='descending', show_leaf_counts=True)
plt.title('Centroid连接方法')
plt.show()

在这里插入图片描述

4.2.5.Ward连接方法
# 绘制树状图(聚类树)
linked = linkage(X, 'ward')  # 使用ward方法计算链接
dendrogram(linked, orientation='top', 
           distance_sort='descending', show_leaf_counts=True)
plt.title('Ward连接方法')
plt.show()

在这里插入图片描述

5.致谢

本章内容的完成离不开以下大佬文章的启发和帮助,在这里列出名单,如果对于内容还有不懂的,可以移步对应的文章进行进一步的理解分析。
1.层次聚类法的基础算法演示https://blog.csdn.net/qq_40206371/article/details/123057888
2.层次聚类法的进阶算法演示https://blog.csdn.net/huangguohui_123/article/details/106995538
在文章的最后再次表达由衷的感谢!!

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

相关文章

【Leetcode】166.分数到小数

一、题目 1、题目描述 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。 如果小数部分为循环小数,则将循环的部分括在括号内。 如果存在多个答案,只需返回 任意一个 。 对于所有给定的输入,保证 答案字符串的长度小于 104 。…

番外5:下载+安装+配置Linux

任务前期工作: 01. 电脑已安装好VMware Workstation软件; 02.提前下载好Rhel-8.iso映像文件(文件较大一般在9.4GB,建议采用迅雷下载),本人使用的以下版本(地址ed2k://|file|rhel-8.4-x86_64-dvd…

【React】React组件生命周期以及触发顺序(部分与vue做比较)

最近在学习React,发现其中的生命周期跟Vue有一些共同点,但也有比较明显的区别,并且执行顺序也值得讨论一下,于是总结了一些资料在这里,作为学习记录。 v17.0.1后生命周期图片 初始化阶段 由ReactDOM.render()触发 —…

2023-09-29 LeetCode每日一题(种花问题)

2023-09-29每日一题 一、题目编号 605. 种花问题二、题目链接 点击跳转到题目位置 三、题目描述 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都…

数字时代古文的传承———云南文化瑰宝“爨文化“(我为家乡发声)

文章目录 前言⭐ "爨"意味着什么,究竟何为"爨文化"?⭐ 爨文化鲜明的特点1.经济生活2.政治生活3.文化艺术 ⭐ 数字时代古文的传承与传播1.藏品数字化2.建立数据库3.传播大众化 前言 爨文化是继古滇文化之后崛起于珠江正源南盘江流域…

[Linux] 5.Linux虚拟机和Windows文件共享

一、拖拽 如果安装了VMware Tool可以从Windows直接拖进Linux中共享文件,通过拖拽的方式可以把文件从Linux 传输到Windows 二、 文件共享 需要安装VMware Tool点击添加,选择Windows文件的路径,名称作为Linux访问的路径 cd什么都不加&#xff…

Java8 yyyy/MM/dd和uuuu/MM/dd的不同

参考资料 Using new Java 8 DateTimeFormatter to do strict date parsingJavaにおける日付文字列の書式チェック方法Java8のDate and Time APIではyyyyじゃなくてuuuuを使う 目录 零. 总结一. 非严格模式下二. 严格模式下2.1 yyyy2.2 uuuu 三. JapaneseDate 零. 总结 ⏹在Ja…

picoctf_2018_shellcode

picoctf_2018_shellcode Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位,啥都没开 这个看着挺大的,直接来个ROPchain,…