用线分隔簇

时间:2017-08-14 18:29:39

标签: python

我有一个由几个集群组成的数据集。我想用一条线分隔这些簇,就像Voronoi图一样,但不是从一个点创建的。我现在的想法是确定每个点之间的最短距离,并找到群集外部的点。需要采用平均距离来确定分离簇的线。

最近的点可以通过cdist确定。我想循环遍历每个集群,并将集群中的每个点与其他集群中的其他点进行比较。但是,我坚持这样做。下面你可以找到我用Python编写的代码。

import matplotlib.pyplot as plt
from scipy.spatial.distance import cdist

def closest_point(pt, others):
    distances = cdist(pt, others)
    return others[distances.argmin()]

ppx = [[615, 618, 621], [629, 623, 620, 625], [614, 622, 610, 612]]
ppy = [[524, 530, 527], [559, 556, 548, 548], [559, 574, 572, 542]]

for i in range(0,3): # range(len(grouped))
    for j in range(len(ppx[i])):
        a = [[ppx[i][j], ppy[i][j]]]
        others = ..??..
        print("closest:", closest_point(a, others))

    plt.scatter(ppx[i],ppy[i])
plt.show()

正如你所看到的,我可以在群集中找到一个点( a ),但是,当我想将其他两个群集放在其他群集中时,我会陷入困境。有谁知道如何解决这个问题?或者我在想错误的方向?

我添加了一张带有三个簇的图片和我打算制作的分隔线。

0 个答案:

没有答案