Chameleon两阶段聚类算法

参考文献:http://www.cnblogs.com/zhangchaoyang/articles/2182752.html(用了很多的图和思想)
博客园(华夏35度) 作者:Orisun
数据挖掘算法-Chameleon算法.百度文库

我的算法库:https://github.com/linyiqun/lyq-algorithms-lib(里面可能有你正想要的算法)

算法介绍

本篇文章讲述的还是聚类算法,也是属于层次聚类算法领域的,不过与上篇文章讲述的分裂实现聚类的方式不同,这次所讲的Chameleon算法是合并形成最终的聚类,恰巧相反。Chamelon的英文单词的意思是变色龙,所以这个算法又称之为变色龙算法,变色龙算法的过程如标题所描绘的那样,是分为2个主要阶段的,不过他可不是像BIRCH算法那样,是树的形式。继续看下面的原理介绍。

算法原理

先来张图来大致了解整个算法的过程。


上面图的显示过程虽然说有3个阶段,但是这其中概况起来就是两个阶段,第一个是形成小簇集的过程就是从Data Set 到k最近邻图到分裂成小聚餐,第二个阶段是合并这些小聚簇形成最终的结果聚簇。理解了算法的大致过程,下面看看里面定义的一些概念,还不少的样子。

为了引出变色龙算法的一些定义,这里先说一下以往的一些聚类算法的不足之处。

1、忽略簇与簇之间的互连性。就会导致最终的结果形成如下:


2、忽略簇与簇之间的近似性。就会导致最终的聚类结果变成这样“:

为什么提这些呢,因为Chameleon算法正好弥补了这2点要求,兼具互连性和近似性。在Chameleon算法中定义了相对互连性,RI表示和相对近似性,RC表示,最后通过一个度量函数:

function value = RI( Ci, Cj)× RC( Ci, Cj)α,α在这里表示的多少次方的意思,不是乘法。

来作为2个簇是否能够合并的标准,其实这些都是第二阶段做的事情了。

在第一阶段,所做的一件关键的事情就是形成小簇集,由零星的几个数据点连成小簇,官方的作法是用hMetic算法根据最小化截断的边的权重和来分割k-最近邻图,然后我网上找了一些资料,没有确切的hMetic算法,借鉴了网上其他人的一些办法,于是用了一个很简单的思路,就是给定一个点,把他离他最近的k个点连接起来,就算是最小簇了。事实证明,效果也不会太差,最近的点的换一个意思就是与其最大权重的边,采用距离的倒数最为权重的大小。因为后面的计算,用到的会是权重而不是距离。

我们再回过头来细说第二阶段所做的事情,首先是2个略复杂的公式(直接采用截图的方式):

                                                                              相对互连性RI=

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: chameleon聚类算法是一种基于密度的聚类算法,它可以自适应地调整聚类的数量和形状。该算法在Python中有多种实现,如Scikit-learn、PyClustering等。使用Python实现chameleon聚类算法可以方便地处理大规模数据,并且可以与其他Python库进行集成,如NumPy、Pandas等。 ### 回答2: Chameleon聚类算法是一种基于层次聚类的算法,它是一种自底向上的聚类方法。这个算法的主要思想是,将数据点看作是图中的节点,节点之间的距离就可以看作是图中的边。该算法首先将每个数据点看作是由单独一个聚类组成,然后通过迭代合并最近的聚类,进而形成更大的聚类,直到得到整个数据集的一个单一聚类。 Chameleon聚类算法的最重要的一步是距离度量,它使用了种类型的距离度量:对象距离和簇间距离。对象距离是数据点之间的距离,也称为欧几里得距离。簇间距离则是个聚类之间的距离,需要结合簇直径和簇之间的共享边。 该算法的一个优点是,它可以捕捉到任意形状的簇,并且对于凸和非凸的簇都表现得很好。此外,它还可以处理高维数据,并处理噪声和异常值。 Python是一种编程语言,是实现Chameleon聚类算法的理想选择。P ython具有广泛的科学计算库,如Scikit-learn等,这些库可以轻松地实现Chameleon聚类算法。同时,Python还有很多有用的数据可视化工具,可帮助分析和可视化聚类结果。 当实现Chameleon聚类算法时,首先需要将数据点转换为图形表示形式,并计算对象距离和簇间距离。接下来,通过迭代合并最近的聚类,将初始聚类转换为层次聚类,最终形成一个最优的聚类层次结构。在这个过程中,需要通过最小化簇间距离,最大化簇内距离,来评估簇的质量,并在簇不断合并的过程中更新这些量。 总的来说,使用Python实现Chameleon聚类算法,可以实现高效,准确的聚类,它可以应用于各种数据挖掘机器学习领域。 ### 回答3: chameleon聚类算法是一种基于层次聚类的聚类方法,它能够适应不规则的数据分布和不同的簇形状,因此在聚类非凸数据集方面比其他方法更优秀。 chameleon聚类算法采用自下而上的分层聚类策略,通过构建移动、合并和分裂三个基本操作来达到聚类的目的。该算法主要分为如下几个步骤: 1. 计算相似度矩阵:将数据集中所有对象之间的相似性计算出来,通常使用的相似性度量方式是欧式距离、曼哈顿距离、闵可夫斯基距离、余弦距离等。 2. 构建图并计算连接度:将相似矩阵转化为带权图,边的权重表示个对象之间的相似度。对于每个对象,计算其度数,表示对象与其他对象之间的关联度。 3. 移动:对于每个对象,比较其连接的邻居节点的连接度,如果某个邻居节点的连接度比自己高,则移动到邻居节点所在的邻域中。 4. 合并:对于位于同一邻域中的对象,构建新的超节点,并根据邻域对象之间的相似度对超节点进行连接权重计算。 5. 分裂:将超节点根据不同的组合方式分裂成若干个子节点,并根据子节点内部和子节点之间的相似度重新计算连接权重。 在Python中可以使用scikit-learn等机器学习库中的chameleon聚类算法实现,具体操作如下: 1. 加载数据:使用pandas等库从数据源中加载原始数据。 2. 特征提取:根据问题需求对数据进行预处理和特征提取。 3. 构建相似矩阵:使用scikit-learn库中的距离度量函数计算相似矩阵。 4. 进行聚类:使用scikit-learn库中的chameleon聚类算法进行聚类分析,并根据分析结果对数据进行分类。 5. 评估聚类结果:使用评估指标(如轮廓系数)等方法对聚类结果进行评估和优化。 总之,chameleon聚类算法可以在不同的数据类型和分布情况下获得良好的聚类效果,是一种非常有实际应用价值的聚类算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值