次のエッジリストを変換しました。
Source Target Weight
A B 12
A C 14
A D 56
B C 17
B F 14
B G 10
次の隣接行列に:
{'A': {'B': {'weight': 12},
'C': {'weight': 14},
'D': {'weight': 56},
...
'B': {'C': {'weight': 17},
'F': {'weight': 14},
'G': {'weight': 10},
...
ここで、ソース列は投資の送信者であり、ターゲット列は投資の受信者です。重みの列は投資の量です。この重み付けされたネットワークで階層的クラスタリングを実行して、相互投資に基づいてクラスター化できるアクターを見つけたいと考えています (相互投資が高いほど、アクターは「近く」なります)。
私は SciPy の階層的クラスタリング パッケージ ( scipy.cluster.hierarchy
) を使用しています。私の中心的な問題は、上記のエッジ リストを、パッケージが適切に読み取る方法を認識できる距離行列に変換することです。距離は小さくする必要があり、タイの重みが高くなります(逆も同様です)が 、上記のデータフレームを入力として使用すると、 distance_matrix
fromはエラーのみを返します。scipy.spatial
説明されている方法でエッジの重みを反映するように距離行列を計算する方法はありますか? 主なポイントは、隣接行列を距離行列に変換して scipy パッケージで使用できるようにする方法を知ることです