【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

这篇具有很好参考价值的文章主要介绍了【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本原理

和Birch聚类相似,层次聚类也是一种依赖树结构实现的聚类方法,其核心概念是相似度。根据相似度,可以将所有样本组织起来,从而构建一棵层次聚类树。

其中Birch算法的核心,叫做聚类特征树(Clustering Feature Tree),简称CF树。CF树由CF构成,每个CF都是三元组,表示为(N, LS, SS),其中N表示点数;LS表示点的向量和;SS表示CF各分量的平方和。

相比之下,层次聚类更加直接,为了说明层次聚类的特点,可以尝试绘制一下分层聚类树,其中绘图函数使用scipy中的dendrogram函数,其参数生成函数定义如下(可以不用管这个)

import numpy as np
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram
def getLinkageMat(model):
    children = model.children_
    cs = np.zeros(len(children))
    N = len(model.labels_)
    for i,child in enumerate(children):
        count = 0
        for idx in child:
            count += 1 if idx < N else cs[idx - N]
        cs[i] = count
    return np.column_stack([children, model.distances_, cs])

然后对AgglomerativeClustering算法进行测试

from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=50)
model = AgglomerativeClustering(distance_threshold=0, n_clusters=None)

model = model.fit(X)
mat = getLinkageMat(model)
test = dendrogram(mat)
plt.show()

其中,distance_threshold表示距离阈值,n_clusters为聚类个数,在这里均表示自动处理,最终得到的结果如下

【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

这个图横坐标表示簇的序号,纵坐标表示两个簇之间的距离。如果从上往下看,粉色的和蓝色的被明显分为两类,而后蓝色内部又被分为两类。如果以距离6为阈值,那么距离大于6的簇可分为三组。

绘图层次

通过调控dendrogram中的truncate_mode,可以修改绘图层次

test = dendrogram(mat, truncate_mode='level', p=3)
plt.show()

如下图所示,用括号括起来的横坐标表示被兼并的样本个数。

【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

定义距离

距离越近,则越相似,则越可以被归为一类。所以,如何定义距离在层次聚类中显得十分重要,AgglomerativeClustering的构造函数中比较重要的参数如下

AgglomerativeClustering(n_clusters=2, *, affinity='deprecated',linkage='ward')

其中affinity起到定义距离的作用,下面逐一演示不同距离时的聚类情况

distances = ["euclidean", "l1", "l2", "manhattan", "cosine"]
fig = plt.figure()
for i,d in enumerate(distances):
    model = AgglomerativeClustering(affinity=d,
        linkage='average', 
        distance_threshold=0, n_clusters=None)
    model = model.fit(X)
    mat = getLinkageMat(model)
    ax = fig.add_subplot(2,3,i+1)
    plt.title(d)
    test = dendrogram(mat, ax=ax, truncate_mode='level', p=3)

plt.show()

【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

从结果来看,除了余弦距离有些诡异之外,其他情况都还可以。而且曼哈顿距离与L1,欧氏距离和L2都有极强的相似性。

此外linkage 参数有4个选项:文章来源地址https://www.toymoban.com/news/detail-438126.html

  • ward :簇的方差最小
  • average:簇间的平均距离最小
  • complete:簇间的平均距离最大
  • single:单簇之间的距离最小

到了这里,关于【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见聚类算法及使用--层次聚类(Agglomerative clustering)

    前言 层次聚类顾名思义就是按照某个层次对样本集进行聚类操作,这里的层次实际上指的就是某种距离定义。 层次聚类最终的目的是消减类别的数量,所以在行为上类似于树状图由叶节点逐步向根节点靠近的过程,这种行为过程又被称为“自底向上”。 更通俗的,层次聚类

    2024年01月16日
    浏览(36)
  • 张伟伟-层次1 Mean_shift聚类算法和其他的聚类算法

    pycharm使用的简单教程 张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:zhangweiweicpp@163.com 个人CSDN主页:欢迎关注和相互交流学习. 代码的百度网盘链接:https://pan.baidu.com/s/1neOlGt-3240B9tjhJVOy0A

    2024年02月04日
    浏览(57)
  • 机器学习之聚类——双聚类简介及简单案例

    ​ ​ 活动地址:CSDN21天学习挑战赛         在生物学领域,为了研究基因表达 ,通常使用微阵列记录mRNA分子的含量并对基因的表达强度进行推断。它可以记录人体大量乃至全部基因在不同环境下的表达强度,并以矩阵形式进行储存,这些以矩阵形式存储的数据,被称为

    2024年02月16日
    浏览(37)
  • 机器学习之聚类-2D数据类别划分

    机器学习的一种方法,没有给定事先标记过的训练示例,自动对输入的数据进行分类或分群。 方式一:站着或坐着 方式二:全身或半身 方式三:蓝眼球或不是蓝眼球 没有对与错 寻找数据的共同点 优点: 算法不受监督信息(偏见)的约束,可能考虑到新的信息 不需要标签

    2024年01月21日
    浏览(32)
  • 层次聚类算法在人工智能医疗中的应用

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着人工智能技术的快速发展,医疗领域也逐渐迎来了信息化的春天。医疗数据的丰富性和复杂性为人工智能提供了大量的应用场景。层次聚类算法作为数据挖掘领域的一种经典算法,在医疗领域有着广泛的应用前景。本文

    2024年02月08日
    浏览(46)
  • 【机器学习】DBSCAN聚类算法(含Python实现)

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,可以将数据点分成不同的簇,并且能够识别噪声点(不属于任何簇的点)。 DBSCAN聚类算法的基本思想是: 在给定的数据集中,根据每个数据点周围其他数据点的密度情况,将数据点分为核心点

    2023年04月23日
    浏览(51)
  • 机器学习之网格搜索技术,如何在Auto-sklearn中应用网格搜索技术

    网格搜索(Grid Search)是一种常用的 超参数调优 方法,它通过遍历给定的超参数组合,从中寻找最优的超参数组合。 可以用于选择最佳模型参数。在机器学习模型的训练过程中,有许多 参数需要设置 ,例如神经网络中的隐藏层数、每层的神经元数量等。这些参数会影响模型

    2024年02月09日
    浏览(37)
  • 【OpenCV-Python】——机器学习kNN算法&SVM算法&k均值聚类算法&深度学习图像识别&对象检测

    目录 前言: 1、机器学习 1.1 kNN算法 1.2 SVM算法(支持向量机)  1.3 k均值聚类算

    2024年02月05日
    浏览(45)
  • 机器学习之Python使用KNN算法对鸢尾花进行分类

    要求: (1)数据集划分为测试集占20%; (2)n_neighbors=5; (3)评价模型的准确率; (4)使用模型预测未知种类的鸢尾花。 (待预测数据:X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4.3 , 1.3]]) iris数据集有150组,每组4个数据。 第一步:引入所需库 第二步:划分测试集占20% test_size为

    2024年02月08日
    浏览(36)
  • 【机器学习算法】聚类算法-4 模糊聚类 密度聚类,如何判断超参数:数据群数

    目录 聚类算法 模糊聚类法 密度聚类法 DBSCAN的介绍 2个概念密度可达(Density-Reachable)和密度相连(Density-Connected) DBSCAN的优缺点 数据群数的判断 R-Squared(R2) semi-Partial R-Squared 轮廓系数 总结 我的主页:晴天qt01的博客_CSDN博客-数据分析师领域博主 目前进度:第四部分【机器

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包