Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将点指定给三维中的簇中心_Python_Pandas_Cluster Analysis - Fatal编程技术网

Python 将点指定给三维中的簇中心

Python 将点指定给三维中的簇中心,python,pandas,cluster-analysis,Python,Pandas,Cluster Analysis,我有一个600x3数据帧,如下所示: 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 ... 其中每行表示一个三维点。我编写了一个聚类算法来查找三个聚类中心,它们使用np.vst

我有一个600x3数据帧,如下所示:

 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
...
其中每行表示一个三维点。我编写了一个聚类算法来查找三个聚类中心,它们使用np.vstack迭代地堆叠在一个数组中

可接受的_质心:

[[ 0.5143811   0.41417482  0.5457288 ]
 [ 0.8176921   0.80723679  0.19689465]
 [ 0.12582636  0.65756533  0.80770862]]
我还保存了每个中心的索引: 认可指数:

[ 26 420 241]
现在,我想根据最小l2范数距离,将数据帧中的每个点分配给其中一个集群。我使用以下公式计算了这些簇与其余点之间的距离:

diffy1 = df.iloc[0:].apply(lambda x: np.sqrt(sum((df.iloc[accepted_indices[0]]-x)**2)), axis=1).values
diffy2 = df.iloc[0:].apply(lambda x: np.sqrt(sum((df.iloc[accepted_indices[1]]-x)**2)), axis=1).values
diffy3 = df.iloc[0:].apply(lambda x: np.sqrt(sum((df.iloc[accepted_indices[2]]-x)**2)), axis=1).values
每个输出600x1的距离矢量。我现在的目标是获取这三个向量中的第一个值,找到这三个向量中的最小值,然后将数据点分配给相应的集群。可以说,这就是我的想法枯竭的地方。希望这里的目标是明确的


注意:我没有使用K-means算法,因此这些包不适用。我主要是想做kmeans的标签部分,然后根据标签绘制点的颜色

听起来你想做点什么

df.apply(lambda row: np.argmin(np.linalg.norm(accepted_centroids - row.values, axis=1)), axis=1)