博客
关于我
[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/

    你可能感兴趣的文章
    NO 157 去掉禅道访问地址中的zentao
    查看>>
    no available service ‘default‘ found, please make sure registry config corre seata
    查看>>
    no connection could be made because the target machine actively refused it.问题解决
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>
    No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
    查看>>
    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
    查看>>
    No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
    查看>>
    No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
    查看>>
    No module named 'crispy_forms'等使用pycharm开发
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>
    No new migrations found. Your system is up-to-date.
    查看>>
    No qualifying bean of type XXX found for dependency XXX.
    查看>>
    No resource identifier found for attribute 'srcCompat' in package的解决办法
    查看>>
    no session found for current thread
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    no1
    查看>>
    NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
    查看>>