MATLAB DBSCAB简介

MATLAB DBSCAN简介
DBSCAB简介
基于密度的带噪声应用空间聚类(DBSCAN)识别数据中任意形状的聚类和噪声(离群点)。统计与机器学习工具箱™ 函数dbscan可以对输入数据矩阵或观测值之间的成对距离执行聚类。dbscan返回集群索引和一个向量,指示作为核心点(集群内的点)的观测。与k-means聚类不同,DBSCAN算法不需要事先知道聚类的数目,而且聚类不一定是球状的。DBSCAN对于基于密度的异常点检测也很有用,因为它可以识别不属于任何集群的点。
对于要分配给簇的点,它必须满足其epsilon邻域(epsilon)至少包含最小邻域数(minpts)的条件。或者,该点可以位于满足epsilon和minpts条件的另一点的epsilon邻域内。DBSCAN算法识别三种类型的点:
核心点-在其epsilon邻域中至少有minpts邻居的簇中的点
边界点-在其epsilon邻域中具有少于minpts邻居的簇中的点
噪声点-不属于任何群集的异常值
DBSCAN可以使用范围广泛的距离度量,您可以为特定的应用程序定义自定义距离度量。距离度量的选择决定了邻域的形状
算法描述
对于指定的epsilon邻域epsilon值和核心点所需的最小邻域minpt数,dbscan函数按如下方式实现dbscan:
1、从输入数据集X中,选择第一个未标记的观测x1作为当前点,并将第一个簇标签C初始化为1。
2、在当前点的epsilon邻域epsilon内找到点集。这些点是邻域。
A、如果邻域的数目小于minpts,则将当前点标记为噪声点(或异常值)。转到步骤4。
注意:
dbscan可以在噪声点满足epsilon和minpts从X中的其他点设置的约束条件时,将噪声点重新分配给簇。这种重新分配点的过程发生在簇的边界点上。
B、否则,将当前点标记为属于群集C的核心点。
3、遍历每个邻居(新的当前点),重复步骤2,直到没有找到可以标记为属于当前集群C的新邻居。
4、选择X中的下一个未标记点作为当前点,并将簇计数增加1。
5、重复步骤2-4,直到X中的所有点都被标记。

语法
idx=dbscan(X,epsilon,minpts)使用dbscan算法(参见算法)将n-by-p数据矩阵X中的观测值划分为簇。dbscan基于邻域搜索半径epsilon的阈值和识别核心点所需的最小邻域minpt数对观测值(或点)进行聚类。函数返回一个n乘1向量(idx),其中包含每个观测值的簇索引。
idx=dbscan(X,epsilon,minpts,Name,Value)使用一个或多个名称-值对参数指定其他选项。例如,您可以指定’Distance’,‘minkowski’,‘P’,3以在DBSCAN算法中使用指数为3的minkowski距离度量。
idx=dbscan(D,epsilon,minpts,‘Distance’,‘precomputed’)返回观测值之间预先计算的成对距离D的簇索引向量。D可以是pdist或pdist2的输出,也可以是分别符合pdist或pdist2的输出格式的更一般的不同向量或矩阵。
[idx,corepts]=dbscan( )还返回一个逻辑向量corepts,其中包含由dbscan标识的核心点,使用前面语法中的任何输入参数组合。
X:输入数据,指定为n-by-p数字矩阵。X的行对应于观察(或点),列对应于变量。
Idx:群集索引,作为数值列向量返回。idx有n行,idx的每一行表示X中相应观测值的集群分配。等于–1的索引表示异常值(或噪声点)。
注意:
使用DBSCAN算法的集群分配取决于观察的顺序。因此,对X的行进行洗牌可能会导致对观察结果进行不同的集群分配。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值