当前位置: 首页 >  技术分享 >  【scikit-learn基础】--『监督学习』之 层次聚类

【scikit-learn基础】--『监督学习』之 层次聚类

导读:层次聚类 算法是机器学习中常用的一种无监督学习算法,它用于将数据分为多个类别或层次。.该方法在计算机科学、生物学、社会学等多个领域都有广泛应用。.层次聚类 算法的历史可以追溯到上世纪60年代,当时它主要被用于社会科学中。.随着计算机技术的发展,这种方法在90年代得到了更为广泛的应

层次聚类 算法是机器学习中常用的一种无监督学习算法,它用于将数据分为多个类别或层次。
该方法在计算机科学、生物学、社会学等多个领域都有广泛应用。

层次聚类 算法的历史可以追溯到上世纪60年代,当时它主要被用于社会科学中。
随着计算机技术的发展,这种方法在90年代得到了更为广泛的应用。

1. 算法概述

层次聚类 的基本原理是创建一个层次的聚类,通过不断地合并或分裂已存在的聚类来实现。
它分为两种策略:

  1. 凝聚策略 :初始时将每个点视为一个簇,然后逐渐合并相近的簇
  2. 分裂策略 :开始时将所有点视为一个簇,然后逐渐分裂

scikit-learn中,层次聚类 的策略有4种

  1. ward:默认策略,也就是最小方差法。它倾向于合并那些使得合并后的簇内部方差最小的两个簇
  2. complete:计算两个簇之间的距离时,考虑两个簇中距离最远的两个样本之间的距离
  3. average:计算两个簇之间的距离时,考虑两个簇中所有样本之间距离的平均值
  4. single:计算两个簇之间的距离时,考虑两个簇中距离最近的两个样本之间的距离

2. 创建样本数据

下面创建月牙形状数据来看看层次聚类的各个策略之间的比较。

from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

ax = plt.subplot()

X, y = make_moons(noise=0.05, n_samples=1000)
ax.scatter(X[:, 0], X[:, 1], marker="o", c=y, s=25, cmap=plt.cm.prism)

plt.show()


关于各种样本数据的生成,可以参考:TODO

3. 模型训练

用四种不同的策略来训练上面月牙形状的样本数据。

from sklearn.cluster import AgglomerativeClustering

# 定义
regs = [
    AgglomerativeClustering(linkage="ward"),
    AgglomerativeClustering(linkage="complete"),
    AgglomerativeClustering(linkage="single"),
    AgglomerativeClustering(linkage="average"),
]

# 训练模型
for reg in regs:
    reg.fit(X, y)

fig, axes = plt.subplots(nrows=2, ncols=2)
fig.set_size_inches((10, 8))

# 绘制聚类之后的结果
axes[0][0].scatter(
    X[:, 0], X[:, 1], marker="o", c=regs[0].labels_, s=25, cmap=plt.cm.prism
)
axes[0][0].set_title("ward 策略")

axes[0][1].scatter(
    X[:, 0], X[:, 1], marker="o", c=regs[1].labels_, s=25, cmap=plt.cm.prism
)
axes[0][1].set_title("complete 策略")

axes[1][0].scatter(
    X[:, 0], X[:, 1], marker="o", c=regs[2].labels_, s=25, cmap=plt.cm.prism
)
axes[1][0].set_title("single 策略")

axes[1][1].scatter(
    X[:, 0], X[:, 1], marker="o", c=regs[3].labels_, s=25, cmap=plt.cm.prism
)
axes[1][1].set_title("average 策略")

plt.show()

从结果可以看出,single策略 效果最好,它聚类的结果与原始数据的分类情况最为接近。
不过,这并不能说明single策略 由于其它策略,只能说明single策略 最适合上面的样本数据。

4. 总结

层次聚类 在许多场景中都得到了应用,例如图像分割、文档聚类、生物信息学中的基因聚类等。
它特别适合那些需要多层次结构的应用。

层次聚类 的最大优势 在于它提供了一种层次结构的聚类,这对于许多应用来说是非常自然 的,它能够展示数据在不同粒度下的聚类结果。

但它也存在一些缺点
首先,它的计算复杂度 相对较高,特别是当数据量很大时;
其次,一旦做出合并或分裂的决策,就不能撤销,这可能导致错误的累积
此外,确定何时停止 合并或分裂也是一个挑战。

上一篇:What is FFT? FFT

下一篇:umich cv-2-2

内容
  • 【Haxe】(二)字符串与变量的输入输出
    【Haxe】(二)字符串与变量的
    2023-12-06
    前言.每次学习一门新语言,各种手册和教程一上来就是讲变量如何定义,数据结构怎么用,很少有讲输入输出应该怎么写的。我比较喜
  • Leetcode刷题笔记——二分法
    Leetcode刷题笔记——二分
    2023-12-04
    二分法是搜索算法中极其典型的方法,其要求输入序列有序并可随机访问。算法思想为.输入:有序数组nums,目的数值targe
  • 高温高压电子元件生产
    高温高压电子元件生产
    2023-10-02
    高温高压电子元件生产.随着科技的不断发展,高温高压电子元件在现代电子设备中扮演着*益重要的角色。在工业、航空航天、汽车等
  • ***集群架构规划与设计
    ***集群架构规划与设计
    2023-10-02
    ***集群架构规划与设计.概述.随着互联网和大数据技术的快速发展,企业对***的性能和稳定性要求越来越高。为了满足这些需
  • 电子元件**链**解决方案
    电子元件**链**解决方案
    2023-10-02
    电子元件**链**解决方案.在当今全球化的市场中,**链**是企业成功的关键因素之一。特别是在电子元件行业,**链**尤
  • 环保型电子元件生产
    环保型电子元件生产
    2023-10-02
    环保型电子元件生产.随着人们对环保的重视,环保型电子元件生产成为了当前电子行业的热门话题之一。在过去,电子元件的生产往往
  • 电子元件可靠性分析与优化
    电子元件可靠性分析与优化
    2023-10-02
    电子元件可靠性分析与优化.引言.电子元件是现代电子设备的基本构成部分,其可*性直接影响着设备的性能和使用寿命。因此,对电
  • 个性化推荐引擎技术
    个性化推荐引擎技术
    2023-10-02
    个性化推荐引擎技术.个性化推荐引擎技术是一种利用用户行为数据,通过算法和模型实现个性化推荐的技术。随着互联网的发展,信息
  • 数据安全加密软件
    数据安全加密软件
    2023-10-02
    数据安全加密软件.随着互联网的发展和普及,数据安全已经成为了人们关注的热点问题。在这个大数据时代,各种个人和机构的数据都
  • ***迁移与升级解决方案
    ***迁移与升级解决方案
    2023-10-02
    ***迁移与升级解决方案.随着业务的不断扩大和发展,很多企业逐渐意识到原有的***已经不能满足日益增长的需求,因此需要进
  • 云存储解决方案
    云存储解决方案
    2023-10-02
    云存储解决方案.随着互联网技术的不断发展,越来越多的企业开始意识到数据存储和管理的重要性。传统的本地存储方式已经不能满足
  • 定制化电子元件解决方案
    定制化电子元件解决方案
    2023-10-02
    定制化电子元件解决方案.在现代科技发展迅速的时代,电子元件的需求日益增加,同时对于定制化的需求也在不断提升。定制化电子元