Matlab中的聚类

Posted

技术标签:

【中文标题】Matlab中的聚类【英文标题】:Clustering in Matlab 【发布时间】: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。如何将代码应用于小块数据,然后以最佳方式合并这些集群?或任何其他解决问题的方法。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

如果您改变数据集大小,运行时和内存使用量如何扩展?每次达到 56k 是否现实?因为众所周知,层次聚类的扩展性很差。

以上是关于Matlab中的聚类的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark Dataframes:创建要在 python 中的聚类中使用的特征列

动态选择聚类中的聚类数[关闭]

谁能告诉我SPSS中的K聚类分析怎么人为指定初始的聚类中心呢?内有截图,求大神告诉我怎么设置。

K-medodis聚类算法MATLAB

聚类算法及Matlab实现

基于密度的聚类方法