【发布时间】:2021-05-30 00:37:03
【问题描述】:
假设我将以下数据框存储为一个名为坐标的变量,其中前几行如下所示:
business_lat business_lng business_rating
0 19.111841 72.910729 5.
1 19.111342 72.908387 5.
2 19.111342 72.908387 4.
3 19.137815 72.914085 5.
4 19.119677 72.905081 2.
5 19.119677 72.905081 2.
. . .
. . .
. . .
如您所见,此数据是地理空间数据(具有 lat 和 lng),并且每一行都有一个附加值 business_rating,它对应于该行中 latlng 处的企业评级。我想对数据进行聚类,将附近且具有相似评级的企业分配到同一个聚类中。本质上,我需要一个地理空间集群,并要求集群必须考虑评级列。
我在网上查了一下,并没有真正找到很多解决方法:只有严格的地理空间聚类(只有要聚类的特征是 latlng)或非空间聚类。
我在下面运行了一个简单的 DBSCAN,但是当我绘制聚类结果时,它似乎并没有正确地做我想要的。
from sklearn.cluster import DBSCAN
import numpy as np
db = DBSCAN(eps=2/6371., min_samples=5, algorithm='ball_tree', metric='haversine').fit(np.radians(coordinates))
尝试调整 DBSCAN 的参数、对数据进行一些额外的处理或同时使用不同的方法会更好吗?
【问题讨论】:
标签: python scikit-learn cluster-analysis geospatial dbscan