我有一个巨大的数据集。我们谈论的是 100 个 121x145x121 单元格的 3D 矩阵。任何单元格的值都在 0 和 1 之间,我需要一种方法根据它们的相关性对这些单元格进行聚类。问题是数据集对于我知道的任何算法来说都太大了;即使只使用其中的一半(任何矩阵都是大脑的 MRI 扫描),我们也有大约 4000 亿对。有任何想法吗?
问问题
1603 次
2 回答
4
作为第一步,我很想尝试K-means clustering。
这在 Matlab 统计工具箱中显示为函数kmeans。
在此算法中,您最终只计算 K 个当前中心与数据之间的距离,因此对的数量比比较所有选择要少得多。
在 Matlab 中,我还发现操作的速度可能完全取决于矩阵的组织(由于内存缓存和优化问题)。我建议转换您的 3d 矩阵,以便列(在内存中保存在一起)对应于特定单元格的 100 个值。
这可以通过permute 函数来完成。
于 2013-04-23T18:24:20.453 回答