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

如何高效生成簇内两两相关度超阈值的无重复物品聚类?

满足两两相关度阈值的聚类生成方案

核心思路

要生成簇内所有元素两两相关度≥0.7的聚类,本质是在元素的相关关系图中寻找团(Clique)——团内任意两个节点间都存在边(即相关度达标)。同时通过遍历上三角矩阵的方式,从根源避免自配对、重复配对的生成,减少算力消耗。

分步实现

1. 参数初始化与预处理

假设matrix是存储元素间相关度的DataFrame(行、列均为元素标识),先定义阈值并提取元素列表:

import pandas as pd
import networkx as nx

plimit = 0.7
# 提取所有元素名称
elements = matrix.index.tolist()

若matrix是原始数据矩阵,需先计算相关系数矩阵:corr_matrix = matrix.corr(),后续用corr_matrix替代matrix即可。

2. 构建无向图(避免冗余配对)

只遍历上三角区域(索引i < j),跳过自配对(i=j)和反向配对(j < i),直接构建符合要求的边:

G = nx.Graph()
G.add_nodes_from(elements)

# 遍历上三角,仅处理i<j的元素对
for i in range(len(elements)):
    for j in range(i + 1, len(elements)):
        elem_a = elements[i]
        elem_b = elements[j]
        # 获取两两相关度
        corr_value = matrix.loc[elem_a, elem_b]
        if corr_value >= plimit:
            G.add_edge(elem_a, elem_b)

3. 检测符合要求的聚类(团)

利用图论库的团检测方法,直接生成所有满足条件的簇:

# 找出所有最大团(团内无法再添加任何元素仍满足两两相关要求)
clusters = list(nx.find_cliques(G))

# 若需调整为指定的9个聚类,可根据团的大小、元素数量等规则筛选/合并
# 示例:若团数量多于9,可优先保留规模较大的团,再处理剩余元素
# clusters = sorted(clusters, key=lambda x: len(x), reverse=True)[:9]

关键优势

  • 算力优化:通过上三角遍历,全程不生成自配对、重复配对,无需后续冗余清理步骤
  • 结果合规:生成的每个簇天然满足“两两相关度≥0.7”的要求,完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:13:13