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

如何对PredictionClust/Prediction/R6对象取子集解决聚类大数据绘图问题

大数据量聚类结果绘图替代方案

可落地的替代绘图方案

  • 降维采样散点绘制:先将高维特征通过PCA、UMAP等方法降到2维,对50万样本随机抽取1%5%的子样本(500025000个点),子样本保留原聚类标签,此时直接调用autoplot()即可正常渲染,不会出现性能不足的问题,采样比例控制在5%以内即可完整保留聚类分布特征,不会出现明显偏差。
  • 等高线密度绘制:不需要渲染单个散点,直接基于2维降维结果和聚类标签,使用密度等高线展示不同聚类的分布范围、重叠情况,资源占用仅为散点图的1%不到,适合全量数据可视化。
  • 分箱聚合热力图绘制:如果需要保留全量数据的分布信息,先对2维坐标做等距分箱,统计每个分箱内的样本量、占比最高的聚类标签,用色块热力图展示聚类分布,性能远高于散点渲染。

PredictionClust/R6类预测对象的子集操作方法

mlr3体系下的PredictionClust、Prediction等R6类预测对象完全支持子集切片操作,操作逻辑如下:

  • 预测对象的$data属性、$response方法返回的结果和原数据集样本索引一一对应,先按需求生成采样的样本索引
  • 直接对预测对象做索引切片即可生成子预测对象,示例:pred_sub <- pred_clust[sample(nrow(pred_clust$data), 10000)]
  • 切片后的子预测对象可以直接调用autoplot()方法,无性能压力
  • 若要绘制等高线,不需要对预测对象取子集,直接提取全量的2维坐标+聚类标签传入密度绘图函数即可,运算量极低。

示例代码

# 子样本绘图
library(mlr3cluster)
library(ggplot2)
# 抽取1万条样本生成子预测对象
sample_idx <- sample(nrow(pred_clust$data), 10000)
pred_sub <- pred_clust[sample_idx]
# 直接绘制子样本聚类结果
autoplot(pred_sub, task = cluster_task)

# 全量数据等高线绘图
# 提前获取全量样本的2维降维结果,此处以PCA为例
pca_emb <- prcomp(task$data(), scale. = TRUE)$x[, 1:2]
plot_df <- data.frame(
  dim1 = pca_emb[,1],
  dim2 = pca_emb[,2],
  cluster = as.factor(pred_clust$response)
)
ggplot(plot_df, aes(x = dim1, y = dim2, color = cluster, fill = cluster)) +
  geom_density_2d(bins = 8, linewidth = 0.8) +
  stat_density_2d(geom = "polygon", alpha = 0.2, bins = 8) +
  theme_bw()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:03