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

计算聚类间共现概率:基于R数据框的冲突配对分析

实现思路与代码示例

第一步:统一配对格式

因为不区分Cluster.x和Cluster.y的顺序,先把每行的两个聚类值按大小排序,生成标准化的配对列——这样不管是(4,2)还是(2,4),都会被统一成(2,4),自身配对比如(4,4)也能正常保留。

用基础R就能快速实现:

# 加载你的数据
df <- structure(list(Cluster.x = c(5L, 4L, 4L, 4L, 1L, 4L), Cluster.y = c(7L, 2L, 7L, 4L, 4L, 4L)), row.names = c(NA, 6L), class = "data.frame")

# 生成排序后的配对列
df$cluster1 <- pmin(df$Cluster.x, df$Cluster.y)
df$cluster2 <- pmax(df$Cluster.x, df$Cluster.y)

第二步:统计各配对的出现次数

接下来按标准化后的配对分组,统计每组的冲突次数。用dplyr会更直观,基础R的table函数也能搞定:

用dplyr的写法

library(dplyr)
count_df <- df %>%
  group_by(cluster1, cluster2) %>%
  summarise(count = n(), .groups = "drop")

用基础R的写法

count_table <- table(df$cluster1, df$cluster2)
count_df <- as.data.frame(count_table) %>%
  filter(Freq > 0) %>%
  rename(cluster1 = Var1, cluster2 = Var2, count = Freq)

第三步:计算配对概率

概率就是每个配对的计数除以总冲突次数(也就是数据框的总行数):

total <- nrow(df)
count_df <- count_df %>%
  mutate(probability = count / total)

最终结果示例

运行完上面的代码,你会得到这样的结果:

cluster1 cluster2 count probability
1        1        4     1   0.1666667
2        2        4     1   0.1666667
3        4        4     2   0.3333333
4        4        7     1   0.1666667
5        5        7     1   0.1666667

额外说明

  • 这种排序的方法彻底解决了配对顺序的问题,所有逻辑上相同的配对都会被归为一类。
  • 自身配对(比如聚类4和4)的情况也被正确处理,不会出现重复统计的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:30:39