sklearn凝聚聚类compute_full_tree

时间:2017-05-01 14:31:00

标签: python scikit-learn

我试图通过聚集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

0 个答案:

没有答案