我正在尝试基于具有数值和分类特征的大数据框计算相异矩阵。当我从集群包daisy
运行该函数时,我收到错误消息:
错误:无法分配大小为 X 的向量。
在我的情况下,X 大约是 800 GB。知道如何处理这个问题吗?此外,如果有人可以帮助我在并行内核中运行该功能,那也很棒。您可以在下面找到计算 iris 数据集上的相异矩阵的函数:
require(cluster)
d <- daisy(iris)
我正在尝试基于具有数值和分类特征的大数据框计算相异矩阵。当我从集群包daisy
运行该函数时,我收到错误消息:
错误:无法分配大小为 X 的向量。
在我的情况下,X 大约是 800 GB。知道如何处理这个问题吗?此外,如果有人可以帮助我在并行内核中运行该功能,那也很棒。您可以在下面找到计算 iris 数据集上的相异矩阵的函数:
require(cluster)
d <- daisy(iris)
我以前也遇到过类似的问题。甚至在我的数据集的 5k 行上运行daisy()
也需要很长时间。
我最终使用了包中的kmeans
算法,该算法对h2o
分类数据进行并行化和 1-hot 编码。在将数据插入h2o.kmeans
. 这是为了使聚类算法不会优先考虑具有高名义差异的列(因为它试图最小化距离计算)。我使用了这个scale()
功能。
安装 h2o 后:
h2o.init(nthreads = 16, min_mem_size = '150G')
h2o.df <- as.h2o(df)
h2o_kmeans <- h2o.kmeans(training_frame = h2o.df, x = vars, k = 5, estimate_k = FALSE, seed = 1234)
summary(h2o_kmeans)