值错误:找到带有暗淡 3 的数组。对于 ListType[array(float32, 2d, C)] 的估计器预期 <= 2]



我有如下嵌入-

ListType[array(float32, 2d, C)]([[[ -1.2124693    0.9572239 ]
[  0.56466156   0.7211671 ]
[ -1.0872451   -2.051641  ]
...
[-54.282215    32.87948   ]
[  2.5681546    0.12829414]
[  2.2808175    1.5369933 ]], [[ 1.669828   -2.4118974 ]
[-0.22858042 -0.6938448 ]
[ 1.5701272   0.7148179 ]
...
[ -9.497137   25.826427 ]
[-17.761719   15.798782 ]
[-17.39355    26.622911 ]], ...])

现在将数据聚类。首先,让我们试试传统的方法:k均值。在这种情况下,我们可以解决k均值聚类的一个难题——选择正确的k值,给出我们要寻找的聚类的数量。在这种情况下,我们知道答案正好是10。我们将使用sklearn K-Means实现在原始维度数据中查找10个聚类。

# Dimension reduction and clustering libraries
import umap
import sklearn.cluster as cluster
from sklearn.metrics import adjusted_rand_score, adjusted_mutual_info_score
kmeans_labels = cluster.KMeans(n_clusters=10).fit_predict(updating_mapper.embeddings_)
~Anaconda3libsite-packagessklearnutilsvalidation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator)
657                     "into decimal numbers with dtype='numeric'") from e
658         if not allow_nd and array.ndim >= 3:
--> 659             raise ValueError("Found array with dim %d. %s expected <= 2."
660                              % (array.ndim, estimator_name))

我得到的错误信息-

ValueError: Found array with dim 3. Estimator expected <= 2.

为了应用k -均值聚类,我如何将dim 3降为维度2 ?

其中一个维度是冗余的吗?也就是说,你的数据点是一个向量吗?然后您可以简单地执行

import numpy as np
a1 = [[[1,2,3], [8,9,3], [4,5,6], [3,4,5]]]
b = np.array(a1)
print(b.shape)
#(1, 4, 3)
b1 = np.reshape(b,(b.shape[1],-1))
print(b1.shape)
#(4, 3)
b2 = a1[0][:]
print(np.array(b2).shape)
#(4, 3)

如果你的每个数据点都是二维的,那么你将不得不考虑如何执行聚类。你可以试着把它弄平,但你很可能会错误地表示数据,而聚类也不合适。也许可以考虑一个函数,它将把你的2d点压缩成一个向量,或者用一个可以应用于2d数据点的距离度量来自己写k的意思。

最新更新