zoukankan      html  css  js  c++  java
  • 聚类算法总览

    聚类分析就是在没有给定类别标签的情况下,根据数据相似性来进行分组的方法,是一种无监督的算法。聚类根据数据自身的距离或相似度将其划分为若干组,划分的原则是组内距离最小化而组间距离最大化。

    常用聚类方法

    类别 包括的主要算法
    划分方法 k-means(k-平均)、k-medoids(k-中心点)、Clarans(基于选择的算法)
    层次分析方法 BIRCH(平衡迭代规约和聚类)、CURE(代表点聚类)、CHAMELEON(动态模型)
    基于密度的方法 DSBCAN(基于高密度连接区域)、DENCLUE(密度分布函数)、OPTICS(对象排序识别)
    基于网格的方法 STING(统计信息网络)、CLIOUE(聚类高维空间)、WAVE-CLUSTER(小波变化)
    基于模型的方法 统计学方法、神经网络方法

    常用聚类分析算法

    算法名称 算法描述
    k-means k-均值聚类,在最小化误差函数的基础上将数据划分为预定的类数k.原理简单,便于处理大量数据。
    k-中心点 k-均值算法对孤立点敏感性,k-中心点算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心
    系统聚类

    系统聚类也称为多层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,其所包含的对象就越少,但这些对象间的共同

    特征越多,该方法只适合在小数据量的时候使用,数据量大的时候速度会非常慢。

    聚类主要函数列表

    对象名 函数功能 所属工具箱
    kmeans k-均值聚类 sklearn.cluster
    AffinityPropagation 吸引力传播聚类,07年提出,几乎优于所有其他方法,不需要指定聚类数,但运行效率较低 sklearn.cluster
    MeanShift 均值漂移聚类算法 sklearn.cluster
    SpectralClustering 谱聚类,具有效果比k均值好,速度比k均值快等特点 sklearn.cluster
    AgglomerativeClustering 层次聚类,给出一颗聚类层次树 sklearn.cluster
    DBSCAN 具有噪声的基于密度的聚类方法 sklearn.cluster
    BIRCH 综合的层次聚类算法,可以处理大规模数据的聚类 sklearn.cluster

    k-means聚类的过程:

    1. 首先,我们选择一些类/组,并随机初始化它们各自的中心点。为了算出要使用的类的数量,最好快速查看一下数据,并尝试识别不同的组。中心点是与每个数据点向量长度相同的位置。

    2. 通过计算数据点与每个组中心之间的距离来对每个点进行分类,然后将该点归类于组中心与其最接近的组中。

    3. 根据这些分类点,我们利用组中所有向量的均值来重新计算组中心。

     4. 重复这些步骤来进行一定数量的迭代,或者直到组中心在每次迭代后的变化不大。你也可以选择随机初始化组中心几次,然后选择看起来提供了最佳结果的运行。

    计算

    聚类方法 优点 缺点
    k-means 速度快,计算少 初始聚类随机,结果重复性差
         
         
         
         
         

    参考资料:

    1、python数据分析与挖掘实战

    2、https://mp.weixin.qq.com/s/abD7Lk8V_c9WujzsmzTmgw

     

  • 相关阅读:
    POJ-1189 钉子和小球(动态规划)
    POJ-1191-棋盘分割(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
  • 原文地址:https://www.cnblogs.com/enhaofrank/p/12831114.html
Copyright © 2011-2022 走看看