在GPS数据上运行DBSCAN:内存错误

问题描述 投票:0回答:1

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

数据集大小:超过200,000对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内存笔记本电脑上运行它?

python gps dbscan elki
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.