如何对 Olivetti 数据集执行 K-Means 聚类

数据挖掘 scikit-学习 数据挖掘 聚类 k-均值 矩阵分解
2022-02-16 11:53:56

这个问题与矩阵分解有关,完整的问题在下面给出。为 Olivetti 数据集的 k-means 聚类提供以下可视化:

  • 潜在空间中人脸的 r = 2 维表示的散点图,以及表示两个维度/特征的人脸。
  • 定义 r = 5 的潜在空间特征的面的可视化。
  • 当使用 r ∈ {5, 25, 50, 100} 的秩时重建具有索引 i ∈ {0, 10, 20} 的面

要加载 Olivetti 数据集,请运行以下代码:

from sklearn.datasets import fetch_olivetti_faces
faces = fetch_olivetti_faces()

print(faces.DESCR)提供数据集的描述。

当我尝试对收到的模型进行 K-Means 聚类时

**TypeError: float() argument must be a string or a number, not 'Bunch'**

感谢您的时间和考虑

1个回答

我对此有几点看法:

  1. 在你运行聚类之前,我会运行一些降维模型。像素数据太嘈杂,无法像模型一样被输入。通过降维,您可以获得降噪和更低的计算成本。

  2. 图像通常以 2D 或 3D 数组的形式出现(取决于它们是灰度还是彩色)。另一方面,k-Means 和其他 sklearn 模型需要将整个数据集作为 2D 数组。您应该处理每个图像并将其转换为可以作为单个观察值馈送的一维数组。

你能分享你的集群代码,只是为了确保?