以3个维度为聚类中心指定点

时间:2017-11-10 19:17:07

标签: python pandas cluster-analysis

我有一个600x3的数据帧如下:

script = """
    import network
    from machine import Pin, PWM
    from time import sleep
"""

每行表示一个三维点。我编写了一个聚类算法来找到三个聚类中心,它们使用np.vstack在一个数组中迭代地“堆叠”在一起。

accepted_centroids:

 X1        X2        X3
0  0.049150  0.270032  0.577858
1  0.602387  0.065492  0.555747
2  0.598355  0.235002  0.482744
3  0.522151  0.253991  0.402630
4  0.402601  0.206630  0.553987
...

我还保存了每个中心的索引: accepted_indices:

[[ 0.5143811   0.41417482  0.5457288 ]
 [ 0.8176921   0.80723679  0.19689465]
 [ 0.12582636  0.65756533  0.80770862]]

我现在想要根据最小“l2 norm”距离将数据帧中的每个点分配给其中一个群集。我使用以下方法计算了这些星团与其余点之间的距离:

[ 26 420 241]

每个输出600x1距离矢量。我现在的目标是在这三个向量中的每一个中取第一个值,找到这三个向量中的最小值,然后将数据点分配给相应的簇。这就是我已经没有想法了。希望这里的目标很明确!

注意:我没有使用K-means算法,因此这些包不适用。我基本上想要做kmeans的“标记”部分,然后绘制基于其标签着色的点。

1 个答案:

答案 0 :(得分:1)

听起来你想做像

这样的事情
df.apply(lambda row: np.argmin(np.linalg.norm(accepted_centroids - row.values, axis=1)), axis=1)