Python KMeans是否可以使用更高维度进行集群?
我有几百个3d数组,我想用它们做一些聚类分析,但是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-均值聚类的步骤如下: 拾取一些随机中心:对所有坐标采样相同的分布,因此此操作相对于坐标变化是对称的 计算所述集群和数据库中的点之间的距离。即使更改坐标顺序,欧几里德距离的公式也保
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)