文章目录
python 实现网格聚类算法
聚类算法很多,包括基于划分的聚类算法(如:kmeans),基于层次的聚类算法(如:BIRCH),基于密度的聚类算法(如:DBScan),基于网格的聚类算法等等。基于划分和层次聚类方法都无法发现 非凸面形状 的簇,真正能有效发现任意形状簇的算法是基于密度的算法,但基于密度的算法一般时间复杂度较高,1996年到2000年间,研究数据挖掘的学者们提出了大量基于网格的聚类算法,网格方法可以有效减少算法的计算复杂度,且同样对 密度参数 敏感。
一、基于网格聚类原理
基本思想:
基于网络的方法:这类方法的原理就是将数据空间划分为网格单元,将数据对象集映射到网格单元中,并计算每个单元的密度。根据预设的 密度阈值 判断每个网格单元是否为 高密度单元 ,由邻近的稠密单元组形成 “类”(簇)。
算法过程:
算法的核心步骤: 划分网格
使用网格单元内数据的统计信息对数据进行压缩表达
基于这些统计信息判断高密度网格单元
最后将相连的高密度网格单元识别为簇
主要算法: STING:基于网格多分辨率,将空间划分为方形单元,对应不同分辨率
CLIQUE:结合网格和密度聚类的思想,子空间聚类处理大规模高维度数据
WaveCluster:用小波分析使簇的边界变得更加清晰
二、算法实现
本人主要来进行 API 调用攻城狮的简单说明:
1. CLIQUE 算法
因为 CLIQUE 算法涉及对聚类的数据进行划分