如何基于多特征/变量创建节点间边构建关联网络(Python/R实现)
基于共享特征的关联网络构建方案(Python)
这个需求本质是带传递性的连通分量查找问题,用*并查集(Union-Find)*结构实现效率最高,不需要暴力遍历所有节点对计算关联,支持多字段共享自动连边、跨节点传递关联的规则,和描述的人员分组场景逻辑完全一致。
核心规则适配
- 单条交易记录作为1个网络节点
- 只要两条记录共享「邮箱/手机号/document ID/城市」中任意一个非空字段值,就判定为存在关联
- 自动处理传递性关联:A和B共享特征、B和C共享特征,A/B/C自动归为同一关联网络
- 无任何共享属性的节点自动划分为独立分组
完整实现代码
import pandas as pd from collections import defaultdict # 并查集结构,支持百万级数据快速计算 class UnionFind: def __init__(self, size): self.parent = list(range(size)) self.rank = [0] * size def find(self, x): # 路径压缩,提升查询效率 if self.parent[x] != x: self.parent[x] = self.find(self.parent[x]) return self.parent[x] def union(self, x, y): # 按秩合并,避免树结构过深 x_root = self.find(x) y_root = self.find(y) if x_root == y_root: return if self.rank[x_root] < self.rank[y_root]: self.parent[x_root] = y_root else: self.parent[y_root] = x_root if self.rank[x_root] == self.rank[y_root]: self.rank[x_root] += 1 # ---------- 配置区,替换为你的实际数据即可 ---------- # 读取你的交易数据集,注意每条记录需要有唯一的行索引作为节点ID df = pd.read_csv("你的交易数据路径.csv") # 指定需要参与匹配的特征字段,可按需增减 match_columns = ["邮箱", "手机号", "document ID", "城市"] # ---------- 关联计算逻辑 ---------- uf = UnionFind(len(df)) for col in match_columns: feature_group = defaultdict(list) # 聚合同特征值对应的所有节点ID,跳过空值避免误匹配 for node_id, feature_val in df[col].items(): if pd.notna(feature_val): feature_group[feature_val].append(node_id) # 将同特征值下的所有节点合并到同一集合 for nodes in feature_group.values(): base_node = nodes[0] for node in nodes[1:]: uf.union(base_node, node) # 为每条记录打上关联组ID df["关联网络ID"] = [uf.find(node_id) for node_id in df.index] # 如需导出边表用于Gephi等网络分析工具,可取消下方注释,小数据量适用 # edge_list = [] # for group_id, group_df in df.groupby("关联网络ID"): # nodes = group_df.index.tolist() # for i in range(len(nodes)): # for j in range(i+1, len(nodes)): # edge_list.append((nodes[i], nodes[j])) # edge_df = pd.DataFrame(edge_list, columns=["source", "target"]) # 输出结果 print(df[["交易ID", "关联网络ID"]])
注意事项
- 代码默认跳过空特征值,避免大量空值把无关记录错误关联到同一组
- 算法时间复杂度接近线性,十万级交易数据可秒级出结果,百万级数据也能在数分钟内跑完
- 输出的
关联网络ID相同的记录,即属于同一个连通网络,和举例的跨特征传递分组规则完全匹配
内容的提问来源于stack exchange,提问作者jmacaggi
相关产品推荐
相关产品推荐

