gpt4 book ai didi

python - 如何使用 networkx 图作为 sklearn 的输入

转载 作者:行者123 更新时间:2023-12-05 04:01:07 28 4
gpt4 key购买 nike

我想应用 sklearn 图聚类算法,但它们不接受来自 networkx 的 .gexf 格式的输入。我需要什么样的库/转换才能使我的 .gexf 图适合 sklearn?

最佳答案

聚类算法接受距离矩阵、亲和矩阵或特征矩阵。例如,kmeans 将接受特征矩阵(比如 m 维的 n 个点的 X)并应用欧几里得距离度量,而亲和传播接受亲和矩阵(即 nxn 维的方阵 D)或特征矩阵(取决于affinity 参数)。

如果您想应用 sklearn(或非图形)聚类算法,您可以 extract adjacency matrices来自 networkx 图。

A = nx.to_scipy_sparse_matrix(G)

我猜你应该确定一下,你的对角线是 1;如果不是,则执行 numpy.fill_diagonal(D, 1)

然后只剩下应用聚类算法:

from sklearn.cluster import AffinityPropagation


ap = AffinityPropagation(affinity='precomputed').fit(A)
print(ap.labels_)

如果您想应用其他算法,甚至可以将邻接/距离矩阵投影到特征矩阵,也可以将邻接矩阵转换为距离矩阵。

要完成所有这些就太过分了,但是,至于获取距离矩阵,如果您有二元边,则可以执行 D = 1 - A;如果你有加权边,你可以 D = A.max() - A

关于python - 如何使用 networkx 图作为 sklearn 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55599825/

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