【问题标题】:DBSCAN not giving correct results on spatial transportation dataDBSCAN 没有给出关于空间交通数据的正确结果
【发布时间】:2018-02-21 09:02:20
【问题描述】:

我正在尝试在涉及经纬度的交通数据中形成集群,但是

我得到了不正确的结果,因为它正在对分数进行分类,即使是中等

它们在同一个簇中的距离。

slat - 源纬度

slong - 源经度

    coords = source.as_matrix(columns=['slat', 'slong'])

    kms_per_radian = 6371.0088
epsilon = 2 / kms_per_radian
db = DBSCAN(eps=epsilon, min_samples=3, algorithm='ball_tree', metric='haversine').fit(np.radians(coords))

cluster_labels = db.labels_
source['cluster'] = db.labels_ # source is  the dataset

我尝试绘制 cartoDB 中的所有点,但集群不正确,

因为距离超过 2 公里的位置在同一个集群中。

请任何人都可以告诉如何做得更好

我按照clustering spatial data的步骤进行操作

我没有按照集群中心点的步骤,因为我无法在 python 中导入必要的库。

这就是我的结果不正确的原因。

请讲讲。

简而言之,我的目标是复制源和目的地的纬度和经度,就像 Grab 在文章中所做的那样,图像显示为

文章链接——

Grab clustering rides

请提供有关如何复制它的任何见解

【问题讨论】:

  • 嗨,Jatin,你知道了吗?我也在处理空间数据。

标签: python cluster-analysis spatial dbscan transport


【解决方案1】:

DBSCAN 明确允许 点的距离大于 epsilon,只要它们是密度连接。这就是为什么它被称为基于密度的方法,以及为什么您可以获得任意形状的集群。

一个常见的误解是,一个簇的任何两点最多只能相隔 epsilon。这称为完全连锁,会产生近似球形的簇。

【讨论】:

  • @ Anony-Mousse 你能建议一种方法来产生所需的输出,以便它相应地聚集。
  • 你没有告诉你想要的输出是什么。我已经在我的回答中提出了另一种方法。
猜你喜欢
  • 2013-06-21
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
相关资源
最近更新 更多