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

基于Pearson相关的R语言k-means聚类(ClusterR)实现求助

问题解决:ClusterR实现基于Pearson相关的K-Means聚类并指定迭代次数

问题诊断

你的代码存在三个核心问题:

  1. 算法选择错误:Clara_Medoids是CLARA中心点聚类算法,并非K-Means,且确实不支持指定迭代次数;
  2. 参数设置矛盾:samples = entire_sample(用全量数据做采样)和sample_size = 1(采样大小为1)完全违背CLARA的采样逻辑,导致算法无法正常生成聚类结果;
  3. 语法错误:最后赋值语句用反引号包裹,属于无效语法,无法将聚类标签写入原数据集。

修正后的代码

使用ClusterR包中的KMeans_rcpp函数,它支持基于Pearson相关的距离度量,且可以指定初始化/迭代次数:

library(ClusterR)
library(dplyr)

# 加载数据(假设Coefficients已存在)
# 保留Panelist列用于后续匹配,仅用系数列做聚类
cluster_data <- Coefficients %>% select(Coeff1, Coeff2, Coeff3, Coeff4)

# 运行基于Pearson相关的K-Means聚类,指定2类、20次初始化迭代
kmeans_result <- KMeans_rcpp(
  data = cluster_data,
  clusters = 2,
  num_init = 20,  # 指定20次初始化迭代
  distance_metric = "pearson_correlation",
  verbose = FALSE,
  seed = 1
)

# 将聚类标签合并到原数据集
Coefficients$clusterID <- kmeans_result$clusters

# 保存结果
write.csv(Coefficients, "path/to/results.csv")

关键说明

  • 算法适配:KMeans_rcpp是ClusterR中专门实现K-Means的函数,支持pearson_correlation作为距离度量,完全匹配Systat中基于Pearson相关的K-Means需求;
  • 迭代次数控制:num_init参数控制K-Means的初始化次数(每次初始化对应一轮完整的迭代收敛过程),设置为20即可满足你的需求;
  • 数据处理:用dplyr::select更简洁地提取聚类用的系数列,避免重复赋值;
  • 语法修正:直接通过kmeans_result$clusters提取聚类标签,无需反引号包裹赋值语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:53:11