在Matlab中进行聚类

时间:2014-07-25 06:04:05

标签: matlab merge cluster-computing cluster-analysis linkage

您好我正在尝试使用linkage()进行集群。这是我正在尝试的代码..

 Y = pdist(data);
 Z = linkage(Y);
 T = cluster(Z,'maxclust',4096);

我收到错误如下

The number of elements exceeds the maximum allowed size in
MATLAB.
Error in ==> linkage at 135
    Z = linkagemex(Y,method);

数据大小为56710 * 128。如何在小块数据上应用代码,然后以最佳方式合并这些集群?或问题的任何其他解决方案。

1 个答案:

答案 0 :(得分:0)

Matlab可能无法使用此算法对这么多对象进行聚类。

他们很可能在实施中使用距离矩阵。 56710个对象的成对距离矩阵需要56710 * 56709/2 = 1,607,983,695个条目,或者大约12 GB的RAM;最有可能还需要这方面的工作副本。有可能默认的Matlab数据结构没有准备好处理这么多的数据(你不想等待算法完成;这可能就是为什么他们"允许"只有一个一定数量)。

尝试使用子集,看看它的扩展程度。如果您使用1000个实例,它是否有效?计算需要多长时间?如果你增加到2000,需要多长时间?

相关问题