基于具有指定群集的一组纬度 - 长点的最小距离来分配群集

时间:2018-03-20 15:09:42

标签: python loops cluster-analysis distance

我有一个数据帧(df1)如下:

clust   longitude   latitude
1   77.62279999 12.95248389
1   77.62517676 12.95027966
2   77.62753442 12.93745478
2   77.62753442 12.93745478
3   77.62217671 12.93353553
3   77.62217671 12.93353553

我有另一个数据框,其中包含经度/纬度(df2)。我想遍历所有这些点,并且每个点迭代df1的所有点,并根据最小距离分配簇值。

我可以执行循环和计算距离,但是如何为群集分配最小距离。是循环这种问题的最佳方法还是可以有更好的方法,如knn或Kd-tree?

2 个答案:

答案 0 :(得分:0)

这称为最近邻居分类

对于测试集的每个点,在训练数据中找到最近邻居并预测是标签。

如果您有很多培训日,请使用索引。 K-d树可能不支持Haversine距离,因此覆盖树木或R *树可能是更好的选择。

答案 1 :(得分:0)

确定。这对我有用:

X = np.array(filtered1[['latitude','longitude']])

y = np.array(filtered1['clust'])
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=10)
neigh.fit(X, y) 
rest_x=np.array(rest1[['Latitude','Longitude']])
rest_y=neigh.predict(rest_x)