【问题标题】:Clustering in MatlabMatlab中的聚类
【发布时间】:2014-09-16 21:54:57
【问题描述】:

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

 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。如何将代码应用于小块数据,然后以最佳方式合并这些集群?或任何其他解决问题的方法。

【问题讨论】:

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


    【解决方案1】:

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

    他们很可能在实现中使用了距离矩阵。 56710 个对象的成对距离矩阵需要 56710*56709/2=1,607,983,695 个条目,或大约 12 GB 的 RAM;很可能还需要一份工作副本。很有可能默认的 Matlab 数据结构并没有准备好处理这么多的数据(而且您也不想等待算法完成;可能这就是它们“只允许”一定数量的原因)。

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

    【讨论】:

    • 如果您改变数据集大小,运行时和内存使用量如何扩展?每次达到 56k 是否现实?因为众所周知,层次聚类的扩展性很差。
    猜你喜欢
    • 2011-12-22
    • 2014-03-26
    • 2013-08-04
    • 2013-10-01
    • 1970-01-01
    • 2011-12-04
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多