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

    你可能感兴趣的文章
    opencv resize
    查看>>
    Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
    查看>>
    opencv SVM分类Demo
    查看>>
    OpenCV VideoCapture.get()参数详解
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 人脸识别 C++实例代码
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>
    OpenCV+Python识别车牌和字符分割的实现
    查看>>
    OpenCV-Python接口、cv和cv2的性能比较
    查看>>
    OpenCV/Python/dlib眨眼检测
    查看>>
    opencv1-加载、修改、保存图像
    查看>>
    opencv10-形态学操作
    查看>>
    opencv11-提取水平直线和垂直直线
    查看>>