【发布时间】:2015-08-22 12:41:25
【问题描述】:
假设我有一个无向加权连通图。我想将具有最高边值的顶点组合在一起(顶点度数)。使用聚类算法是一种方法。我可以为这项任务考虑哪些聚类算法?我希望很清楚;任何需要澄清的问题,请询问。谢谢。
【问题讨论】:
标签: algorithm graph cluster-computing cluster-analysis
假设我有一个无向加权连通图。我想将具有最高边值的顶点组合在一起(顶点度数)。使用聚类算法是一种方法。我可以为这项任务考虑哪些聚类算法?我希望很清楚;任何需要澄清的问题,请询问。谢谢。
【问题讨论】:
标签: algorithm graph cluster-computing cluster-analysis
有两种主要方法 - 将您的图表作为现有工具的输入,或者使用您对该图表(及其领域)的专业知识来创建表示,然后在其上应用机器学习方法。
我将从第二种方法开始:
如果你只有节点和边(每个节点没有更远的数据),你首先需要考虑每个节点\边的表示。我将解释节点,但对于边缘的情况应该类似。
最简单的方法是将每个节点n表示为一个连接向量:
每个节点都将表示为n=(Ia(n),Ib(n),Ic(n),Id(n),Ie(n)),其中Ii(n)=1 如果节点n 是节点i 的“朋友”(邻居),否则为0。 (例如a=(0,1,1,0,1))
请注意,您可以决定一个节点是否是它自己的朋友。
第二种方法,和第一种很相似,是使用边缘的权重向量:
n=(W(a,n),W(b,n),W(c,n),W(d,n),W(e,n)) ,其中W(i,n) 是边(i,n) 的权重。
还有其他几种表示节点的方法,但这足以在其上运行一些计算。
完成此演示后,您可以开始在其上应用一些聚类算法。
kmeans 被认为非常适合此任务,sklearn has a great implementation。它有一些您可以(并且应该)配置的参数(即距离测量)。
kmeans 的乘积,是k 不同的不相交的节点组。
如果您想将图表传递给算法并获得一些度量,您可以应用更高级的算法。 community detection 用于在图中查找社区。同样,networkxpackage 中有一个不错的 python implementation。
【讨论】: