1

1000 個の頂点を持つ 2 部リスト (投稿、単語カテゴリ) があり、コミュニティ検出に高速で貪欲なアルゴリズムを使用したいのですが、2 部グラフまたは 2 部投影で実行する必要があるかどうかはわかりません。

私の二部リストは次のようになります。

   post word
1   66  2
2   312 1
3   432 7
4   433 7
5   434 1
6   435 5
7   436 1
8   437 4

プロジェクションなしで実行すると、2 番目のステップでクラスタリングに問題が発生します。

### Load bipartie list and create graph ###
bipartite_list <- read.csv("bipartite_list_tnf.csv", header = TRUE, sep = ";")
bipartite_graph <- graph.incidence(bipartite_list)
g<-bipartite_graph
fc <- fastgreedy.community(g) ## communities / clusters
set.seed(123)
l <- layout.fruchterman.reingold(g, niter=1000, coolexp=0.5) ## layout
membership(fc)
# 2. checking who is in each cluster
cl <- data.frame(name = fc$post, cluster = fc$membership, stringsAsFactors=F)
cl <- cl[order(cl$cluster),]
cl[cl$cluster==1,]

# 3. preparing data for plot
d <- data.frame(l); names(d) <- c("x", "y")
d$cluster <- factor(fc$membership)

# 4. plot with only nodes, colored by cluster
p <- ggplot(d, aes(x=x, y=y, color=cluster))
pq <- p + geom_point()
pq

たぶん、プロジェクションでコミュニティ検出を実行する必要がありますか? しかし、射影はグラフ オブジェクトではないため、常に失敗します。

bipartite_graph <- graph.incidence(bipartite_list)
#projection (both directions)
projection_word_post <- bipartite.projection(bipartite_graph)
fc <- fastgreedy.community(projection_word_post)
Fehler in fastgreedy.community(projection_word_post) : Not a graph object

喜んでお手伝いします!

4

1 に答える 1

1

プロジェクションなしで実行すると、問題は次の場所にあります。

bipartite_graph <- graph.incidence(bipartite_list)

関数に適用する前に、「bipartite_list」を再形成する必要がありgraph.incidence()ます。以下のコマンドを使用します

tab <- table(bipartite_list)

残りの手順は同じです

g <- graph.incidence(tab,mode=c("all"))
fc <- fastgreedy.community(g)
于 2016-08-03T21:38:11.643 に答える