对于我目前正在进行的项目,我需要将相对大量的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)
所有这些方法都给了我相同的内存错误
我已经阅读了这些帖子:DBSCAN for clustering of geographic location data Clustering 500,000 geospatial points in python
所有这些帖子都表明数据集的大小不应成为问题。但是,不知怎的,我不断收到错误消息。如果这是一个简单的答案,我很抱歉。是因为设置?或者仅仅因为我在我的16G内存笔记本电脑上运行它?
对于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