我试图通过聚集sklearn库的聚类来聚类经度和纬度值矩阵。
我想计算我有多少个星团来划分我的点,最大距离为50米。我计算每个星点之间的最大距离,直到在所有星团中,最大距离为50米。如果没有,我使用n_clusters + = 1
进行聚类我计算树和簇,直到找到适当的分离。我不想在每次迭代中计算树,因为我会浪费大量的计算时间。
我想使用函数" compute_full_tree"计算整个树。然后只询问指示我想要的簇数的组。它有可能吗?
cl = 1
while(max(maxDist) > 50):
cl += 1
labels = aglomerativeClust(X, cl)
for l in range(len(X)):
X[l].cluster = str(labels[l])
clusters = [[] for o in range(max(labels)+1)]
for x in X:
clusters[int(x.cluster)].append(x)
maxDist = [0. for o in range(max(labels)+1)]
for m in range(len(clusters)):
for x in clusters[m]:
for y in clusters[m]:
dist=compute_vincenty_distance(x,y)
if(dist > maxDist[m]):
maxDist[m] = dist
def aglomerativeClust(Y, cl):
X = []
for y in Y:
X.append([y.visit.latitude,y.visit.longitude])
model = AgglomerativeClustering(linkage='complete',n_clusters=cl)
model.fit(X)
labels = model.labels_
return labels