【问题标题】:Running DBSCAN on GPS Data: Memory Error在 GPS 数据上运行 DBSCAN:内存错误
【发布时间】:2019-01-28 12:05:36
【问题描述】:

对于我目前正在进行的一个项目,我需要将相对大量的 GPS 对聚集到不同的位置集群中。在 StackOverflow 中阅读了许多帖子和建议并采取了不同的方法后,我仍然遇到运行它的问题......

数据集大小:超过 20 万对 GPS 坐标

[[108.67235   22.38068 ]
 [110.579506  16.173908]
 [111.34595   23.1978  ]
 ...
 [118.50778   23.03158 ]
 [118.79726   23.83771 ]
 [123.088512  21.478443]]   

尝试的方法: 1.HDBSCAN包

coordinates = df5.values
print(coordinates)
clusterer = hdbscan.HDBSCAN(metric='haversine', min_cluster_size=15)
clusterer.fit(coordinates)
  1. DBSCAN min_samples=15, metric= hasrsine, algorithm='ball_tree'

  2. 听从 Anony-Mousse 的建议,我也尝试了 ELKI。

所有这些方法都给了我同样的内存错误

我已阅读以下帖子: DBSCAN for clustering of geographic location data Clustering 500,000 geospatial points in python

所有这些帖子都表明数据集的大小应该不是问题。但是,不知何故,我一直收到错误消息。如果这是一个简单的答案,我很抱歉。是因为设置吗?还是仅仅因为我在 16G 内存的笔记本电脑上运行它...?

【问题讨论】:

  • 内存错误没有意义。因为 DBSCAN 只需要 O(n) 内存,所以只要有足够的时间,你应该能够在树莓派上运行它。请提供内存转储和其他诊断数据,而不仅仅是模糊的“内存不足”描述。也许你有太多其他的东西打开?什么天数仍然有效?
  • 仅作记录:200k 点需要大约 3.5 MB RAM。即使有一些开销,DBSCAN 也应该能够使用几兆字节的 RAM 轻松处理,而不是千兆字节。显示真正的错误信息!
  • @Anony-Mousse 嗨!你是我的幸运星!无论出于何种原因,我今天早上尝试使用 DBSCAN 运行它作为我一天的开始,它通过了! :) 谢谢!!!
  • 你也许应该少开一些东西,不时检查任务管理器,看看是什么进程占用了你的内存……不时关闭你不使用的狗窝!

标签: python gps dbscan elki


【解决方案1】:

对于 sklearn: 我在 sklearn 0.19.1 上使用旧版本时遇到了同样的问题,因为复杂度是 O(N^2)。

但是现在这个问题已经在新版本 0.20.2 中得到解决,不再出现内存错误,复杂度变成 O(n.d),其中 d 是平均邻居数。 这不是偶像的复杂性,而是比旧版本好得多。

查看此版本中的注释,以避免高内存使用: https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2019-03-26
    • 2016-08-09
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多