我有一个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的“标记”部分,然后绘制基于其标签着色的点。
答案 0 :(得分:1)
听起来你想做像
这样的事情df.apply(lambda row: np.argmin(np.linalg.norm(accepted_centroids - row.values, axis=1)), axis=1)