假设我有一个无向加权连通图。我想分组具有最高边缘的顶点'共同价值(顶点度数)。使用聚类算法是一种方法。我可以为此任务考虑哪些聚类算法?我希望很清楚;如有任何澄清的问题,请询问。感谢。
答案 0 :(得分:1)
有两种主要方法 - 将图形作为现有工具的输入,或者使用您在此图形(及其域)上的专业知识来创建表示,然后在其上应用机器学习方法。 / p>
我将从第二种方法开始:
如果只有节点和边(每个节点没有更远的数据),首先需要考虑每个节点\ edge的表示。我将解释节点,但它应该类似于边缘'情况下。
最简单的方法是将每个节点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用于在图表中查找社区。同样,networkx
包中有一个很好的python implementation。