Pythonで学ぶネットワーク分析

「Pythonで学ぶネットワーク分析 ColaboratoryとNetworkXを使った実践入門」

このサイトには「Pythonで学ぶネットワーク分析 ColaboratoryとNetworkXを使った実践入門」に関する追加情報を掲載します。
2024年3月に第6刷が出ることになりました。読んでくださった皆さまに感謝致します。第6刷では、以下の2024年1月24日の修正が反映されているはずです。

書誌情報
Pythonで学ぶネットワーク分析 ColaboratoryとNetworkXを使った実践入門
村田 剛志 著
本体2,800円+税
A5判/208頁
ISBN:978-4-274-22425-6
発売日:2019/09/15
発行元:オーム社

プログラムコード
第1章 分析できる環境を用意する-ツールや言語の把握
第2章 ネットワーク分析の流れを知る-小説の人間関係を紐解く
[.ipynbでダウンロードする] (Mark NewmanのサイトのGML形式のデータを使用します)
第3章 必要な用語を学ぶ-ネットワークの基礎知識
[.ipynbでダウンロードする]
第4章 中心を見つける-さまざまな中心性
[.ipynbでダウンロードする]
第5章 経路を見つける-ネットワークの探索
[.ipynbでダウンロードする]
第6章 グループを見つける-分割と抽出
[.ipynbでダウンロードする]
第7章 似たネットワークを作る-モデル化
[.ipynbでダウンロードする]
第8章 似た頂点を見つける-将来の構造予測
[.ipynbでダウンロードする]
第9章 病気や口コミの広がりをモデル化する-感染、情報伝搬
[.ipynbでダウンロードする]
第10章 ネットワークを俯瞰する-可視化による分析
[.ipynbでダウンロードする]
第11章 リファレンス

2024.1.24更新
・2章、3章、7章、8章、9章のプログラムコードを以下のように修正しました。現時点で全てのコードが動作することを確認しています。
2.4 draw_circularの引数nlistを除去
3.6 nx.info(G)を除去しnumber_of_nodesなどの関数を追加
3.7 nx.info(G)を除去しin_degreeなどの関数を追加
3.8 nx.info(G)を除去しnumber_of_nodesなどの関数を追加
3.13 行列積を**から@に修正
3.14 行列積を**から@に修正
7.1 nx.info(G)を除去し number_of_nodesなどの関数を追加
7.4 nx.info(G)を除去しnumber_of_nodesなどの関数を追加
8.1 スペリングを修正
8.3 関数word2vecの引数のsizeをvector_sizeに変更
8.4 関数word2vecの引数のsizeをvector_sizeに変更
9.1 scipy.expからnumpy.expに修正
9.2 NDlibの変更に伴い、ライブラリの一部をbokehからmatplotlibに変更(ndlib.viz.bokeh.DiffusionTrend -> ndlib.viz.mpl.DiffusionTrend 等)
DiffusionTrendとDiffusionPrevalenceの引数を除去

正誤表(2020.12.16現在)
・目次vi 第4.1節 さなざまな中心性の定義 -> さまざまな中心性の定義
・p.41 リスト3.5 -> リスト3.5 疎行列と密行列
・p.52-p.62 (リスト3.12からリスト3.16までの順序が本と同じになるよう、プログラムコードchapter3.ipynbを修正済)
・p.60 3行目 三角行列とは、0でないの要素が行列の対角成分より下だけに存在し、対角成分より上は全て0となる行列のことです。
-> 三角行列とは、0でない要素が行列の対角成分より上(下)だけに存在し、対角成分より下(上)は全て0となる行列のことです。
・p.83 サブタイトル さなざまな中心性 -> さまざまな中心性
・p.118 3行目 右辺の第一項は -> 右辺の第一項はクロネッカーのデルタ(p.122参照)を使って
・p.119 Ls = \lambda s + \mu 1 Ls -> Ls = \lambda s + \mu 1
・p.120 = n - 2 \frac{n_1 - n_2}{n}(n_1 - n_2) + \frac{(n_1 - n_2)^2}{n} n = 4 \frac{n_1 n_2}{n} -> = n - 2 \frac{n_1 - n_2}{n}(n_1 - n_2) + \frac{(n_1 - n_2)^2}{n^2} n = 4 \frac{n_1 n_2}{n}
・p.122 4行目 コミュニティのラベル、\delta(c_i,c_i) -> コミュニティのラベル、\delta(c_i,c_j)
・p.125 11行目 greedy_modularity_commiunitiesによってモジュラリティ最適化による -> greedy_modularity_commiunitiesによってCNM法(Clauset-Newman-Moore)でのモジュラリティ最適化による
・p.146 Score_cn(v,w) = |Γ(v)∪Γ(w)| -> Score_cn(v,w) = |Γ(v)∩Γ(w)|
・p.154 リスト8.3のプログラムが動かない -> (NetworkX 2.4から仕様が変更され、35行目のG.node[]をG.nodes[]に直すと動く)
参照:AttributeError: 'Graph' object has no attribute 'node'
・p.154 15行目 長さ20のランダムウォークを100回行い -> 各頂点から長さ20のランダムウォークを100回行い
・p.155 リスト8.3 17行目 current_node = node -> current_node = next_node
・p.156 1行目 Zachary karate club -> Zachary's karate club
・p.156 9行目 長さ20のランダムウォークを100回行い -> 各頂点から長さ20のランダムウォークを100回行い
・p.157 リスト8.4 18行目 current_node = node -> current_node = next_node
・p.178 5行目 ネットワークを可視化における -> ネットワークの可視化における
・p.191 練習問題4(iii) 次数中心性 (degree centrality) -> PageRank、次数中心性 (degree centrality)