{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "graph_example.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6anJNPgZx4zJ"
      },
      "source": [
        "# グラフマイニングの例\n",
        "- データセット\n",
        "  - [social circles: Facebook](http://snap.stanford.edu/data/ego-Facebook.html)から facebook_combined.txt.zip を利用。\n",
        "  - graph1.txt, graph2.txt, graph_modularity_simple.txt: 小さなグラフ例\n",
        "- ツール等\n",
        "  - [Graphviz](https://www.graphviz.org/): ノードとエッジで構成されるグラフ描画ツール。\n",
        "  - [pygraphviz](https://pygraphviz.github.io/): GraphvizをPythonから使うためのラッパー。\n",
        "  - [networkx](https://networkx.github.io/): ネットワーク解析パッケージ。"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yu-0uyPqyz7w"
      },
      "source": [
        "## 環境構築"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_F6U30TpltBr",
        "outputId": "a51f1b71-19d7-416d-ace4-0d82893c860b"
      },
      "source": [
        "!apt install libgraphviz-dev\n",
        "!pip install pygraphviz"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Reading package lists... Done\n",
            "Building dependency tree       \n",
            "Reading state information... Done\n",
            "The following additional packages will be installed:\n",
            "  libgail-common libgail18 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common\n",
            "  libgvc6-plugins-gtk libxdot4\n",
            "Suggested packages:\n",
            "  gvfs\n",
            "The following NEW packages will be installed:\n",
            "  libgail-common libgail18 libgraphviz-dev libgtk2.0-0 libgtk2.0-bin\n",
            "  libgtk2.0-common libgvc6-plugins-gtk libxdot4\n",
            "0 upgraded, 8 newly installed, 0 to remove and 39 not upgraded.\n",
            "Need to get 2,120 kB of archives.\n",
            "After this operation, 7,128 kB of additional disk space will be used.\n",
            "Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgtk2.0-common all 2.24.32-1ubuntu1 [125 kB]\n",
            "Get:2 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgtk2.0-0 amd64 2.24.32-1ubuntu1 [1,769 kB]\n",
            "Get:3 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgail18 amd64 2.24.32-1ubuntu1 [14.2 kB]\n",
            "Get:4 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgail-common amd64 2.24.32-1ubuntu1 [112 kB]\n",
            "Get:5 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libxdot4 amd64 2.40.1-2 [15.7 kB]\n",
            "Get:6 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libgvc6-plugins-gtk amd64 2.40.1-2 [18.2 kB]\n",
            "Get:7 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libgraphviz-dev amd64 2.40.1-2 [57.3 kB]\n",
            "Get:8 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgtk2.0-bin amd64 2.24.32-1ubuntu1 [7,536 B]\n",
            "Fetched 2,120 kB in 1s (1,456 kB/s)\n",
            "Selecting previously unselected package libgtk2.0-common.\n",
            "(Reading database ... 160772 files and directories currently installed.)\n",
            "Preparing to unpack .../0-libgtk2.0-common_2.24.32-1ubuntu1_all.deb ...\n",
            "Unpacking libgtk2.0-common (2.24.32-1ubuntu1) ...\n",
            "Selecting previously unselected package libgtk2.0-0:amd64.\n",
            "Preparing to unpack .../1-libgtk2.0-0_2.24.32-1ubuntu1_amd64.deb ...\n",
            "Unpacking libgtk2.0-0:amd64 (2.24.32-1ubuntu1) ...\n",
            "Selecting previously unselected package libgail18:amd64.\n",
            "Preparing to unpack .../2-libgail18_2.24.32-1ubuntu1_amd64.deb ...\n",
            "Unpacking libgail18:amd64 (2.24.32-1ubuntu1) ...\n",
            "Selecting previously unselected package libgail-common:amd64.\n",
            "Preparing to unpack .../3-libgail-common_2.24.32-1ubuntu1_amd64.deb ...\n",
            "Unpacking libgail-common:amd64 (2.24.32-1ubuntu1) ...\n",
            "Selecting previously unselected package libxdot4.\n",
            "Preparing to unpack .../4-libxdot4_2.40.1-2_amd64.deb ...\n",
            "Unpacking libxdot4 (2.40.1-2) ...\n",
            "Selecting previously unselected package libgvc6-plugins-gtk.\n",
            "Preparing to unpack .../5-libgvc6-plugins-gtk_2.40.1-2_amd64.deb ...\n",
            "Unpacking libgvc6-plugins-gtk (2.40.1-2) ...\n",
            "Selecting previously unselected package libgraphviz-dev.\n",
            "Preparing to unpack .../6-libgraphviz-dev_2.40.1-2_amd64.deb ...\n",
            "Unpacking libgraphviz-dev (2.40.1-2) ...\n",
            "Selecting previously unselected package libgtk2.0-bin.\n",
            "Preparing to unpack .../7-libgtk2.0-bin_2.24.32-1ubuntu1_amd64.deb ...\n",
            "Unpacking libgtk2.0-bin (2.24.32-1ubuntu1) ...\n",
            "Setting up libgtk2.0-common (2.24.32-1ubuntu1) ...\n",
            "Setting up libxdot4 (2.40.1-2) ...\n",
            "Setting up libgtk2.0-0:amd64 (2.24.32-1ubuntu1) ...\n",
            "Setting up libgail18:amd64 (2.24.32-1ubuntu1) ...\n",
            "Setting up libgail-common:amd64 (2.24.32-1ubuntu1) ...\n",
            "Setting up libgvc6-plugins-gtk (2.40.1-2) ...\n",
            "Setting up libgraphviz-dev (2.40.1-2) ...\n",
            "Setting up libgtk2.0-bin (2.24.32-1ubuntu1) ...\n",
            "Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n",
            "Processing triggers for libc-bin (2.27-3ubuntu1.2) ...\n",
            "/sbin/ldconfig.real: /usr/local/lib/python3.7/dist-packages/ideep4py/lib/libmkldnn.so.0 is not a symbolic link\n",
            "\n",
            "Collecting pygraphviz\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/3a/d6/2c56f09ee83dbebb62c40487e4c972135661b9984fec9b30b77fb497090c/pygraphviz-1.7.zip (118kB)\n",
            "\u001b[K     |████████████████████████████████| 122kB 7.9MB/s \n",
            "\u001b[?25hBuilding wheels for collected packages: pygraphviz\n",
            "  Building wheel for pygraphviz (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Created wheel for pygraphviz: filename=pygraphviz-1.7-cp37-cp37m-linux_x86_64.whl size=166142 sha256=6bbbb96a20c7c22804e6b3f842eb5a71b5a652364c064af09c58727fae084d8b\n",
            "  Stored in directory: /root/.cache/pip/wheels/32/59/00/14934a4292c4359eeabcdbf90f33d309b55d0f1be8a1262523\n",
            "Successfully built pygraphviz\n",
            "Installing collected packages: pygraphviz\n",
            "Successfully installed pygraphviz-1.7\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kVEGEdS0ytAk"
      },
      "source": [
        "import pandas as pd\n",
        "import networkx as nx\n",
        "import pygraphviz\n",
        "import matplotlib.pyplot as plt"
      ],
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xtsOL96B11iw"
      },
      "source": [
        "## やや大きめの実データを用いたグラフ化例\n",
        "- facebook_combined.txt には「どのノード間にエッジがあるか」というリンク情報が保存されている。例えば「0 1」という行なら「ノード0とノード1の間にエッジがある」ことを意味している。\n",
        "- このままではグラフではないため、データを一度DataFrameとして読み込み、それを from_edges_to_networks() によりグラフに変換する。"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "H6u1cNaV1LLC"
      },
      "source": [
        "### データ準備（facebook_combined.txt）"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "QX2Gu9aOxjh4",
        "outputId": "acb7772f-461e-4dd3-aa73-fbeea38a5e80"
      },
      "source": [
        "!curl -O http://snap.stanford.edu/data/facebook_combined.txt.gz\n",
        "!gzip -d facebook_combined.txt.gz"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
            "                                 Dload  Upload   Total   Spent    Left  Speed\n",
            "100  213k  100  213k    0     0   808k      0 --:--:-- --:--:-- --:--:--  808k\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ZJ8TW3jkxs_g",
        "outputId": "31c6c2cc-06ee-49e2-e19e-a2b5e78506d3"
      },
      "source": [
        "!head facebook_combined.txt"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0 1\n",
            "0 2\n",
            "0 3\n",
            "0 4\n",
            "0 5\n",
            "0 6\n",
            "0 7\n",
            "0 8\n",
            "0 9\n",
            "0 10\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "id": "U0bnzFpGyJIe",
        "outputId": "8097d07c-5009-4012-9c76-36bbe209efcf"
      },
      "source": [
        "filename = \"facebook_combined.txt\"\n",
        "df = pd.read_csv(filename, sep=' ')\n",
        "df[:5]"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>0</th>\n",
              "      <th>1</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0</td>\n",
              "      <td>4</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0</td>\n",
              "      <td>5</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>0</td>\n",
              "      <td>6</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   0  1\n",
              "0  0  2\n",
              "1  0  3\n",
              "2  0  4\n",
              "3  0  5\n",
              "4  0  6"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "8rmYhUnixuSU",
        "outputId": "1b470d01-ff2e-4bdd-e4dc-c7dc1c98953f"
      },
      "source": [
        "# エッジ数の確認（上位10件）\n",
        "\n",
        "counts = df['0'].value_counts()\n",
        "counts[:10]"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "107     1043\n",
              "1684     778\n",
              "1912     748\n",
              "3437     542\n",
              "0        346\n",
              "348      225\n",
              "1941     215\n",
              "1985     207\n",
              "483      191\n",
              "1917     189\n",
              "Name: 0, dtype: int64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ycNeAbaI1h1x"
      },
      "source": [
        "### エッジ集合のDataFrameからグラフに変換"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4TFyA2N0yWM-",
        "outputId": "94b2bab0-73dd-4f23-ef21-10e610733fa0"
      },
      "source": [
        "# グラフ変換\n",
        "\n",
        "def from_edges_to_networks(filename):\n",
        "    \"\"\"グラフ読み込み\n",
        "    Graphvizのラッパーであるpygraphvizにデータを渡すため、\n",
        "    netoworkx.Graph()へノードとエッジ集合を読み込む。\n",
        "    \"\"\"\n",
        "    G = nx.Graph()\n",
        "    with open(filename) as fh:\n",
        "        for line in fh:\n",
        "            edges = list(map(int, line.split(\" \")))\n",
        "            G.add_edge(edges[0], edges[1])\n",
        "    return G\n",
        "\n",
        "\n",
        "G = nx.read_edgelist(filename, nodetype=int)\n",
        "\n",
        "# ノード数、エッジ数の確認\n",
        "print(nx.number_of_nodes(G), nx.number_of_edges(G))"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "4039 88234\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KQuZP7iT2sc3"
      },
      "source": [
        "### グラフ描画\n",
        "直接描画することが困難なサイズなので、一度ファイルに保存し、それを縮小したものを描画している。"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 319
        },
        "id": "2Y-whLRazeqi",
        "outputId": "23751939-1363-4b6b-d99c-718b6ba8ca60"
      },
      "source": [
        "# そのまま描画すると潰れてしまう、、\n",
        "nx.draw(G)"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 273
        },
        "id": "h7VjOBpzi3rp",
        "outputId": "3d4472c4-0999-4c85-cff9-03ca541fb504"
      },
      "source": [
        "# save graph\n",
        "\n",
        "pos = nx.nx_agraph.pygraphviz_layout(G, prog='sfdp', args='-Goverlap=false -Tpng -o facebook.png')\n",
        "\n",
        "\n",
        "from PIL import Image\n",
        "from IPython.display import display\n",
        "\n",
        "img = Image.open(\"facebook.png\")\n",
        "img_resize = img.resize((256,256)) # 画像リサイズ\n",
        "img_resize.save(\"facebook_s.png\")\n",
        "\n",
        "with Image.open(\"facebook_s.png\") as im:\n",
        "  display(im)"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<PIL.PngImagePlugin.PngImageFile image mode=RGB size=256x256 at 0x7F1E9F9F2990>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YLn_ymS93HfQ"
      },
      "source": [
        "### ネットワーク分析例\n",
        "- エッジ数をカウントし、エッジ数あたりの出現回数を描画。\n",
        "- 上記をlog-scaleで描画。"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        },
        "id": "MLJcSVnENSqb",
        "outputId": "e4787121-d6e2-42a3-cfe3-aa9c73760d4a"
      },
      "source": [
        "# degree distribution\n",
        "# normal scale\n",
        "\n",
        "import collections\n",
        "\n",
        "# ノード毎に有するエッジ数をカウント\n",
        "count = []\n",
        "for index_of_node in G.adj:\n",
        "    count.append(len(G.adj[index_of_node]))\n",
        "\n",
        "count.sort()\n",
        "temp = collections.Counter(count)\n",
        "\n",
        "# エッジ数あたりの出現回数をカウント\n",
        "degree, freq = zip(*temp.items())\n",
        "\n",
        "plt.scatter(degree, freq, s=5)\n",
        "plt.xlim(0, max(degree))\n",
        "plt.ylim(0, max(freq))\n",
        "plt.xlabel('degree')\n",
        "plt.ylabel('freq')\n",
        "plt.title(filename + ' (degree x freq)')\n",
        "plt.show()"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 299
        },
        "id": "MzJq6v1rfrrk",
        "outputId": "5cb30205-ff56-40c3-94e2-f63dc68654aa"
      },
      "source": [
        "# log scale\n",
        "plt.scatter(degree, freq, s=5)\n",
        "plt.xscale('log')\n",
        "plt.yscale('log')\n",
        "plt.xlabel('degree (log10 scale)')\n",
        "plt.ylabel('freq (log10 scale)')\n",
        "plt.title(filename + ' (degree x freq) in log-scale')\n",
        "plt.show()"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Xlj_1Aqc58yW"
      },
      "source": [
        "### Zipfの法則っぽさを確認"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eW7jF3lt3462",
        "outputId": "a3ee727d-8423-4e43-9cb3-d343dabff7f4"
      },
      "source": [
        "zipf_values = []\n",
        "for i in range(10,50):\n",
        "  value = i * freq[i]\n",
        "  zipf_values.append(value)\n",
        "\n",
        "zipf_values"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[810,\n",
              " 902,\n",
              " 948,\n",
              " 1131,\n",
              " 1484,\n",
              " 1230,\n",
              " 1216,\n",
              " 1241,\n",
              " 1296,\n",
              " 1197,\n",
              " 1040,\n",
              " 1323,\n",
              " 1166,\n",
              " 1380,\n",
              " 1320,\n",
              " 1400,\n",
              " 1274,\n",
              " 999,\n",
              " 1064,\n",
              " 1160,\n",
              " 1140,\n",
              " 1364,\n",
              " 1120,\n",
              " 1419,\n",
              " 1224,\n",
              " 1505,\n",
              " 1548,\n",
              " 1628,\n",
              " 1102,\n",
              " 1053,\n",
              " 1160,\n",
              " 861,\n",
              " 1218,\n",
              " 903,\n",
              " 836,\n",
              " 1080,\n",
              " 1104,\n",
              " 1128,\n",
              " 1584,\n",
              " 1225]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "QwStzlAz56tp",
        "outputId": "029ad0f5-e5e7-41e6-df5b-1587c56e39f1"
      },
      "source": [
        "df = pd.DataFrame(zipf_values)\n",
        "df.plot(kind='box')"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f1ea0316f10>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 13
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "P4lGSEis6Gqo"
      },
      "source": [
        "## ページランクの例"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "45bxAo3T6Mbz"
      },
      "source": [
        "### データセットの用意"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "drFb2AssfukA",
        "outputId": "e68dc171-d4f1-4d50-9aa9-28b78d9c87f4"
      },
      "source": [
        "!curl -O https://raw.githubusercontent.com/naltoma/datamining_intro/master/4-casestudy/graph/graph1.txt\n",
        "!curl -O https://raw.githubusercontent.com/naltoma/datamining_intro/master/4-casestudy/graph/graph2.txt\n",
        "!ls"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
            "                                 Dload  Upload   Total   Spent    Left  Speed\n",
            "100    20  100    20    0     0    124      0 --:--:-- --:--:-- --:--:--   124\n",
            "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
            "                                 Dload  Upload   Total   Spent    Left  Speed\n",
            "100   122  100   122    0     0    734      0 --:--:-- --:--:-- --:--:--   734\n",
            "facebook_combined.txt  facebook_s.png  graph2.txt\n",
            "facebook.png\t       graph1.txt      sample_data\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kEzQln9HgFn2",
        "outputId": "653f3331-425d-4578-b66d-ea434fded9e3"
      },
      "source": [
        "!cat graph1.txt"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "A B\n",
            "A C\n",
            "B C\n",
            "C A\n",
            "D C\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JAuA96886TZo"
      },
      "source": [
        "### ランダムサーファーモデルによるシミュレーション"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3nVVhVzHNpnT",
        "outputId": "a9f2bf29-7cb3-49c6-bf8a-7579c4e9d082"
      },
      "source": [
        "import random\n",
        "\n",
        "def random_surfer(G, max_itr=1000, d=0.15):\n",
        "    \"\"\"ランダムサーファーモデルのシミュレーション。\n",
        "    ランダムなノードから出発し、そのページのout-edgesをランダムに選択して移動する。\n",
        "    ただし、確率dでページ遷移を辞め、無作為にノードを選んで再出発する。\n",
        "\n",
        "    :param G: networkx.classes.digraph.DiGraph。有向グラフ。\n",
        "    :param max_itr: ページ遷移回数。\n",
        "    :param d: エッジ選択から離脱する確率。\n",
        "    :return: 各ノードの訪問割合。\n",
        "    \"\"\"\n",
        "    num = len(nx.nodes(G))\n",
        "    nodes = list(nx.nodes(G))\n",
        "    reached = {}\n",
        "    count = 0\n",
        "    current = random.choice(nodes)\n",
        "    while True:\n",
        "        if current in reached:\n",
        "            reached[current] += 1\n",
        "        else:\n",
        "            reached.update({current:1})\n",
        "        count += 1\n",
        "        if count == max_itr:\n",
        "            break\n",
        "        if d < random.random():\n",
        "            targets = [target for cur, target in nx.edges(G, current)]\n",
        "            if len(targets) == 0:\n",
        "                break\n",
        "            current = random.choice(targets)\n",
        "        else:\n",
        "            current = random.choice(nodes)\n",
        "            continue\n",
        "        print(count,reached)\n",
        "\n",
        "    for node in reached.keys():\n",
        "        reached[node] /= count\n",
        "    return reached\n",
        "\n",
        "\n",
        "filename = \"graph1.txt\"\n",
        "G = nx.read_edgelist(filename, create_using=nx.DiGraph())\n",
        "reached = random_surfer(G, 20)\n",
        "print(reached)"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2 {'A': 1, 'D': 1}\n",
            "3 {'A': 1, 'D': 1, 'C': 1}\n",
            "4 {'A': 2, 'D': 1, 'C': 1}\n",
            "5 {'A': 2, 'D': 1, 'C': 1, 'B': 1}\n",
            "6 {'A': 2, 'D': 1, 'C': 2, 'B': 1}\n",
            "7 {'A': 3, 'D': 1, 'C': 2, 'B': 1}\n",
            "8 {'A': 3, 'D': 1, 'C': 2, 'B': 2}\n",
            "9 {'A': 3, 'D': 1, 'C': 3, 'B': 2}\n",
            "10 {'A': 4, 'D': 1, 'C': 3, 'B': 2}\n",
            "11 {'A': 4, 'D': 1, 'C': 4, 'B': 2}\n",
            "12 {'A': 5, 'D': 1, 'C': 4, 'B': 2}\n",
            "13 {'A': 5, 'D': 1, 'C': 5, 'B': 2}\n",
            "15 {'A': 7, 'D': 1, 'C': 5, 'B': 2}\n",
            "16 {'A': 7, 'D': 1, 'C': 6, 'B': 2}\n",
            "17 {'A': 8, 'D': 1, 'C': 6, 'B': 2}\n",
            "18 {'A': 8, 'D': 1, 'C': 7, 'B': 2}\n",
            "19 {'A': 9, 'D': 1, 'C': 7, 'B': 2}\n",
            "{'A': 0.45, 'D': 0.05, 'C': 0.35, 'B': 0.15}\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2GSOtYdR6WzS"
      },
      "source": [
        "### networkx.pagerankによるランク評価"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Q14xTWM6gO_D",
        "outputId": "3e91e9c4-e619-4685-a1fd-b2bf8bdcc283"
      },
      "source": [
        "filename = \"graph1.txt\"\n",
        "G = nx.read_edgelist(filename, create_using=nx.DiGraph())\n",
        "\n",
        "# ランク算出\n",
        "pr = nx.pagerank(G)\n",
        "print(pr)"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "{'A': 0.372526246091333, 'B': 0.19582365458881654, 'C': 0.39415009931985023, 'D': 0.037500000000000006}\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dMtQia1D6f1c"
      },
      "source": [
        "### グラフ描画"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 342
        },
        "id": "SlETdeDqwjx0",
        "outputId": "78b2cec9-35d4-4f00-b998-0592d85cc6e1"
      },
      "source": [
        "# グラフ描画\n",
        "pos = nx.spring_layout(G)\n",
        "labels = {}\n",
        "for node in pr.keys():\n",
        "    labels[node] = 'Node {}\\n{}'.format(node, round(pr[node], 3))\n",
        "\n",
        "G = nx.relabel_nodes(G, labels)\n",
        "\n",
        "import graphviz\n",
        "graphviz.Source(nx.nx_agraph.to_agraph(G))"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<graphviz.files.Source at 0x7f1e95a3c990>"
            ],
            "image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Pages: 1 -->\n<svg width=\"258pt\" height=\"241pt\"\n viewBox=\"0.00 0.00 257.68 241.22\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 237.2203)\">\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-237.2203 253.6812,-237.2203 253.6812,4 -4,4\"/>\n<!-- Node A\n0.373 -->\n<g id=\"node1\" class=\"node\">\n<title>Node A\n0.373</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"124.8406\" cy=\"-206.3503\" rx=\"43.6818\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"124.8406\" y=\"-210.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node A</text>\n<text text-anchor=\"middle\" x=\"124.8406\" y=\"-195.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.373</text>\n</g>\n<!-- Node B\n0.196 -->\n<g id=\"node2\" class=\"node\">\n<title>Node B\n0.196</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"43.8406\" cy=\"-116.6102\" rx=\"43.6818\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"43.8406\" y=\"-120.4102\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node B</text>\n<text text-anchor=\"middle\" x=\"43.8406\" y=\"-105.4102\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.196</text>\n</g>\n<!-- Node A\n0.373&#45;&gt;Node B\n0.196 -->\n<g id=\"edge1\" class=\"edge\">\n<title>Node A\n0.373&#45;&gt;Node B\n0.196</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M103.5588,-182.7721C93.9616,-172.1393 82.49,-159.43 72.178,-148.0053\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"74.56,-145.4206 65.2615,-140.3424 69.3637,-150.1109 74.56,-145.4206\"/>\n</g>\n<!-- Node C\n0.394 -->\n<g id=\"node3\" class=\"node\">\n<title>Node C\n0.394</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"124.8406\" cy=\"-26.8701\" rx=\"43.6818\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"124.8406\" y=\"-30.6701\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node C</text>\n<text text-anchor=\"middle\" x=\"124.8406\" y=\"-15.6701\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.394</text>\n</g>\n<!-- Node A\n0.373&#45;&gt;Node C\n0.394 -->\n<g id=\"edge2\" class=\"edge\">\n<title>Node A\n0.373&#45;&gt;Node C\n0.394</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M119.8581,-179.4803C117.7201,-148.7281 117.5217,-98.1814 119.2631,-63.7565\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"122.7654,-63.8205 119.8658,-53.6302 115.7778,-63.4046 122.7654,-63.8205\"/>\n</g>\n<!-- Node B\n0.196&#45;&gt;Node C\n0.394 -->\n<g id=\"edge3\" class=\"edge\">\n<title>Node B\n0.196&#45;&gt;Node C\n0.394</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M65.1224,-93.032C74.7196,-82.3992 86.1912,-69.6899 96.5032,-58.2652\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"99.3175,-60.3708 103.4197,-50.6023 94.1212,-55.6805 99.3175,-60.3708\"/>\n</g>\n<!-- Node C\n0.394&#45;&gt;Node A\n0.373 -->\n<g id=\"edge4\" class=\"edge\">\n<title>Node C\n0.394&#45;&gt;Node A\n0.373</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M129.8154,-53.6302C131.9581,-84.3352 132.1611,-134.8775 130.4244,-169.3408\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"126.9213,-169.2906 129.8231,-179.4803 133.909,-169.705 126.9213,-169.2906\"/>\n</g>\n<!-- Node D\n0.038 -->\n<g id=\"node4\" class=\"node\">\n<title>Node D\n0.038</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"205.8406\" cy=\"-116.6102\" rx=\"43.6818\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"205.8406\" y=\"-120.4102\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node D</text>\n<text text-anchor=\"middle\" x=\"205.8406\" y=\"-105.4102\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.038</text>\n</g>\n<!-- Node D\n0.038&#45;&gt;Node C\n0.394 -->\n<g id=\"edge5\" class=\"edge\">\n<title>Node D\n0.038&#45;&gt;Node C\n0.394</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M184.5588,-93.032C174.9616,-82.3992 163.49,-69.6899 153.178,-58.2652\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"155.56,-55.6805 146.2615,-50.6023 150.3637,-60.3708 155.56,-55.6805\"/>\n</g>\n</g>\n</svg>\n"
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9hySNYco6ibV"
      },
      "source": [
        "## 少し複雑なグラフでページランク確認"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "q0xDf-pnkgO-",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "2a919ca4-2962-4251-b95e-fb4eb143fbfc"
      },
      "source": [
        "filename = \"graph2.txt\"\n",
        "G = nx.read_edgelist(filename, create_using=nx.DiGraph())\n",
        "\n",
        "# ランク算出\n",
        "pr = nx.pagerank(G)\n",
        "print(pr)\n",
        "\n",
        "# グラフ描画\n",
        "pos = nx.spring_layout(G)\n",
        "labels = {}\n",
        "for node in pr.keys():\n",
        "    labels[node] = 'Node {}\\n{}'.format(node, round(pr[node], 3))\n",
        "\n",
        "G = nx.relabel_nodes(G, labels)\n",
        "\n",
        "#nx.nx_agraph.view_pygraphviz(G, prog='sfdp')\n",
        "\n",
        "import graphviz\n",
        "graphviz.Source(nx.nx_agraph.to_agraph(G))\n",
        "#nx.draw_networkx(G)"
      ],
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "{'1': 0.12174896105921995, '2': 0.04386978407256124, '3': 0.04386978407256124, '4': 0.04386978407256124, '5': 0.06530818443477784, '6': 0.10217580762337017, '7': 0.07144359556771177, '8': 0.05279920075611914, '15': 0.14450495559625123, '9': 0.03181526582418545, '10': 0.05885906219895707, '11': 0.02188284889175391, '12': 0.02188284889175391, '13': 0.02188284889175391, '14': 0.02188284889175391, '16': 0.13220421915470792}\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<graphviz.files.Source at 0x7f1ea06c5790>"
            ],
            "image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Pages: 1 -->\n<svg width=\"508pt\" height=\"869pt\"\n viewBox=\"0.00 0.00 508.38 869.40\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 865.4012)\">\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-865.4012 504.3762,-865.4012 504.3762,4 -4,4\"/>\n<!-- Node 1\n0.122 -->\n<g id=\"node1\" class=\"node\">\n<title>Node 1\n0.122</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"395.3762\" cy=\"-834.5311\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"395.3762\" y=\"-838.3311\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 1</text>\n<text text-anchor=\"middle\" x=\"395.3762\" y=\"-823.3311\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.122</text>\n</g>\n<!-- Node 2\n0.044 -->\n<g id=\"node2\" class=\"node\">\n<title>Node 2\n0.044</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"259.3762\" cy=\"-744.791\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"259.3762\" y=\"-748.591\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 2</text>\n<text text-anchor=\"middle\" x=\"259.3762\" y=\"-733.591\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.044</text>\n</g>\n<!-- Node 1\n0.122&#45;&gt;Node 2\n0.044 -->\n<g id=\"edge1\" class=\"edge\">\n<title>Node 1\n0.122&#45;&gt;Node 2\n0.044</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M366.2007,-815.2796C346.0811,-802.0036 319.142,-784.2277 297.3505,-769.8485\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"299.2469,-766.9066 288.9726,-764.3203 295.3916,-772.7492 299.2469,-766.9066\"/>\n</g>\n<!-- Node 3\n0.044 -->\n<g id=\"node3\" class=\"node\">\n<title>Node 3\n0.044</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"360.3762\" cy=\"-744.791\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"360.3762\" y=\"-748.591\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 3</text>\n<text text-anchor=\"middle\" x=\"360.3762\" y=\"-733.591\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.044</text>\n</g>\n<!-- Node 1\n0.122&#45;&gt;Node 3\n0.044 -->\n<g id=\"edge2\" class=\"edge\">\n<title>Node 1\n0.122&#45;&gt;Node 3\n0.044</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M385.0643,-808.0915C381.6821,-799.4194 377.8662,-789.6356 374.2639,-780.3992\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"377.5087,-779.0864 370.6143,-771.0416 370.9872,-781.6299 377.5087,-779.0864\"/>\n</g>\n<!-- Node 4\n0.044 -->\n<g id=\"node4\" class=\"node\">\n<title>Node 4\n0.044</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"430.3762\" cy=\"-655.0509\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"430.3762\" y=\"-658.8509\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 4</text>\n<text text-anchor=\"middle\" x=\"430.3762\" y=\"-643.8509\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.044</text>\n</g>\n<!-- Node 1\n0.122&#45;&gt;Node 4\n0.044 -->\n<g id=\"edge3\" class=\"edge\">\n<title>Node 1\n0.122&#45;&gt;Node 4\n0.044</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M402.668,-808.0368C405.6005,-796.8613 408.8727,-783.6796 411.3762,-771.661 416.8895,-745.192 421.7625,-715.0654 425.1929,-692.065\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"428.6753,-692.4397 426.6646,-682.0374 421.7495,-691.4232 428.6753,-692.4397\"/>\n</g>\n<!-- Node 5\n0.065 -->\n<g id=\"node5\" class=\"node\">\n<title>Node 5\n0.065</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"290.3762\" cy=\"-655.0509\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"290.3762\" y=\"-658.8509\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 5</text>\n<text text-anchor=\"middle\" x=\"290.3762\" y=\"-643.8509\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.065</text>\n</g>\n<!-- Node 2\n0.044&#45;&gt;Node 5\n0.065 -->\n<g id=\"edge4\" class=\"edge\">\n<title>Node 2\n0.044&#45;&gt;Node 5\n0.065</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M268.5095,-718.3514C271.4737,-709.7705 274.8138,-700.1013 277.9748,-690.9509\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"281.3511,-691.8963 281.3081,-681.3015 274.7347,-689.6106 281.3511,-691.8963\"/>\n</g>\n<!-- Node 3\n0.044&#45;&gt;Node 5\n0.065 -->\n<g id=\"edge5\" class=\"edge\">\n<title>Node 3\n0.044&#45;&gt;Node 5\n0.065</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M341.6174,-720.7423C333.6141,-710.4819 324.1549,-698.3552 315.5561,-687.3316\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"318.0969,-684.8982 309.1867,-679.166 312.5774,-689.2036 318.0969,-684.8982\"/>\n</g>\n<!-- Node 6\n0.102 -->\n<g id=\"node6\" class=\"node\">\n<title>Node 6\n0.102</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"360.3762\" cy=\"-565.3107\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"360.3762\" y=\"-569.1107\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 6</text>\n<text text-anchor=\"middle\" x=\"360.3762\" y=\"-554.1107\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.102</text>\n</g>\n<!-- Node 3\n0.044&#45;&gt;Node 6\n0.102 -->\n<g id=\"edge6\" class=\"edge\">\n<title>Node 3\n0.044&#45;&gt;Node 6\n0.102</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M360.3762,-717.5318C360.3762,-686.7824 360.3762,-636.6035 360.3762,-602.3265\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"363.8763,-602.2384 360.3762,-592.2384 356.8763,-602.2384 363.8763,-602.2384\"/>\n</g>\n<!-- Node 4\n0.044&#45;&gt;Node 6\n0.102 -->\n<g id=\"edge7\" class=\"edge\">\n<title>Node 4\n0.044&#45;&gt;Node 6\n0.102</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M411.6174,-631.0022C403.6141,-620.7418 394.1549,-608.6151 385.5561,-597.5915\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"388.0969,-595.1581 379.1867,-589.4258 382.5774,-599.4634 388.0969,-595.1581\"/>\n</g>\n<!-- Node 7\n0.071 -->\n<g id=\"node7\" class=\"node\">\n<title>Node 7\n0.071</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"430.3762\" cy=\"-475.5706\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"430.3762\" y=\"-479.3706\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 7</text>\n<text text-anchor=\"middle\" x=\"430.3762\" y=\"-464.3706\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.071</text>\n</g>\n<!-- Node 4\n0.044&#45;&gt;Node 7\n0.071 -->\n<g id=\"edge8\" class=\"edge\">\n<title>Node 4\n0.044&#45;&gt;Node 7\n0.071</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M430.3762,-627.7917C430.3762,-597.0423 430.3762,-546.8634 430.3762,-512.5863\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"433.8763,-512.4982 430.3762,-502.4983 426.8763,-512.4983 433.8763,-512.4982\"/>\n</g>\n<!-- Node 5\n0.065&#45;&gt;Node 6\n0.102 -->\n<g id=\"edge9\" class=\"edge\">\n<title>Node 5\n0.065&#45;&gt;Node 6\n0.102</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M309.1349,-631.0022C317.1382,-620.7418 326.5974,-608.6151 335.1962,-597.5915\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"338.1749,-599.4634 341.5657,-589.4258 332.6554,-595.1581 338.1749,-599.4634\"/>\n</g>\n<!-- Node 6\n0.102&#45;&gt;Node 7\n0.071 -->\n<g id=\"edge10\" class=\"edge\">\n<title>Node 6\n0.102&#45;&gt;Node 7\n0.071</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M379.1349,-541.262C387.1382,-531.0017 396.5974,-518.875 405.1962,-507.8514\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"408.1749,-509.7233 411.5657,-499.6857 402.6554,-505.418 408.1749,-509.7233\"/>\n</g>\n<!-- Node 8\n0.053 -->\n<g id=\"node8\" class=\"node\">\n<title>Node 8\n0.053</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"329.3762\" cy=\"-475.5706\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"329.3762\" y=\"-479.3706\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 8</text>\n<text text-anchor=\"middle\" x=\"329.3762\" y=\"-464.3706\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.053</text>\n</g>\n<!-- Node 6\n0.102&#45;&gt;Node 8\n0.053 -->\n<g id=\"edge11\" class=\"edge\">\n<title>Node 6\n0.102&#45;&gt;Node 8\n0.053</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M351.2428,-538.8711C348.2786,-530.2903 344.9385,-520.6211 341.7775,-511.4707\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"345.0176,-510.1304 338.4442,-501.8213 338.4012,-512.416 345.0176,-510.1304\"/>\n</g>\n<!-- Node 15\n0.145 -->\n<g id=\"node9\" class=\"node\">\n<title>Node 15\n0.145</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"329.3762\" cy=\"-116.6102\" rx=\"47.2526\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"329.3762\" y=\"-120.4102\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 15</text>\n<text text-anchor=\"middle\" x=\"329.3762\" y=\"-105.4102\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.145</text>\n</g>\n<!-- Node 7\n0.071&#45;&gt;Node 15\n0.145 -->\n<g id=\"edge12\" class=\"edge\">\n<title>Node 7\n0.071&#45;&gt;Node 15\n0.145</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M440.1587,-449.1579C458.6339,-394.4782 492.4443,-266.7107 441.3762,-179.4802 428.3149,-157.17 404.1127,-142.1728 381.5395,-132.4407\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"382.5851,-129.0883 372.0022,-128.5861 379.9621,-135.5783 382.5851,-129.0883\"/>\n</g>\n<!-- Node 9\n0.032 -->\n<g id=\"node10\" class=\"node\">\n<title>Node 9\n0.032</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"337.3762\" cy=\"-385.8305\" rx=\"41.9398\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"337.3762\" y=\"-389.6305\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 9</text>\n<text text-anchor=\"middle\" x=\"337.3762\" y=\"-374.6305\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.032</text>\n</g>\n<!-- Node 8\n0.053&#45;&gt;Node 9\n0.032 -->\n<g id=\"edge13\" class=\"edge\">\n<title>Node 8\n0.053&#45;&gt;Node 9\n0.032</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M331.7764,-448.6456C332.4963,-440.5707 333.2989,-431.5674 334.0665,-422.9565\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"337.5757,-423.0078 334.9776,-412.7365 330.6034,-422.3862 337.5757,-423.0078\"/>\n</g>\n<!-- Node 10\n0.059 -->\n<g id=\"node11\" class=\"node\">\n<title>Node 10\n0.059</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"271.3762\" cy=\"-296.0904\" rx=\"47.2526\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"271.3762\" y=\"-299.8904\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 10</text>\n<text text-anchor=\"middle\" x=\"271.3762\" y=\"-284.8904\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.059</text>\n</g>\n<!-- Node 8\n0.053&#45;&gt;Node 10\n0.059 -->\n<g id=\"edge14\" class=\"edge\">\n<title>Node 8\n0.053&#45;&gt;Node 10\n0.059</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M309.3155,-452.0024C300.8556,-440.7966 291.7417,-426.7884 286.3762,-412.7006 276.737,-387.392 273.0602,-356.9941 271.7546,-333.5806\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"275.2413,-333.1958 271.3087,-323.3578 268.2479,-333.5009 275.2413,-333.1958\"/>\n</g>\n<!-- Node 16\n0.132 -->\n<g id=\"node12\" class=\"node\">\n<title>Node 16\n0.132</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"385.3762\" cy=\"-26.8701\" rx=\"47.2526\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"385.3762\" y=\"-30.6701\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 16</text>\n<text text-anchor=\"middle\" x=\"385.3762\" y=\"-15.6701\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.132</text>\n</g>\n<!-- Node 15\n0.145&#45;&gt;Node 16\n0.132 -->\n<g id=\"edge15\" class=\"edge\">\n<title>Node 15\n0.145&#45;&gt;Node 16\n0.132</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M345.2737,-91.1343C351.126,-81.7559 357.8518,-70.9779 364.1023,-60.9615\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.1141,-62.7463 369.4388,-52.4096 361.1755,-59.0404 367.1141,-62.7463\"/>\n</g>\n<!-- Node 9\n0.032&#45;&gt;Node 10\n0.059 -->\n<g id=\"edge16\" class=\"edge\">\n<title>Node 9\n0.032&#45;&gt;Node 10\n0.059</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M319.3414,-361.3086C312.0533,-351.3991 303.5297,-339.8096 295.706,-329.1716\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"298.3628,-326.8767 289.6185,-320.8945 292.7237,-331.024 298.3628,-326.8767\"/>\n</g>\n<!-- Node 11\n0.022 -->\n<g id=\"node13\" class=\"node\">\n<title>Node 11\n0.022</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"385.3762\" cy=\"-206.3503\" rx=\"46.8387\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"385.3762\" y=\"-210.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 11</text>\n<text text-anchor=\"middle\" x=\"385.3762\" y=\"-195.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.022</text>\n</g>\n<!-- Node 10\n0.059&#45;&gt;Node 11\n0.022 -->\n<g id=\"edge17\" class=\"edge\">\n<title>Node 10\n0.059&#45;&gt;Node 11\n0.022</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M299.2637,-274.1375C314.4195,-262.207 333.3288,-247.3216 349.5642,-234.5412\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"352.0839,-237.0121 357.7765,-228.0766 347.7541,-231.5118 352.0839,-237.0121\"/>\n</g>\n<!-- Node 12\n0.022 -->\n<g id=\"node14\" class=\"node\">\n<title>Node 12\n0.022</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.3762\" cy=\"-206.3503\" rx=\"47.2526\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"47.3762\" y=\"-210.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 12</text>\n<text text-anchor=\"middle\" x=\"47.3762\" y=\"-195.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.022</text>\n</g>\n<!-- Node 10\n0.059&#45;&gt;Node 12\n0.022 -->\n<g id=\"edge18\" class=\"edge\">\n<title>Node 10\n0.059&#45;&gt;Node 12\n0.022</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M230.8623,-281.8716C196.8183,-269.6777 147.0295,-251.2681 104.3762,-233.2203 100.5223,-231.5897 96.5476,-229.8464 92.5742,-228.0607\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"93.9126,-224.8242 83.3627,-223.8496 91.0022,-231.1905 93.9126,-224.8242\"/>\n</g>\n<!-- Node 13\n0.022 -->\n<g id=\"node15\" class=\"node\">\n<title>Node 13\n0.022</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"160.3762\" cy=\"-206.3503\" rx=\"47.2526\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"160.3762\" y=\"-210.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 13</text>\n<text text-anchor=\"middle\" x=\"160.3762\" y=\"-195.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.022</text>\n</g>\n<!-- Node 10\n0.059&#45;&gt;Node 13\n0.022 -->\n<g id=\"edge19\" class=\"edge\">\n<title>Node 10\n0.059&#45;&gt;Node 13\n0.022</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M243.9379,-273.9074C229.3957,-262.1505 211.3653,-247.5735 195.7795,-234.9728\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"197.8604,-232.1544 187.8834,-228.5891 193.4594,-237.5979 197.8604,-232.1544\"/>\n</g>\n<!-- Node 14\n0.022 -->\n<g id=\"node16\" class=\"node\">\n<title>Node 14\n0.022</title>\n<ellipse fill=\"none\" stroke=\"#000000\" cx=\"273.3762\" cy=\"-206.3503\" rx=\"47.2526\" ry=\"26.7407\"/>\n<text text-anchor=\"middle\" x=\"273.3762\" y=\"-210.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Node 14</text>\n<text text-anchor=\"middle\" x=\"273.3762\" y=\"-195.1503\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">0.022</text>\n</g>\n<!-- Node 10\n0.059&#45;&gt;Node 14\n0.022 -->\n<g id=\"edge20\" class=\"edge\">\n<title>Node 10\n0.059&#45;&gt;Node 14\n0.022</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M271.9762,-269.1654C272.1562,-261.0905 272.3568,-252.0872 272.5487,-243.4763\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"276.0527,-243.3318 272.7765,-233.2563 269.0545,-243.1758 276.0527,-243.3318\"/>\n</g>\n<!-- Node 16\n0.132&#45;&gt;Node 1\n0.122 -->\n<g id=\"edge25\" class=\"edge\">\n<title>Node 16\n0.132&#45;&gt;Node 1\n0.122</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M412.0485,-49.4156C446.0207,-80.8098 500.3762,-141.2174 500.3762,-206.3503 500.3762,-655.0509 500.3762,-655.0509 500.3762,-655.0509 500.3762,-714.3731 457.1125,-771.4896 426.1271,-804.7893\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"423.3073,-802.6748 418.9402,-812.3277 428.3738,-807.505 423.3073,-802.6748\"/>\n</g>\n<!-- Node 11\n0.022&#45;&gt;Node 15\n0.145 -->\n<g id=\"edge21\" class=\"edge\">\n<title>Node 11\n0.022&#45;&gt;Node 15\n0.145</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M369.4786,-180.8744C363.6263,-171.4961 356.9005,-160.718 350.65,-150.7016\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"353.5768,-148.7805 345.3135,-142.1497 347.6382,-152.4864 353.5768,-148.7805\"/>\n</g>\n<!-- Node 12\n0.022&#45;&gt;Node 15\n0.145 -->\n<g id=\"edge22\" class=\"edge\">\n<title>Node 12\n0.022&#45;&gt;Node 15\n0.145</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M82.8617,-188.5011C89.9004,-185.281 97.302,-182.1147 104.3762,-179.4802 161.5641,-158.1833 229.2515,-140.2029 275.3421,-128.9972\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"276.2235,-132.3851 285.1263,-126.6414 274.5848,-125.5796 276.2235,-132.3851\"/>\n</g>\n<!-- Node 13\n0.022&#45;&gt;Node 15\n0.145 -->\n<g id=\"edge23\" class=\"edge\">\n<title>Node 13\n0.022&#45;&gt;Node 15\n0.145</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M194.9836,-187.9735C221.2122,-174.0459 257.4325,-154.8127 285.6628,-139.8222\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"287.3344,-142.8975 294.525,-135.1164 284.0514,-136.7151 287.3344,-142.8975\"/>\n</g>\n<!-- Node 14\n0.022&#45;&gt;Node 15\n0.145 -->\n<g id=\"edge24\" class=\"edge\">\n<title>Node 14\n0.022&#45;&gt;Node 15\n0.145</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M289.2737,-180.8744C295.126,-171.4961 301.8518,-160.718 308.1023,-150.7016\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"311.1141,-152.4864 313.4388,-142.1497 305.1755,-148.7805 311.1141,-152.4864\"/>\n</g>\n</g>\n</svg>\n"
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 19
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zCtCQcfc6pcn"
      },
      "source": [
        "## モジュラリティの確認"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_im1F1I86yUX"
      },
      "source": [
        "## データセットの用意"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "W0akxdc3xobG",
        "outputId": "f613db8a-46b5-4466-f034-6e8d77b3d892"
      },
      "source": [
        "!curl -O https://raw.githubusercontent.com/naltoma/datamining_intro/master/4-casestudy/graph/graph_modularity_simple.txt\n",
        "!head graph_modularity_simple.txt"
      ],
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
            "                                 Dload  Upload   Total   Spent    Left  Speed\n",
            "\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100    84  100    84    0     0    518      0 --:--:-- --:--:-- --:--:--   521\n",
            "1 2\n",
            "1 3\n",
            "1 4\n",
            "1 5\n",
            "2 3\n",
            "2 4\n",
            "2 5\n",
            "3 4\n",
            "3 5\n",
            "4 5\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nDIyw3k660Mj"
      },
      "source": [
        "### girvan_newman方式のモジュラリティ評価"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "8ITiRXmtkgfp",
        "outputId": "c3f6ad26-e3a1-412e-fbb6-e7de716dafa9"
      },
      "source": [
        "%matplotlib inline\n",
        "from networkx.algorithms.community.centrality import girvan_newman\n",
        "\n",
        "filename = \"graph_modularity_simple.txt\"\n",
        "G = nx.read_edgelist(filename)\n",
        "\n",
        "comp = girvan_newman(G)\n",
        "print(tuple(sorted(c) for c in next(comp)))\n",
        "\n",
        "#nx.nx_agraph.view_pygraphviz(G, prog='sfdp')\n",
        "nx.draw_networkx(G)"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(['1', '2', '3', '4', '5'], ['A', 'B', 'C', 'D', 'E'])\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "LMENb-EMkHCW",
        "outputId": "1972ea77-ade2-4023-ca06-fa346cc8ad66"
      },
      "source": [
        "from networkx import community\n",
        "\n",
        "clusters = []\n",
        "clusters.append([{'1', '2', '3', '4', '5'}, {'A', 'B', 'C', 'D', 'E'}])\n",
        "clusters.append([{'2', '3', '4', '5'}, {'1', 'A', 'B', 'C', 'D', 'E'}])\n",
        "clusters.append([{'3', '4', '5'}, {'2', '1', 'A', 'B', 'C', 'D', 'E'}])\n",
        "clusters.append([{'4', '5'}, {'2', '3', '1', 'A', 'B', 'C', 'D', 'E'}])\n",
        "clusters.append([{'5'}, {'2', '3', '4', '1', 'A', 'B', 'C', 'D', 'E'}])\n",
        "\n",
        "for i, cluster in enumerate(clusters):\n",
        "    modularity = community.modularity(G, cluster)\n",
        "    print('modularity(cluster{}) = {}'.format(i, modularity))"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "modularity(cluster0) = 0.45238095238095233\n",
            "modularity(cluster1) = 0.2811791383219955\n",
            "modularity(cluster2) = 0.12244897959183668\n",
            "modularity(cluster3) = 0.02267573696145122\n",
            "modularity(cluster4) = -0.018140589569161043\n"
          ],
          "name": "stdout"
        }
      ]
    }
  ]
}