gpt4 book ai didi

r - 社交图分析。 60GB 和 1 亿个节点

转载 作者:行者123 更新时间:2023-12-04 18:48:39 24 4
gpt4 key购买 nike

晚上好,

我正在尝试分析上述数据(edgelist 或 pajek 格式)。首先想到的是带有 igraph 包的 R 项目。但是内存限制(6GB)不会起作用。 128GB 的​​ PC 能否处理数据?是否有任何替代方案不需要 RAM 中的整个图形?

提前致谢。

P.S:我找到了几个程序,但我想听听一些专业人士(是的,就是你)对此事的看法。

最佳答案

如果您只需要度数分布,则可能根本不需要图形包。我推荐 bigtablulate package以便

  • 您的 R 对象是文件支持的,因此您不受 RAM 的限制
  • 您可以使用 foreach 并行化度计算

  • 退房 their website更多细节。为了给出这种方法的快速示例,让我们首先创建一个包含 100 万个节点中的 100 万条边的边列表的示例。
    set.seed(1)
    N <- 1e6
    M <- 1e6
    edgelist <- cbind(sample(1:N,M,replace=TRUE),
    sample(1:N,M,replace=TRUE))
    colnames(edgelist) <- c("sender","receiver")
    write.table(edgelist,file="edgelist-small.csv",sep=",",
    row.names=FALSE,col.names=FALSE)

    我接下来将这个文件连接 10 次以使示例更大一些。
    system("
    for i in $(seq 1 10)
    do
    cat edgelist-small.csv >> edgelist.csv
    done")

    接下来我们加载 bigtabulate打包并使用我们的边缘列表读取文本文件。命令 read.big.matrix()在 R 中创建一个文件支持的对象。
    library(bigtabulate)
    x <- read.big.matrix("edgelist.csv", header = FALSE,
    type = "integer",sep = ",",
    backingfile = "edgelist.bin",
    descriptor = "edgelist.desc")
    nrow(x) # 1e7 as expected

    我们可以使用 bigtable() 计算出度在第一列。
    outdegree <- bigtable(x,1)
    head(outdegree)

    快速检查以确保表按预期工作:
    # Check table worked as expected for first "node"
    j <- as.numeric(names(outdegree[1])) # get name of first node
    all.equal(as.numeric(outdegree[1]), # outdegree's answer
    sum(x[,1]==j)) # manual outdegree count

    要获得学位,只需做 bigtable(x,2) .

    关于r - 社交图分析。 60GB 和 1 亿个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646686/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com