【发布时间】:2015-08-04 19:22:03
【问题描述】:
我是 igraph 和社交网络分析的新手,但不是 R。
我正在努力正确构建用于社区检测的数据集,但已成功使用 iGraph 生成共现矩阵 as directed [here]。接下来我想做的是在同一个数据集上使用社区检测算法来创建一个显示集群的图形as is done in the answer here。
如何做到这一点的示例代码如下:
df1 <- graph.famous("Zachary")
df2 <- walktrap.community(df1) #any algorithm
plot.communities(df2, df)
我一直在网上四处寻找 Zachary 数据集的结构,以便正确建模我的数据,但我很难通过技术文档找到自己的方法。
我的数据目前是长格式的,这样:
id interest comments
1 Comedy 2
1 Music: Electronic 11
1 Video Gaming 10
1 Music: Pop 1
1 Entertainment 1
1 Video Gaming 4
2 Video Gaming 45
2 Entertainment 26
2 Music: Pop 1
2 Comedy 14
3 Video Gaming 10
3 Entertainment 4
3 Comedy 8
4 Video Gaming 9
4 Music: Electronic 1
4 Music: Pop 2
5 Music: Pop 2
5 Entertainment 1
5 Video Gaming 1
6 Video Gaming 12
我试图在我正在研究的人群中找到重叠兴趣的集群,所以ID 是一个人,interests 是这个人的兴趣,comments 是他们有多少次的索引表现出兴趣。这有帮助吗?
我尝试在此数据集上运行社区算法(例如df2 <- walktrap.community(df)),但这似乎无法正常工作。关于这个 n00b 做错了什么的想法?
【问题讨论】:
-
图由节点和边组成。您的数据集中的哪些内容与节点相关,您如何知道哪些节点已连接?对于 Zarchary 数据,它可以用邻接矩阵 (
get.adjacency(df1)) 或边列表 (get.edgelist(df1)) 表示 -
@MrFlick 节点是“兴趣”列中的值——即喜剧、游戏等。我试图在我正在研究的人群中找到重叠兴趣的集群,所以 ID 是一个人,兴趣是这个人的兴趣,而“cmets”是他们表现出兴趣的次数的指数。这有帮助吗?
-
这是有道理的,但仍然不能很好地转化为图形语言。因此,您希望每个兴趣都成为一个节点,然后如果用户共享两个兴趣,您希望节点之间有一条边?我不确定你会对 cmets 列做什么,因为它似乎不太适合作为节点或边权重。我仍然很难看到这些数据将如何以图表形式表示。
-
@MrFlick 我可能没有准确地沟通......我的最终目标是找到具有不同兴趣组合的独特人群。因此,可能会有一群喜欢“游戏和娱乐”的人,这可能与喜欢“游戏和喜剧”的人相关(但又不同)。 “cmets”旨在提供相对的兴趣权重(并用于共现分析),但我真的只是想通过建议的聚类方法来混淆我的方式......
-
@roody 如果您觉得我的回答对您有帮助或回答了您的问题,请点赞/接受。否则,请随时发表评论以获得澄清。