您当前的位置: 首页 >  机器学习

寒冰屋

暂无认证

  • 1浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

实现机器学习的循序渐进指南XI——DBSCAN

寒冰屋 发布时间:2019-06-20 21:25:29 ,浏览量:1

目录

介绍

DBSCAN模型

开始

聚类算法

参数估计

结论与分析

可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表。

介绍

基于密度的噪声应用空间聚类(DBSCAN)是一种基于密度的聚类算法。与其他聚类算法不同,DBSCAN将最大密度可到达样本集视为聚类。KMeans缺乏对非球形数据进行聚类的能力,而DBSCAN可以对任何形状的数据进行聚类。

DBSCAN模型 开始
  • Ε邻域:来自对象的半径为ε的对象。
  • 核心要点:如果一个样本在ε-邻居内具有超过指定数量的点(m),则该样本是核心点。
  • 直接密度可达:对于样本集合D,如果样本点q在p的Ε邻域内,并且p为核心对象,那么对象q从对象p直接密度可达。
  • 密度可达:如果存在对象链p1,...,pn,对象q可以从p密度到达,其中p1 = p,pn = q使得pi + 1可以直接密度可达pi,对于所有1 0: Q = core_neighbor[0] del core_neighbor[0] if Q in initial_centers.keys(): diff = [sample for sample in initial_centers[Q] if sample in unvisited] core_neighbor.extend(diff) unvisited = [sample for sample in unvisited if sample not in diff] k += 1 label[k] = [val for val in visited if val not in unvisited] for index in label[k]: if index in centers.keys(): del centers[index] 参数估计

    DBSCAN算法需要2个参数ε,它们指定了彼此之间的接近点应该如何被视为集群的一部分;而参数m,它指定一个点应该包含在一个簇中的邻居数量。以wiki为例,我们计算在同一分区内从每个点到最近邻居的距离,如下所示,我们可以很容易地确定ε= 22。

    对于参数m,我们计算核心点的ε邻域内有多少样本,如下所示。我们选择m = 129,因为它是第一个谷底。

    结论与分析

    DBSCAN能够聚类非球形数据,但不能反映高维数据。当密度分布不​​均匀时,聚类性能不太好。KMeans和DBSCAN之间的聚类性能如下所示。很容易发现DBSCAN具有比KMeans更好的聚类性能。

    可以在MachineLearning中找到本文中的相关代码和数据集。

    有兴趣的小伙伴可以查看上一篇。

     

    原文地址:https://www.codeproject.com/Articles/5129186/Step-by-Step-Guide-to-Implement-Machine-Learning-8

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0562s