K-means聚类,主要理解问题

时间:2014-07-09 03:46:31

标签: matlab opencv cluster-analysis k-means vlfeat

假设我们有一个64dim矩阵来聚类,让我们说矩阵数据集是dt = 64x150。

从vl_feat的库中使用其kmeans功能,我将我的数据集聚集到20个中心:

[centers, assignments] = vl_kmeans(dt, 20);

centers是64x20矩阵。

assignments是1x150矩阵,其中包含值。

根据手册:矢量分配包含输入数据到集群的(硬)分配。

我仍然无法理解矩阵assignments中的那些数字是什么意思。我根本得不到它。有人介意帮我一点吗?一个例子或一些东西会很棒。这些值代表什么呢?

2 个答案:

答案 0 :(得分:8)

在k-means中,您要解决的问题是将150点聚类为20个群集的问题。每个点都是64维点,因此由大小为64的向量表示。因此,在您的情况下,dt是点集,每列都是64维向量。

运行算法后,您会获得centersassignmentscenters是64维度空间中集群中心的20个位置,如果您想要将其可视化,测量点和集群之间的距离等,另一方面,“分配”包含每个的实际分配。 dt中的64点暗淡点。因此,如果assignments[7]15,则表示dt中的第7个向量属于第15个群集。

例如,您可以在此处看到许多2d点的聚类,让我们说1000成为3个聚类。在这种情况下,dt将为2x1000centers将为2x3,作业将为1x1000,并且保留的数字范围为1到{ {1}}(或30,如果您使用2

enter image description here

修改的: 生成此图像的代码位于:http://pypr.sourceforge.net/kmeans.html#k-means-example以及有关pyPR的kmeans教程。

答案 1 :(得分:0)

在openCV中,它是每个输入点所属的簇的编号