我正在尝试对地理位置(长/纬度)进行聚类,在聚类中数据点之间的距离应小于或等于30分钟。我可以使用Google Map API计算数据点之间的持续时间。如何将30分钟之内互相通勤的那些站点聚在一起?图片供参考:
您知道这不是传递性的吗?
A到B可能是30分钟,所以它们应该在同一群集中。
B到C也是30分钟,所以他们应该在同一个集群中。
但是A到C是60分钟,所以他们不应该。
因此您的群集定义不明确。首先,您需要确定自己真正想要的。然后尝试研究现有算法!
目前尚不清楚您要问的是什么,但是据我了解,您正在尝试根据经度和纬度在两个点之间建立关联。
因此,我使用您提到的API比较了A和B两点。您可以使用字典将两个点相互关联。假设我有一堂这样的课:
Point.py
class Point(object):
def __init__(latitudeToSet, longitudeToSet):
self.latitude = latitudeToSet
self.longitude = longitudeToSet
self.pointsInRange = {}
然后在主程序文件中,可以像这样使用它(作为基本示例):
import Point
def main:
someNewPoint = Point(0, 0)
someOtherPoint = Point(1, 1)
if ( googleAPI.isInRange( (someNewPoint.latitude, someNewPoint.longitude),
(someOtherPoint.latitude, someOtherPoint.longitude) ) ):
someNewPoint.pointsInRange["someOtherPoint"] = someOtherPoint
someOtherPoint.pointsInRange["someNewPoint"] = someNewPoint
#From here just check if one point exists in another's dictionary.
if "someOtherPoint" in someNewPoint.pointsInRange:
#Do stuff because you know the points are in range.
我要感谢以上所有试图帮助我的人。上述问题的解决方案是使用参数完全链接= True的聚集层次聚类。我正在关闭此线程,让我知道是否有人想了解更多有关此问题的信息。
谢谢