Python KMeans是否可以使用更高维度进行集群?

Python KMeans是否可以使用更高维度进行集群?,python,numpy,scikit-learn,cluster-analysis,k-means,Python,Numpy,Scikit Learn,Cluster Analysis,K Means,我有几百个3d数组,我想用它们做一些聚类分析,但是sklearn.cluster.KMeans只会做一个2D数组。我的每个数组的大小都是(56,88,56),我有300。当我把它们组合成一个数组时,我得到(300,56,88,56)。KMeans给出了错误ValueError:Found数组的dim 4。预计估计器K-均值聚类的步骤如下: 拾取一些随机中心:对所有坐标采样相同的分布,因此此操作相对于坐标变化是对称的 计算所述集群和数据库中的点之间的距离。即使更改坐标顺序,欧几里德距离的公式也保

我有几百个3d数组,我想用它们做一些聚类分析,但是
sklearn.cluster.KMeans
只会做一个2D数组。我的每个数组的大小都是
(56,88,56)
,我有
300
。当我把它们组合成一个数组时,我得到
(300,56,88,56)
。KMeans给出了错误
ValueError:Found数组的dim 4。预计估计器K-均值聚类的步骤如下:

  • 拾取一些随机中心:对所有坐标采样相同的分布,因此此操作相对于坐标变化是对称的
  • 计算所述集群和数据库中的点之间的距离。即使更改坐标顺序,欧几里德距离的公式也保持不变
  • 计算平均值和移动中心。交换坐标时,平均值也保持不变
总之,K-Means中的所有步骤都和数据的内部结构无关。您可以轻松地为矩阵实现它,但这样做并没有实际意义,因为您可以将它们展平并将它们视为数组。sklearn收敛到的解决方案应与提供的实现相同


你问这个有什么特别的原因吗?sklearn解决方案是否没有收敛到预期的输出?

您可以轻松地选择三个功能(列)作为适合的变量的输入。np.asarray([np.asarray(df['Feature1']、df['Feature2']、df['Feature3'])))))。tx=数据如果需要更多信息,请告诉我。
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
import nibabel as nib
import os, sys
from tqdm import tqdm

DIR = '(56x88x56)\\' 
flatten_list = []
for r,d,f in os.walk(DIR):
    for file in tqdm(f):
        path = DIR + file
        cp = nib.load(path).get_fdata()
        cp = np.array(cp)        
        array_flatten = np.ndarray.flatten(cp)
        flatten_list.append(array_flatten)

flatten_list = np.array(flatten_list)
kmeans = KMeans(n_clusters = 10, random_state = 0, verbose = 1).fit(flatten_list)
cluster_labels = kmeans.labels_
print(cluster_labels)