You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用diceR包结合K-means+GMM做共识聚类遇内存错误求解决

问题:diceR包共识聚类内存溢出(结合K-means与GMM,k=4)
  • 数据规模:231个细胞样本(分属4种肿瘤类型),共19177个基因变量
  • 分析需求:固定聚类数k=4,结合K-means(km)和高斯混合模型(gmm)生成共识聚类
  • 运行代码:
cc <- consensus_cluster(data, nk = 4, algorithms =c("gmm", "km"), progress = F )
  • 报错信息:

Error: cannot allocate vector of size 11.0 Gb

可行解决方法

1. 先对高维基因数据降维

19177个基因的高维数据是内存过载的核心原因,先通过PCA降维到低维(保留足够解释方差)再聚类:

# PCA降维(保留累计方差贡献≥80%的主成分)
pca_result <- prcomp(data, scale. = TRUE)
cum_var <- cumsum(pca_result$sdev^2 / sum(pca_result$sdev^2))
n_pcs <- which(cum_var >= 0.8)[1]
data_pca <- pca_result$x[, 1:n_pcs]

# 使用降维后的数据运行共识聚类
cc <- consensus_cluster(data_pca, nk = 4, algorithms = c("gmm", "km"), progress = F)

2. 调整diceR参数减少内存消耗

通过减少重采样次数、降低采样比例来降低共识矩阵的计算量:

cc <- consensus_cluster(data, nk = 4, algorithms = c("gmm", "km"), 
                        nrep = 50,  # 降低重采样次数(默认100)
                        p = 0.6,    # 降低每次采样的样本比例(默认0.8)
                        progress = F)

如果不需要共识矩阵本身,可添加consensus = FALSE进一步节省内存。

3. 分算法独立生成聚类结果再手动合并共识

若上述方法仍内存不足,可拆分步骤:

  • 分别对K-means和GMM进行多次重采样聚类,记录每个样本对的共聚类频次
  • 将两个算法的共聚类矩阵按权重合并(比如各占50%)
  • 最后对合并后的矩阵做聚类得到最终共识结果

4. 优化运行环境

  • 确保使用64位R环境(32位R内存上限仅约4GB)
  • 服务器环境可申请更多内存资源,本地环境可关闭其他占用内存的程序

内容的提问来源于stack exchange,提问作者Pom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:15:38