【问题标题】:Hierarquical clustering with big vector大向量的层次聚类
【发布时间】:2018-12-26 03:13:14
【问题描述】:

我在 MATLAB 中工作,我有一个包含 400 万个值的向量。我尝试使用 linkage 函数,但出现此错误:

使用链接时出错(第 240 行)请求的 1x12072863584470 (40017.6GB) 数组超出了最大数组大小首选项。创建大于此限制的数组可能需要很长时间并导致 MATLAB 变得无响应。有关详细信息,请参阅数组大小限制或首选项面板。

我发现有些人使用kmeans 函数避免了这个错误,但是我想知道是否有办法避免这个错误并且仍然使用linkage 函数。

【问题讨论】:

  • 您需要更多内存!喜欢 40Tb,如果你想使用这个功能的话。
  • 还有其他不需要那么多内存的类似功能吗?
  • 欢迎来到 Stackoverflow。要回答这个问题,您应该在 Matlab 代码中包含一个最小的问题示例。如需指导,请查看how to ask 页面和how to create a minimal example
  • 做什么?链接返回一个矩阵,这个矩阵就是这么多内存,不管是谁做的。但你只提到你想要这个功能,而不是你想要做什么!
  • 你说得对。我正在尝试使用此值进行层次聚类。

标签: matlab bigdata cluster-analysis hierarchical-clustering


【解决方案1】:

你确定这些4 million valuesstatistically correct 吗?如果是,那您是个幸运的人,如果不是,请拨打data pre-processing。您会看到 400 万个值已大幅减少为有意义的样本,可以轻松放入内存 (RAM) 中进行层次聚类。

【讨论】:

    【解决方案2】:

    大多数层次聚类需要 O(n²) 内存。所以不,你不想使用这些算法。

    有一些例外,例如 SLINK 和 CLINK。这些可以仅使用线性存储器来实现。就是不知道matlab有没有好的实现。

    或者您使用 kmeans 或 DBSCAN,它们也只需要线性内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-08
      • 2018-10-04
      • 2015-09-12
      • 2014-06-28
      • 2020-06-10
      • 2016-08-07
      • 2015-08-12
      • 2020-06-28
      相关资源
      最近更新 更多