1

在matlab中,我可以像这样对数据矩阵进行聚类

[centers, assignments] = vl_kmeans(da, 3);

矩阵“da”中的所有数据点将分为 3 个簇。

但是,我想对完整的矩阵进行聚类,而不是数据点。我有数百个 128*19 的矩阵,我想将这些矩阵分成五组。

例如

如果 128*19 有 11 个矩阵,

聚类后​​,我应该能够弄清楚:

Cluster 1: 1, 7, 11
Cluster 2: 2,4,6,8,10
Cluster 3: 3,5,9

即中心 1 将返回矩阵编号 1,7,11

如何在 matlab 中实现这一点?任何帮助/指针都非常感谢。

(这些 128*19 矩阵包含图像的 SIFT 描述符,基于这些描述符的分类,我将对图像进行分类)

谢谢。

4

1 回答 1

1

只需将每个矩阵转换为 128*19 长度的向量,然后将您的“矩阵向量”连接成一个巨大的矩阵,您可以像往常一样对其进行聚类。

编辑

一个重要的注意事项 - kmeans是一种聚类而不是分类算法。Kmeans 可用于帮助分类以减少描述符的数量,但不能作为分类工具。

编辑 2

简单的例子:

有 3 个大小为 2x2 的矩阵

matrix 1: 
[[1, 2], 
 [2, 3]]

matrix 2: 
[[4, 5], 
 [5, 6]]

matrix 3: 
[[7, 7], 
 [8, 9]]

您可以将它们转换为一个大小为 3x4 ( 3x(2*2) ) 的大矩阵

[ [1,2,2,3],
  [4,5,5,6],
  [7,7,8,9] ]

并使用您的 matlab 聚类对其进行聚类。每一行都是你的原始矩阵之一,所以你得到你所需要的

于 2014-01-05T12:54:52.543 回答