前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >OPTICS聚类算法详解

OPTICS聚类算法详解

作者头像
生信修炼手册
发布2021-03-24 17:12:44
发布2021-03-24 17:12:44
2.6K00
代码可运行
举报
文章被收录于专栏:生信修炼手册生信修炼手册
运行总次数:0
代码可运行

DBSCAN算法对于邻域半径eps和最小样本数minPoints这两个参数比较敏感,不同的参数取值会产生不同的聚类效果。为了降低参数设置对聚类结果造成的不稳定性,在DBSCAN算法的基础上,提出了OPTICS算法,全称如下

Ordering Points to identify the clustering structure

通过对样本点排序来识别聚类结构,为了搞清楚该算法,首先要理解以下两个基本概念

1. core distance,核心距离是使一个样本点成为core points的最小半径,在给定邻域半径eps和minPoints参数的前提下,核心距离可以比给定的eps更小

2. reachability distance,可达距离指的是样本与core point的距离

上述两种距离的定义可以参考下图来理解

核心距离的作用用于判断一个样本是否为core points, 如果核心距离小于等于eps, 则样本为核心样本点;如果核心距离大于eps, 则样本点不是核心样本点,图示如下

可达距离则用于对样本点进行排序,这也是OPTICS算法中Ordering Points的由来。该算法的具体过程如下

1. 定义两个队列,有序队列和结果队列,有序队列用于存储core points及其密度直达points, 并按照可达距离升序排列;结果队列用于存储样本点的输出次序;有序队列中的points为待处理样本,结果队列中的points为处理之后的样本;

2. 选取一个未处理的core point, 将其放入结果队列,同时计算邻域内样本点的可达距离,按照可达距离升序将样本点依次放入有序队列;

3. 从有序队列中提取第一个样本,如果为core point, 则计算可达距离,将可达距离最小的点放入结果队列,如果不是core point, 则跳过该点,选取新的core point, 重复步骤2

4. 不断迭代第二步和第三步,直到所有样本点都处理完毕,然后输出结果队列中的样本点及其可达距离

处理完毕之后,根据样本的输出顺序和可达距离,可以绘制如下所示的柱状图,其中不同的峰谷对应不同不同的cluster, 红色表示噪声点

在scikit-learn中,使用OPTICS聚类的代码如下

代码语言:javascript
代码运行次数:0
复制
>>> from sklearn.cluster import OPTICS
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 5], [3, 6],[8, 7], [8, 8], [7, 3]])
>>> clustering = OPTICS(min_samples=2).fit(X)
>>> clustering.labels_
array([0, 0, 0, 1, 1, 1])

该算法继承了DBSCAN算法的优点,同时增强了其稳定性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档