Advanced NetworkX

Advanced NetworkX

アルゴリズム

近似とヒューリスティック

最適化問題のグラフプロパティとヒューリスティック関数の近似。これらの関数はnetworkx.algorithmsインポート近似からアクセスできます

接続性

ノード接続の高速近似

all_pairs_node_connectivity(g)[、nbunch、cutoff]) すべてのノードペア間のノード接続を計算します
local_node_connectivity \(G、ソース、ターゲット[、…]) ソースとターゲット間のノード接続を計算する
local_node_connectivity \(G、ソース、ターゲット[、…]) ソースとターゲット間のノード接続を計算する

団体

大きなグループを計算するための関数。

max_click(g) 最大のグループを見つける
click_removal(g) グラフからグループを繰り返し削除
large_clique_size(g) グラフで大規模なグループのサイズを見つける

クラスタリング

average_clustering(g)[、試験、シード]) Gの平均クラスタリング係数を推定する

独立セット

独立セットまたは安定セットは、グラフ内の頂点のセットであり、2つが隣接していません。つまり、これは頂点iのセットであるため、iの2つの頂点ごとに、これら2つの頂点を結ぶエッジはありません。同様に、グラフの各エッジには、iに最大で1つの端点があります。独立セットのサイズは、セットに含まれる頂点の数です。
最大独立セットは、特定のグラフGの最大独立セットであり、そのサイズはα(G)として表されます。このようなセットを見つける問題は、最大独立セット問題と呼ばれ、NPハード最適化問題です。したがって、最大の独立したグラフのセットを見つける効果的なアルゴリズムはありません。

maximum_independent_set(g) 近似最大独立セットを返します

国境

ノード境界のセットを見つけるルーチン。
エッジ境界はエッジのセットであり、各エッジには、指定されたノードのセット内のエンドポイントが1つだけあります(または、有向グラフでは、ソースノードはセット内のエッジのセットです)。

edge_boundary \(G、Nボタン1 [、nbunch2、data、…]) エッジ境界nbunch1を返します。
node_boundary \(G、Nボタン1 [、nbunch2]) 返されたノード境界nbunch1

クラスタリング

グラフ内の三角形の数を記述するアルゴリズム

三角形(g)[、ノード] 三角形の数を数える
推移性(g) グラフの推移性、g内のすべての可能な三角形の割合を計算します
クラスタリング(g)[、ノード、重み]) ノードのクラスタリング係数を計算する
average_clustering(g)[、ノード、重み、…]) グラフGの平均クラスタリング係数を計算する
square_clustering(g)[、ノード]) ノードの二乗クラスタリング係数を計算します
generalized_degree(g)[、ノード]) ノードの一般性を計算する

コミュニティ

コミュニティ構造の機能を計算して測定します。このクラスの関数は、最上位のnetworkx名前空間にはインポートされません。networkx.algorithms.communityモジュールをインポートしてから、属性として関数コミュニティにアクセスします。次に例を示します。

>>> import networkx as nx
>>> from networkx.algorithms import community
>>> G = nx.barbell_graph(5, 1)
>>> communities_generator = community.girvan_newman(G)
>>> top_level_communities = next(communities_generator)
>>> next_level_communities = next(communities_generator)
>>> sorted(map(sorted, next_level_communities))
[[0, 1, 2, 3, 4], [5], [6, 7, 8, 9, 10]]

デュアルパーティション

Kernighan–Lin二部アルゴリズムを計算するための関数

kernighan_lin_bisection(g)[、パーティション、…]) Kernighan–Linアルゴリズムを使用して、グラフを2つのブロックに分割します

Kグループ

k_clique_communities(g、k)[、クリック]) 浸透法を使用して画像内のKグループコミュニティを見つける
>>> from networkx.algorithms.community import k_clique_communities
>>> G = nx.complete_graph(5)
>>> K5 = nx.convert_node_labels_to_integers(G,first_label=2)
>>> G.add_edges_from(K5.edges())
>>> c = list(k_clique_communities(G, 4))
>>> sorted(list(c[0]))
[0, 1, 2, 3, 4, 5, 6]
>>> list(k_clique_communities(G, 6))
[]

モジュラーコミュニティ

モジュール化に基づくコミュニティ検出機能

greedy_modularity_communities(g)[、重量]) Clause Newman-Mooreの貪欲なモジュラー最大化を使用してグラフ内のコミュニティを見つける

ラベルの伝播

マーク伝播コミュニティ検出アルゴリズム

asyn_lpa_communities(g)[、重量、シード]) 非同期ラベル伝播によって検出されたコミュニティGに戻る
label_propagation_communities(g) ラベルの伝播によって決定されたコミュニティセットを生成する

モバイルコミュニティ

コミュニティ検出のための非同期流体コミュニティアルゴリズム

asyn_fluidc(g、k)[、max_iter、シード]) 流体コミュニティアルゴリズムによって検出されたコミュニティGに戻る

測定パーティション

パーティションの品質を測定する機能(コミュニティに入る)

カバレッジ\(G、パーティション) パーティションのカバレッジを返します
パフォーマンス\(G、パーティション) パーティションのパフォーマンスを返します

中心性メジャーで除算

中心性の概念に基づくコミュニティ機能の計算

girvan_newman(g)[、most_valuable_edge]) girvan–newman法を使用してグラフ内のコミュニティを見つける

パーティションを確認しています

コミュニティ検索アルゴリズムのヘルパー関数

is_partition \(G、コミュニティ) コミュニティがノードGのパーティションである場合、Trueを返します

他のデータ形式との間で変換

NetworkXグラフィックスへ

NetworkXグラフィックを他のフォーマットに、または他のフォーマットから他のフォーマットに変換するための関数。
データをNetworkXグラフィックスに変換するための推奨される方法は、グラフィックスコンストラクターを使用する方法です。コンストラクターはto-networkx-graph()関数を呼び出します。この関数は、入力タイプを推測して自動的に変換しようとします。

to_networkx_graph [データ] [、create_using、…]) 既知のデータ構造に基づいてNetworkX図を作成する

辞書

to_dict_of_dicts(g)[、nodelist、edge_data]) グラフの隣接表現を辞書として返します
from_dict_of_dicts \(d)[、create_using、…]) 辞書のチャートに戻る

リスト

to_dict_of_lists(g)[、ノードリスト]) グラフの隣接表現をリストディクショナリとして返します
from_dict_of_lists \(d)[、create_using]) リストディクショナリのグラフを返す
to_edgelist(g)[、nodelist]) チャートのエッジのリストを返します
from_edgelist(EgGristor)[、create_using]) エッジリストのグラフを返します

マトリックス

numpy行列から10ノードのランダムグラフを作成する

>>> import numpy as np
>>> a = np.random.randint(0, 2, size=(10, 10))
>>> D = nx.DiGraph(a)
>>> D = nx.to_networkx_graph(a, create_using=nx.DiGraph)
to_numpy_matrix(g)[、nodelist、dtype、order、…]) グラフ隣接行列をnumpy行列として返します
to_numpy_array(g)[、nodelist、dtype、order、…]) 以numpy数组形式返回图形邻接矩阵
to_numpy_recarray (g) [, nodelist, dtype, order] ) 以numpy recarray形式返回图形邻接矩阵
from_numpy_matrix (a) [, parallel_edges, …] ) 返回numpy矩阵中的图形
from_numpy_array (a) [, parallel_edges, …] ) 返回numpy数组中的图形

scipy

to_scipy_sparse_matrix (g) [, nodelist, dtype, …] ) 以scipy稀疏矩阵的形式返回图形邻接矩阵
from_scipy_sparse_matrix (a) [, …] ) 从给定为scipy稀疏矩阵的邻接矩阵创建新图形

Pandas

to_pandas_adjacency (g) [, nodelist, dtype, …] ) 以熊猫数据帧的形式返回图形邻接矩阵
from_pandas_adjacency (DF) [, create_using] ) 返回熊猫数据帧中的图形
to_pandas_edgelist (g) [, source, target, …] ) 以熊猫数据帧的形式返回图形边缘列表
from_pandas_edgelist (DF) [, source, target, …] ) 从包含边缘列表的熊猫数据帧返回一个图表

绘图

NetworkX提供了图形可视化的基本功能,但其主要目标是启用图形分析,而不是执行图形可视化。
matplotlib

用matplotlib绘制网络

draw (g) [, pos, ax] ) 用matplotlib绘制图g
draw_networkx (g) [, pos, arrows, with_labels] ) 使用matplotlib绘制图g
draw_networkx_nodes (G,POS) [, nodelist, …] ) 绘制图G的节点
draw_networkx_edges (G,POS) [, edgelist, …] ) 绘制图G的边
draw_networkx_labels (G,POS) [, labels, …] ) 在图G上绘制节点标签
draw_networkx_edge_labels (G,POS) [, …] ) 绘制边缘标签
draw_kamada_kawai \(g) * * ) 用Kamada Kawai部队定向布局绘制图G
draw_planar \(g) * * ) 用平面布局绘制平面网络图
draw_random \(g) * * ) 用随机布局绘制图G
draw_spectral \(g) * * ) 用光谱二维布局绘制图G
draw_spring \(g) * * ) 用弹簧布局绘制图G
draw_shell \(g) * * ) 使用外壳布局绘制NetworkX图

图形布局

用于图形绘制的节点定位算法

bipartite_layout \(g,节点) [, align, scale, …] ) 将节点定位在两条直线上
circular_layout (g) [, scale, center, dim] ) 在圆上定位节点
kamada_kawai_layout (g) [, dist, pos, weight, …] ) 使用Kamada Kawai路径长度成本函数定位节点
planar_layout (g) [, scale, center, dim] ) 定位没有边缘交点的节点
random_layout (g) [, center, dim, seed] ) 在单位正方形内均匀随机定位节点
rescale_layout (POS) [, scale] ) 将缩放位置数组返回到所有轴中的(-scale,scale)
shell_layout (g) [, nlist, scale, center, dim] ) 将节点定位在同心圆中
spring_layout (g) [, k, pos, fixed, …] ) 使用Fruchterman-Reingold力定向算法定位节点
spectral_layout (g) [, weight, scale, center, dim] ) 使用图拉普拉斯的特征向量定位节点
spiral_layout (g) [, scale, center, dim, …] ) 在螺旋布局中定位节点
发布了23 篇原创文章 · 获赞 7 · 访问量 1002

おすすめ

転載: blog.csdn.net/qq_34356768/article/details/103968913