我有一个数据帧(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?
答案 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)