使用Python中的谱(簇)网络进行邻接矩阵聚类

时间:2014-04-16 18:45:23

标签: python network-programming cluster-analysis spectral

我有以下数据集:

firm_id firm_id_
1         2
1         4
1         5
2         1
2         3
3         2
3         6
4         1
4         5
4         6
5         4
5         7
6         3
...

例如,此数据表示firm_id = 1直接连接到firm_id = 2,4和5,并且间接连接(在两条路径内)到firm_id = 3,6 ,和7.我可以使用像networkx这样的Python包来构建公司连接的网络。现在,我想使用光谱聚类(我猜这是正确的方法)来根据距离(分隔每个公司的边数)形成聚类,并看看这些聚类如何相互连接。

我首先要定义上述数据的邻接矩阵W.然后我使用enter image description here 其中 dist 是公司i和公司j之间的距离,c是W中每个元素的比例参数,然后计算拉普拉斯矩阵(例如,参见here)。

现在我的问题是光谱聚类能给我每个聚类之间的链接以及聚类之间的距离(聚类分隔多少个边缘)?我想在Python中使用thisscikit包,但我不知道如何使用sklearn.cluster生成集群之间的链接。

2 个答案:

答案 0 :(得分:1)

我需要社区检测网络:

http://perso.crans.org/aynaud/communities/

答案 1 :(得分:1)

对于频谱聚类和这些方法运作良好,您需要相似性

您的数据似乎只是一个图表,即连接实例的边缘。您应该查看图分区以及可能仅适用于图结构的社区检测算法,并且不要假设您有连续的相似度。