【问题标题】:An algorithm to create clusters from data pairs in python一种从python中的数据对创建集群的算法
【发布时间】:2016-01-27 03:16:06
【问题描述】:

我正在寻找一种智能算法或 Python 方法来从数据对创建集群。

输入数据的结构如下:

[
 (productA,ProductB),
 (productB,ProductC),
 (productC,ProductD),
 (productA,ProductD),
 (productD,ProductB),
 (productC,ProductA),

 (productE,ProductF),
 (productF,ProductG),
 (productG,ProductH),
 (productG,ProductE),
]

它应该聚集到:

[
(productA,productB,productC,productD),
(productE,productF,productG,productH)
]

如何做到这一点? (两个集群中的产品顺序无关紧要)

非常感谢任何想法!

【问题讨论】:

  • 一个 cluster 是通过某个(定向)对链接的所有产品的传递闭包吗?关系对称吗?

标签: python algorithm


【解决方案1】:

使用networkx,您可以构建一个图表并找到connected components

import networkx as nx

data = [
 ('productA','productB'),
 ('productB','productC'),
 ('productC','productD'),
 ('productA','productD'),
 ('productD','productB'),
 ('productC','productA'),
 ('productE','productF'),
 ('productF','productG'),
 ('productG','productH'),
 ('productG','productE'),
]

G = nx.Graph()
G.add_edges_from(data)
for connected_component in nx.connected_components(G):
    print(connected_component)

产量

['productG', 'productF', 'productE', 'productH']
['productD', 'productC', 'productB', 'productA']

【讨论】:

  • 将立即尝试。有两点需要注意:1. 我喜欢 SO... 总是能解决任何问题,2. 我喜欢 python...
【解决方案2】:

您正在寻找的是:快速联合算法。

【讨论】:

  • QU 要求关系是传递的、自反的和对称的。这些示例没有显示关系是否对称。
猜你喜欢
  • 2019-11-22
  • 2015-03-04
  • 2014-03-26
  • 2010-12-04
  • 1970-01-01
  • 2019-01-08
  • 2018-09-25
  • 2022-07-11
  • 1970-01-01
相关资源
最近更新 更多