使用轮廓系数法聚类时map_dbl与silhouette未找到错误求助
聚类分析轮廓系数计算的错误解决方法
核心问题及修复步骤
1. map_dbl函数未找到
安装purrr或tidyverse包后,必须显式加载包才能调用函数,在代码开头添加:
library(purrr) # 或加载完整tidyverse套件:library(tidyverse)
2. silhouette函数未找到
silhouette属于cluster包,需先安装并加载:
install.packages("cluster") # 首次运行需安装 library(cluster)
3. 代码笔误修正
自定义函数avg_sil中,聚类结果存储为变量s,但后续计算均值时误写为ss[,3],需改为s[,3],否则会触发“对象未找到”错误。同时建议用标准化数据集country_norm_ok计算距离(与kmeans输入一致),避免结果偏差。
修正后的完整代码
# 加载依赖包 library(purrr) library(cluster) # 定义平均轮廓系数计算函数 avg_sil <- function(k) { km.res <- kmeans(country_norm_ok, centers = k, nstart = 25) s <- silhouette(km.res$cluster, dist(country_norm_ok)) mean(s[, 3]) } # 遍历聚类数范围 k.values <- 2:15 avg_sil_values <- map_dbl(k.values, avg_sil) # 绘制轮廓系数变化曲线 plot(k.values, avg_sil_values, type = "b", pch = 19, frame = FALSE, xlab = "聚类数K", ylab = "平均轮廓系数")
内容的提问来源于stack exchange,提问作者Vivian Roberts
相关产品推荐
相关产品推荐

