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

在R中能否预指定聚类结构后按标准聚类准则合并?

聚类合并与层次聚类构建的R实现方案

一、从k=9聚类结果合并至k=5的实现

1. 遵循Complete Linkage准则的合并

如果你的k=9聚类来自层次聚类(complete linkage方法),直接用cutree()即可完成合并——层次聚类的树状结构本身就是按complete linkage规则逐步生成的,cutree()只是从已有的树中切割到指定k值:

# 假设已通过complete linkage得到层次聚类结果hc
hc <- hclust(dist(your_data), method = "complete")
# 先得到k=9的聚类
clust_k9 <- cutree(hc, k = 9)
# 直接切割到k=5,自动遵循complete linkage合并规则
clust_k5 <- cutree(hc, k = 5)

如果k=9结果来自k-means,需要先计算9个簇之间的complete linkage距离,再对簇做层次聚类后切割:

library(cluster)
# 假设kmeans_k9是k-means得到的k=9结果,your_data为原始数据
# 计算簇间的complete linkage距离
cluster_dist <- dissimilarity(daisy(your_data, metric = "euclidean"), 
                             clustering = kmeans_k9$cluster, 
                             method = "complete")
# 对9个簇构建层次聚类
hc_clusters <- hclust(cluster_dist, method = "complete")
# 合并至k=5
clust_k5 <- cutree(hc_clusters, k = 5)
# 将簇标签映射回原始样本
final_clust <- clust_k5[kmeans_k9$cluster]

2. 遵循k-means准则(最小化WSS)的合并

使用flexclust包的mergeClusters()函数可直接实现基于最小WSS增量的簇合并:

library(flexclust)
# 将k-means的k=9结果转换为kcca对象
kcca_k9 <- as.kcca(kmeans_k9, your_data)
# 合并至k=5,ward方法等价于最小化WSS增量
kcca_k5 <- mergeClusters(kcca_k9, k = 5, method = "ward")
# 获取最终聚类标签
clust_k5 <- predict(kcca_k5)

另一种思路:以k=9的簇中心为初始值,重新运行k=5的k-means,也能保证合并后的WSS最优:

# 提取k=9的簇中心
centers_k9 <- kmeans_k9$centers
# 随机选取5个中心作为初始值跑k=5的k-means
kmeans_k5 <- kmeans(your_data, centers = centers_k9[sample(1:9, 5), ], nstart = 1)

二、构建不从单例聚类开始的层次凝聚结构

直接基于已有簇的距离矩阵构建层次聚类即可,无需从单个样本开始:

library(cluster)
# 假设已有k=9的聚类结果clust_k9,your_data为原始数据
# 计算簇间距离矩阵(支持complete、average等多种方法)
cluster_dist <- dissimilarity(daisy(your_data, metric = "euclidean"), 
                             clustering = clust_k9, 
                             method = "complete")
# 基于簇间距离构建层次聚类树
hc_from_clusters <- hclust(cluster_dist, method = "complete")
# 可视化簇层次结构
plot(hc_from_clusters, labels = paste("Cluster", 1:9))

该方法直接从k=9的簇出发生成层次结构,完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:30:28