我正在尝试在一个非常大的矩阵上进行一些 k 均值聚类。
该矩阵大约有 500000 行 x 4000 列,但非常稀疏(每行只有几个“1”值)。
整个东西不适合内存,所以我把它转换成一个稀疏的 ARFF 文件。但是 R 显然无法读取稀疏的 ARFF 文件格式。我也将数据作为纯 CSV 文件。
R 中是否有任何包可用于有效加载此类稀疏矩阵?然后,我将使用 cluster 包中的常规 k-means 算法继续进行。
非常感谢
我正在尝试在一个非常大的矩阵上进行一些 k 均值聚类。
该矩阵大约有 500000 行 x 4000 列,但非常稀疏(每行只有几个“1”值)。
整个东西不适合内存,所以我把它转换成一个稀疏的 ARFF 文件。但是 R 显然无法读取稀疏的 ARFF 文件格式。我也将数据作为纯 CSV 文件。
R 中是否有任何包可用于有效加载此类稀疏矩阵?然后,我将使用 cluster 包中的常规 k-means 算法继续进行。
非常感谢
bigmemory包(或现在的包系列——参见他们的网站)使用 k-means 作为对大数据进行扩展分析的运行示例。特别参见包含 k-means 函数的子包biganalytics 。
请检查:
library(foreign)
?read.arff
干杯。
sparkcl 执行稀疏层次聚类和稀疏 k-means 聚类这对于 R-suitable(所以 - 适合内存)矩阵应该是好的。
http://cran.r-project.org/web/packages/sparcl/sparcl.pdf
==
对于非常大的矩阵,我会尝试使用 Apache Spark 稀疏矩阵和 MLlib 的解决方案——仍然不知道它现在的实验性如何:
https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.linalg.Matrices $
R 有一个特殊的 SparseM 包可以有效地保存它。如果这不起作用,我会尝试使用更高性能的语言,例如 C。