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

如何为broom未支持的聚类方法实现tidy风格的聚类标签赋值?

解决方案

参考Stack Overflow上的提问《Alternatives to kmeans() for spotting small clusters for k=2》,评论区给出的GMM聚类示例需要先训练模型再预测标签,针对你想用dplyr风格为tibble数据集db添加簇标签的需求,有两种简洁实现方式:

方法1:自定义封装聚类函数

先写一个整合模型训练与预测逻辑的函数,直接接收选定列的数据集并返回簇标签:

library(ClusterR)
library(dplyr)

# 自定义GMM聚类函数,默认分2簇
gmm_cluster <- function(data, n_clusters = 2) {
  gmm_model <- GMM(data, gaussian_comps = n_clusters)
  predict(gmm_model, data)
}

之后就可以按你想要的风格调用,用pick()作为列选择器(支持直接指定列名):

# 示例:选择mpg、disp、hp列进行聚类,添加cluster列
db %>%
  mutate(cluster = gmm_cluster(pick(mpg, disp, hp))) -> db

方法2:匿名函数一次性实现

如果不需要复用聚类逻辑,也可以直接用匿名函数在mutate内完成:

db %>%
  mutate(cluster = {
    selected_cols <- pick(mpg, disp, hp)  # 选择目标列
    predict(GMM(selected_cols, gaussian_comps = 2), selected_cols)
  }) -> db

注意事项

  • 确保选定的列都是数值型,GMM算法仅支持数值数据输入
  • 若需要调整簇数,修改gaussian_comps参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:31:11