我有一组名字,经度和纬度坐标,我试图运行一个nearesat邻居搜索。
name lat long
0 Veronica Session 11.463798 14.136215
1 Lynne Donahoo 44.405370 -82.350737
2 Debbie Hanley 14.928905 -91.344523
3 Lisandra Earls 68.951464 -138.976699
4 Sybil Leef -1.678356 33.959323
当前我正在使用sklearn.neighbors对数据运行搜索,但收到类型错误。数据存储在 Dataframe 中。TypeError: NearestNeighbors.__init__() takes 1 positional argument but 2 positional arguments (and 2 keyword-only arguments) were given
另外,我需要最终结果保留原始名称沿着它们的新坐标顺序,我认为我目前的代码做不到这一点。我一直在使用sklearn documentation,但遇到了一点困难。请帮助我。
coords = list(zip(df['lat'],df['long']))
btree = sklearn.neighbors.NearestNeighbors(coords,algorithm='ball_tree',metric='haversine')
btree.fit(coords)
df['optimised_route']=btree
我有一个单独的循环计算半正矢距离手动这可以带来如果需要。
1条答案
按热度按时间k97glaaz1#
指出
coords
不应作为参数传递给NearestNeighbors
的注解是正确的。相反,lat
和long
参数应作为.fit()
方法中的列传递:现在,我们可以在
11.5,15.1
中查询NearestNeighbors
对象的索引。例如:使用它来计算两个最接近的邻居,并在原始 Dataframe 中查找结果索引nearest[0]
:这表明两个最近的点分别位于
11.46,14.13
和-1.6,33.9
: