博客
关于我
[552]python实现聚类算法(6种算法)
阅读量:621 次
发布时间:2019-03-13

本文共 1448 字,大约阅读时间需要 4 分钟。

Mean-shift 算法

概述

Mean-shift 是一种基于均值迁移的无监督学习聚类算法,由 Fukunage 在 1975 年提出。该算法通过迭代优化聚类中心,最终确定数据密度最大的区域。Yizong Cheng 在 1983 年扩展了该算法,引入核函数和权重系数,使其在图像处理、聚类等领域得到了广泛应用。

核心思想

算法核心在于不断寻找新的圆心坐标,直到密度最大的区域确定。此外,圆心的选择和半径的确定将直接影响算法效率。

算法函数

在 Scikit-learn 中,sklearn.cluster Meanshift 提供了该算法的实现。主要参数包括:

  • bandwidth:初始化若未给出,默认使用 sklearn.cluster.estimate_bandwidth 计算。
  • seeds:可选初始化圆心,默认为空。
  • bin_seeding:布尔值,默认为 False,可加速算法。

主要属性:

  • cluster_centers_:聚类中心坐标数组。
  • labels_:分类标签数组。

Spectral Clustering (谱聚类)

概述

Spectral Clustering 是一种基于图论的聚类方法,其核心思想是通过特征向量进行聚类,能够识别任意形状的样本空间。该算法将样本看作顶点,样本间的相似度作为边权重,帮助找到最优图分割。

核心思想

将样本间的相似度转换为图的边权重,然后通过特征分解得到特征向量,最终确定聚类中心。


Hierarchical Clustering (层次聚类)

概述

Hierarchical Clustering 再次分解数据,将其分类到不同的层次,直到满足终止条件(如数据收敛或达到预定聚类数)。主要分为两类:

  • 凝聚:从底层逐渐合并点群,直到形成大层次聚类。
  • 分裂:从顶层逐步细分,最终形成单个点群。

核心步骤

  • 初始化所有样本为独立群。
  • 找到最接近的两个群,合并为一个新群。
  • 重新计算新群与其余群的距离。
  • 重复上述步骤,直到满足终止条件。

  • DBSCAN (基于密度的聚类)

    概述

    DBSCAN 是一种基于密度的空间聚类算法,定义一个核心点组为一个聚类。核心点需满足点密度超过设定阈值(通常通过 epsmin_samples 确定)。

    核心步骤

  • 遍历所有样本,寻找核心点。
  • 连通核心点,扩展到包含足够多样本。
  • 标记噪声点(未能满足密度条件的点)。
  • 主要参数:

    • eps:密度计算的最大距离。
    • min_samples:核心点需包含的最小样本数。

    Birch (基于层次的聚类)

    概述

    Birch 算法通过层次聚类,逐层减少数据量,找到聚类结构。其核心思想是构建特征树,叶子节点即聚类中心。

    核心思想

  • 构建特征树,叶子节点为聚类。
  • 通过内部节点的聚类特征确定聚类数量。
  • 主要参数:

    • threshold:确定聚类数量。
    • branches_factor:每个节点最多包含的子群数。

    GaussianMixtureModel (GMM) (混合高斯模型)

    概述

    GMM 不是传统聚类算法,而是概率模型,基于多高斯分布近似数据分布。每个高斯分布代表一个聚类。

    核心思想

    • 数据分布由多个高斯分布组成,每个高斯分布代表一个聚类。
    • 通过 EM 算法估计高斯分布参数。

    主要参数:

    • n_components:高斯模型数量。
    • covariance_type:协方差类型,默认为 full

    总结

    以上算法各具特色,适用于不同应用场景。选择哪种方法需根据具体需求考量。

    转载地址:http://toaaz.baihongyu.com/

    你可能感兴趣的文章
    pandas100个骚操作:再见 for 循环!速度提升315倍!
    查看>>
    Pandas:对给定列求和 DataFrame 行
    查看>>
    Pandas、Matplotlib、Pyecharts数据分析实践
    查看>>
    Pandas中文官档~基础用法2
    查看>>
    Pandas中文官档~基础用法6
    查看>>
    pandas交换两列
    查看>>
    pandas实战:电商平台用户分析
    查看>>
    Pandas库常用方法、函数集合
    查看>>
    pandas打乱数据的顺序
    查看>>
    pandas改变一列值(通过apply)
    查看>>
    Pandas数据分析的环境准备
    查看>>
    Pandas数据可视化怎么做?用实战案例告诉你!
    查看>>
    Pandas数据处理与分析教程:从基础到实战
    查看>>
    Pandas数据结构之DataFrame常见操作
    查看>>
    pandas整合多份csv文件
    查看>>
    pandas某一列转数组list
    查看>>
    Pandas模块,我觉得掌握这些就够用了!
    查看>>
    Pandas玩转文本处理!
    查看>>
    SpringBoot 整合 Mybatis Plus 实现基本CRUD功能
    查看>>
    pandas的to_sql方法中使用if_exists=‘replace‘
    查看>>