标签: network-analysis

在R中构建单词共生边缘列表

我有一大块句子,我想建立单词共现的无向边列表,并查看每个边的频率.我看了看tm包但没找到类似的功能.我可以使用一些包/脚本吗?非常感谢!

注意:单词不会与自身共存.出现两次或更多次的单词与同一句子中的其他单词共同出现一次.

DF:

sentence_id text
1           a b c d e
2           a b b e
3           b c d
4           a e
5           a
6           a a a
Run Code Online (Sandbox Code Playgroud)

OUTPUT

word1 word2 freq
a     b     2
a     c     1
a     d     1
a     e     3
b     c     2
b     d     2
b     e     2
c     d     2
c     e     1
d     e     1
Run Code Online (Sandbox Code Playgroud)

r text-mining network-analysis

5
推荐指数
1
解决办法
2121
查看次数

根据度数排序节点并使用 igraph 在 R 中操作

我正在使用的数据集显示节点之间的链接。例如:

> data2
   V1   V2
1 10000 4725
2  4725 6805
3  4725 3250
4  5725 3250
5  1725 7673
Run Code Online (Sandbox Code Playgroud)

(例如使用小数据框)。这里的数据框表示节点 10000 和 4725 之间存在无向链接,节点 4725 和 6805 之间存在链接等等。使用 igraph 包,我正在获取单个节点的度数:

  g<-graph.data.frame(data2, directed=F)
 deg <- igraph::degree(g)
> deg
   10000  4725  5725  1725  6805  3250  7673 
    1     3     1     1     1     2     1 
Run Code Online (Sandbox Code Playgroud)

接下来,我根据节点的度数以降序对节点进行排序:

 > dSorted <-sort.int(deg,decreasing=TRUE,index.return=FALSE)
 > dSorted
 4725  3250 10000  5725  1725  6805  7673 
   3     2     1     1     1     1     1
Run Code Online (Sandbox Code Playgroud)

取数据框的第一列:

  > ln1 <- data2[,1]
> ln1
[1] …
Run Code Online (Sandbox Code Playgroud)

r igraph network-analysis

5
推荐指数
1
解决办法
2489
查看次数

提取 tidygraph 中特定节点的邻域/子图

我在摸索某些在 igraph 中相对简单的 Tidygraph 操作时遇到了一些麻烦。

我特别想以不同的顺序分析特定的社区。我想我需要使用 Morphs 来实现这一点,但我还没有让它发挥作用。

library(tidygraph)
library(ggraph)
Run Code Online (Sandbox Code Playgroud)
net <- tibble::tibble(A = letters[1:6],
               B = rep(c("x", "y"), each = 3)) %>% 
  tidygraph::as_tbl_graph()
Run Code Online (Sandbox Code Playgroud)

例如,假设我有以下网络结构:

我想分析 x 的邻域。

net %>% 
  ggraph(layout = "nicely") +
    geom_edge_link() +
    geom_node_point(size = 10, fill = "white", shape = 21) +
    geom_node_text(aes(label = name)) +
    theme_graph()
Run Code Online (Sandbox Code Playgroud)

全网

iGraph 实现的工作原理如下:

提取节点 x 的邻域。

v <- net %>% 
  tidygraph::as.igraph() %>% 
  igraph::neighborhood(nodes = "x", order = 1)
Run Code Online (Sandbox Code Playgroud)

通过取消列出 igraph.vs 对象来构建子图

igraph::induced_subgraph(net, vids = unlist(v)) %>% 
  tidygraph::as_tbl_graph() %>% 
  ggraph(layout = …
Run Code Online (Sandbox Code Playgroud)

r igraph network-analysis tidygraph

5
推荐指数
1
解决办法
1368
查看次数

在使用 python-louvain 缩放图的边权重后,什么会导致社区检测到不同的结果?

我注意到,如果我使用相同的值更改图中的所有边权重,则community.best_partition并不总是导致相同的社区。

我在所有情况下都使用相同的随机状态,图形完全相同,只是不是所有边权重都等于 1,例如它们可能等于 5。模块化的定义抵消了这个乘以邻接矩阵的因素当我阅读算法时,我找不到应该改变结果的步骤。是否有导致这种差异的原因?

import networkx as nx
import community

from sklearn.metrics import adjusted_rand_score


def main():
    g = nx.davis_southern_women_graph()
    nodes = g.nodes()
    clusters_init = community.best_partition(g, random_state=10)
    print("modularity with initial clusters = %.15f" % community.modularity(clusters_init, g))

    labels_init = [clusters_init[n] for n in nodes]
    for num in range(1, 9):

        for u, v in g.edges():
            g[u][v]["weight"] = num

        clusters = community.best_partition(g, random_state=10)
        labels = [clusters[n] for n in nodes]
        print("value of edge weight = %d," % num, "modularity = %.15f," % …
Run Code Online (Sandbox Code Playgroud)

python graph cluster-analysis networkx network-analysis

5
推荐指数
1
解决办法
286
查看次数

为什么可以进行数据包嗅探?

我无法理解网络上的任何人如何使用数据包嗅探器。

我对网络的工作原理知之甚少,但让我这样说:假设邮递员将包裹送到我家门口。为什么我可以翻遍他所有的其他包裹并环顾四周?邮递员不应该只把属于我的包裹交给我吗?

man-in-the-middle packet-sniffers network-analysis

4
推荐指数
1
解决办法
2368
查看次数

使igraph更加清晰易读

我有一个有69个顶点的有向图,如下所示。它是使用igraph软件包绘制的:

library(igraph)
ig <- graph.adjacency(data, mode="directed", weighted=TRUE) 
plot(ig)
Run Code Online (Sandbox Code Playgroud)

我正在寻求实现以下两点:

(a)将顶点隔开,并可能加长边缘,使其更易于阅读

(b)实际上,我的标签更长。是否可以使顶点变大而使文本变小以适应这个问题。

有任何想法吗?

这是我的数据:https : //www.dropbox.com/s/rtedrd1x1duqllj/data.Rdata?dl=0

图

r igraph network-analysis

4
推荐指数
1
解决办法
3192
查看次数

在 R 中测试图形平面度

R中有没有办法测试网络图是否是平面的?我看过 igraph 但无济于事。

我知道我可以使用 BGL 工具箱在 MATLAB 中使用,但我想知道是否有人在 R 中尝试过。

r igraph planar-graph network-analysis

4
推荐指数
1
解决办法
993
查看次数

如何从pandas数据帧创建边缘列表?

我有一个形式的熊猫数据帧(df) -

    Col1
A  [Green,Red,Purple]
B  [Red, Yellow, Blue]
C  [Brown, Green, Yellow, Blue]
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为边缘列表,即表单的数据框:

Source    Target    Weight
  A         B         1
  A         C         1
  B         C         2
Run Code Online (Sandbox Code Playgroud)

编辑 请注意,新数据框的行数等于可能的成对组合的总数.此外,要计算"权重"列,我们只需找到两个列表之间的交集.例如,对于B&C,元素共享两种颜色:蓝色和黄色.因此,相应行的"权重"为2.

最快的方法是什么?原始数据框包含大约28,000个元素.

python dataframe pandas network-analysis

4
推荐指数
2
解决办法
1884
查看次数

如何在r中的ggraph网络中按权重调整边的宽度

我需要在 r 中使用 ggraph 生成一个网络。我想要的是通过权重变量(或节点的大小)调整边缘宽度。有谁知道我该怎么做?多谢。

示例代码如下:

library(ggraph)
library(igraph)
data=data.frame(w1=rep('like', 5), 
           w2 = c('apple', 'orange', 'pear','peach', 'banana'),
           weight= c(2,3,5,8, 15))
data %>% 
  graph_from_data_frame() %>% 
  ggraph(layout = "fr") +
  geom_edge_link(alpha = .25) +
  geom_node_point(color = "blue", size = 2) + 
  geom_node_text(aes(label = name),  repel = TRUE)
Run Code Online (Sandbox Code Playgroud)

r igraph network-analysis ggraph

4
推荐指数
1
解决办法
6767
查看次数

为什么在查找直径时,networkx 说我的有向图已断开?

我正在爬行slideshare.net图,从我的节点开始,跟踪BFS中的所有用户,直到访问的节点数为1000。我按以下方式执行BFS:

from urllib.request import urlopen
from collections import deque
import sys
import json
import codecs
import csv
import io
import hashlib
import time
import xml.etree.ElementTree as etree
queue = deque(["himanshutyagi11"])
while len_visitedset < 1ooo:
        vertex = queue.pop()
        if vertex in visited:
            continue
        visited.add(vertex)
        length_visited = len(visited)
        print(vertex,length_visited)
        crawl(vertex)
Run Code Online (Sandbox Code Playgroud)

crawl() 是一个函数,我在其中进行幻灯片 api 查询,如此处所述, 使用我的shared_secret 和 api_key(在 api 注册时给出)创建查询有效负载,发送查询并解析存储在变量“response”中的 XML 响应'。解析后,我将当前节点的联系人添加到队列中。

request_timestamp = int(time.time())
request_hash_string = shared_secret+str(request_timestamp)
request_hash_value = hashlib.sha1(request_hash_string.encode('utf-8')).hexdigest()
request_url = 'https://www.slideshare.net/api/2/get_user_contacts?username_for='+username+'&api_key='+api_key+'&hash='+request_hash_value+'&ts='+str(request_timestamp)
response = etree.parse(urlopen(request_url)).getroot()
# Append all the adjacent …
Run Code Online (Sandbox Code Playgroud)

python networkx network-analysis

3
推荐指数
1
解决办法
1万
查看次数