繁体   English   中英

图聚类工具

[英]Graph Clustering Tool

我建立了一个协作式过滤算法(余弦,项目-项目)来揭示项目之间的关系。 最后我的结果数据看起来像这样,

itemNo relatedItemNo    similarityValue
1546301 1543903 0.10767638
1546301 1530836 0.093250481
1546301 1479721 0.10767638
1557616 1573636 0.121267813
1557616 1558024 0.161690417
1086551 1437760 0.127000127
1086551 1552321 0.083333333
1086551 1578137 0.127000127
1086551 1560842 0.081110711
....... ....... ...........

现在我想用它做集群。 使用项目之间的相似性值,我想得到一些聚类,说1546301、1477921、1543903在聚类A中; 1086551,1552321,1560842在群集B中。

我该如何处理? 我是数据挖掘的新手,因此即使简单的工具也很难使用。

我了解到这称为“图形集群”,我已经为r下载了igraph,安装了cluto并尝试了一些步骤,但我什至不了解它们的输入数据格式。

你能给我指路吗? :)

图聚类的主题非常广泛,并且有许多不同的方法,每种方法都有其自己的特殊细节。 有关此主题的广泛治疗,请参阅此评论

但是,如果您正在寻找入门的基础,并且根据到目前为止提供的描述,可以尝试使用Centrality标识集群。 具体来说, 中间性中心度 (为顶点定义)将提供一个机会,可以按最常用的项的顺序对图的顶点(代表项)进行排序(假设您的相似性指的是这样的东西 )。

在Python中执行此操作只需使用Networkx即可完成

import networkx
G = networkx.read_edgelist("myfile.csv", delimiter="\t") #Assuming that your file is tab separated here. If it is coma separated then substitute \t for a ,. Also, it would be good to get rid of the header (i.e. the first line of the CSV.
bc = networkx.betweenness_centrality(G)

现在,变量bc保持每个节点的居中性。 要以相反的顺序对其进行排序(并因此首先获得集群“集线器”),您可以简单地选择bc_sorted = sorted(bc.items(),key=lambda x:x[1],reverse=True)

您可以将以上代码用作将代码“翻译”为另一种语言(例如R)的模板。实际上,存在等效的Python包( igraph ),它确实具有已实现节点的中间性度量标准以及Read_Edgelist ,将使您能够从磁盘读取数据。 也就是说,等效的R代码可以帮助您入门,与这三行代码没有太大不同。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM