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

R Studio中基于kmeans聚类的Rand指数计算方法问询

关于聚类分区向量提取与Rand指数计算的解决方案

首先得明确一个核心点:Rand指数是用来衡量两个不同聚类分区之间的相似性的,所以你必须有两个独立的分区结果才能计算它——单独一个kmeans的聚类结果是没法直接算出Rand指数的哦。下面一步步给你拆解操作:

1. 提取kmeans的聚类分区向量(part1)

当你用kmeans对x完成聚类后,聚类结果对象里的$cluster元素就是你要的分区向量。给你个具体的代码示例:

# 先把kmeans聚类结果存下来(如果还没存的话)
km_result <- kmeans(x, centers = 3)
# 提取kmeans的分区向量part1
part1 <- km_result$cluster

这个part1是长度为3720的向量,每个元素对应x中样本的聚类标签(取值为1、2、3)。

2. 获取第二个对比分区向量(part2)

你需要另一个分区来和kmeans的结果做对比,常见有两种场景:

  • 场景一:有真实分类标签
    如果你的total_data里自带真实的类别列(比如叫True_Category),直接把这个列作为part2即可:
part2 <- total_data$True_Category
  • 场景二:没有真实标签,用另一种聚类方法生成
    比如用层次聚类生成第二个3类分区:
# 计算样本间距离(这里用欧式距离,你也可以换其他方法)
dist_matrix <- dist(x, method = "euclidean")
# 执行层次聚类
hc_result <- hclust(dist_matrix, method = "ward.D2")
# 切割成3类,得到part2
part2 <- cutree(hc_result, k = 3)

3. 计算Rand指数

首先要确保你安装并加载了包含extCriteria函数的包(这个函数一般来自clValid包):

# 第一次使用先安装包
install.packages("clValid")
# 加载包
library(clValid)
# 指定计算Rand指数,crit参数设为"rand"
rand_index <- extCriteria(part1, part2, crit = "rand")
# 查看计算结果
print(rand_index)

得到的Rand指数值范围在0到1之间,越接近1说明两个分区的一致性越高。

重要提示

Rand指数的本质是对比两个分区的匹配程度,所以必须要有两个独立的聚类结果,或者一个聚类结果加真实标签,单独一个kmeans的聚类结果是无法计算Rand指数的哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:13:46