【发布时间】:2017-06-09 06:42:57
【问题描述】:
给定一个(可能很大 ~ 2+GBs)json 文件中节点之间的事务,大约有百万个节点和大约 1000 万个事务,每个事务有 10-1000 个节点,例如
{"transactions":
[
{"transaction 1": ["node1","node2","node7"], "weight":0.41},
{"transaction 2": ["node4","node2","node1","node3","node10","node7","node9"], "weight":0.67},
{"transaction 3": ["node3","node10","node11","node2","node1"], "weight":0.33},...
]
}
将其转换为节点亲和度矩阵的最优雅和最有效的 Python 方法是什么,其中亲和度是节点之间加权事务的总和。
affinity [i,j] = weighted transaction count between nodes[i] and nodes[j] = affinity [j,i]
例如
affinity[node1, node7] = [0.41 (transaction1) + 0.67 (transaction2)] / 2 = affinity[node7, node1]
注意:亲和矩阵是对称的,因此仅计算下三角形就足够了。
值不代表***结构示例!
节点1 |节点2 |节点3 |节点4 | ....
node1 1.4 .1 .9 ... Node2 .4 1.6。 .9 .3 .7
1 ...
...
【问题讨论】:
-
嗨 D.S. 欢迎来到 Stackoverflow。您可以在发布问题时使用
{}按钮将一段文本格式化为代码块。代码块保留空格并使其更容易像 JSON 一样发布 -
谢谢 Matti,我明白了,我相信当前的格式(虽然很难做到)看起来可读,你不同意吗?
-
它是可读的,但正如您指出的那样需要完成相当多的工作。使用
{}按钮要容易得多 -
您好,您能否提供一个节点亲和矩阵的定义,这会增加您获得答案的机会
-
但是你的矩阵不是对称的。您能写出如何根据示例交易数据计算几个 i,j 的 A[i,j] 吗?
标签: python json graph affinity data-munging