首页 > 解决方案 > 通过运行多个子样本对大型数据集进行 kmeans

问题描述

我有一个包含 50+mn 行和 2 列的数据集,我想在其上应用 kmeans 拆分为 4 个集群。在使用 kmeans 时,我不断遇到内存问题(无法解释的 R-studio 和 PC 崩溃)。我尝试使用 bigkmeans 但收到 std:bad_alloc 错误。

所以接下来我想创建 5 或 10 个随机样本,其中可能包含 200 万行这些数据,并在每个样本上运行 kmeans,并将结果放入单个数据帧中。

可能有一种方法可以优雅地使用 apply 或类似的东西来做到这一点,但我对此并不熟悉,因此寻求帮助。

这是我将如何执行此操作一次。

df_sample <- df[sample(nrow(df),2000000),]


k4_s1 <- kmeans(df_sample,iter.max = 50,centers = 4, nstart = 50)

我可以把它放在一个 for 循环中,但可能有更有效的方法,任何帮助表示赞赏。

标签: rmemoryapplyk-means

解决方案


推荐阅读