From ccd7feb5033369bf6ed39b4c60303c37e9798357 Mon Sep 17 00:00:00 2001 From: aMahanna Date: Fri, 5 Nov 2021 16:22:21 -0400 Subject: [PATCH] update: notebooks (also used nbstripout) --- examples/ArangoDB_NetworkxAdapter.ipynb | 960 +++--- examples/IMDB_Networkx_Adapter.ipynb | 3528 ++++++++------------- examples/ITSM_ArangoDB_Adapter.ipynb | 70 +- examples/ITSM_EDA.ipynb | 579 ++-- examples/batch_graph_pre_processing.ipynb | 887 +++--- 5 files changed, 2513 insertions(+), 3511 deletions(-) diff --git a/examples/ArangoDB_NetworkxAdapter.ipynb b/examples/ArangoDB_NetworkxAdapter.ipynb index 2e03ce5c..cb4b0f30 100644 --- a/examples/ArangoDB_NetworkxAdapter.ipynb +++ b/examples/ArangoDB_NetworkxAdapter.ipynb @@ -1,531 +1,435 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.6" - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "q8KesL7xeG89" + }, + "source": [ + "# ArangoDB NetworkX Adapter Getting Started Guide " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "U1d45V4OeG89" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Nx9aa3LAeG89" + }, + "source": [ + "![networkX](https://github.com/arangoml/networkx-adapter/blob/master/examples/assets/logos/networkx_logo.svg?raw=1) \n", + "![arangodb](https://github.com/arangoml/networkx-adapter/blob/master/examples/assets/logos/ArangoDB_logo.png?raw=1) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bpvZS-1aeG89" + }, + "source": [ + "Version: 0.0.0.2.5.3\n", + "\n", + "In this Notebook we learn how to export Graphs from [ArangoDB](https://www.arangodb.com/), a multi-model Graph Database into [NetworkX](https://networkx.github.io/), the swiss army knife for graph analysis ion python." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KS9c-vE5eG89" + }, + "source": [ + "# Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fUnFAFAheG89" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!git clone -b oasis_connector --single-branch https://github.com/arangodb/interactive_tutorials.git\n", + "!git clone -b 0.0.0.2.5.3 --single-branch https://github.com/arangoml/networkx-adapter.git\n", + "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", + "!rsync -av interactive_tutorials/ ./ --exclude=.git\n", + "!pip3 install adbnx_adapter=0.0.0.2.5.3\n", + "!pip3 install networkx\n", + "!pip3 install matplotlib\n", + "!pip3 install pyarango\n", + "!pip3 install python-arango" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "RpqvL4COeG8-" + }, + "outputs": [], + "source": [ + "import json\n", + "import oasis\n", + "import networkx as nx\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "from adbnx_adapter.arangoDB_networkx_adapter import ArangoDB_Networkx_Adapter" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Oc__NAd1eG8-" + }, + "source": [ + "# Create a Temporary ArangoDB Instance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { "colab": { - "name": "ArangoDB_NetworkxAdapter.ipynb", - "provenance": [] - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "q8KesL7xeG89" - }, - "source": [ - "# ArangoDB NetworkX Adapter Getting Started Guide " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "U1d45V4OeG89" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Nx9aa3LAeG89" - }, - "source": [ - "![networkX](https://github.com/arangoml/networkx-adapter/blob/master/examples/assets/logos/networkx_logo.svg?raw=1) \n", - "![arangodb](https://github.com/arangoml/networkx-adapter/blob/master/examples/assets/logos/ArangoDB_logo.png?raw=1) " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "bpvZS-1aeG89" - }, - "source": [ - "In this Notebook we learn how to export Graphs from [ArangoDB](https://www.arangodb.com/), a multi-model Graph Database into [NetworkX](https://networkx.github.io/), the swiss army knife for graph analysis ion python." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KS9c-vE5eG89" - }, - "source": [ - "# Setup" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "fUnFAFAheG89" - }, - "source": [ - "%%capture\n", - "!git clone https://github.com/arangoml/networkx-adapter.git\n", - "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", - "!pip3 install networkx\n", - "!pip3 install matplotlib\n", - "!pip3 install adbnx_adapter\n", - "!pip3 install pyarango\n", - "!pip3 install python-arango" - ], - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "RpqvL4COeG8-" - }, - "source": [ - "import json\n", - "import oasis\n", - "import networkx as nx\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "from pyArango.connection import *\n", - "from adbnx_adapter.arangoDB_networkx_adapter import ArangoDB_Networkx_Adapter" - ], - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Oc__NAd1eG8-" - }, - "source": [ - "# Create a Temporary ArangoDB Instance" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2ekGwnJDeG8-", - "outputId": "c0839114-a489-4fba-d438-198d930cdb90" - }, - "source": [ - "# Request temporary instance from the managed ArangoDB Cloud Oasis.\n", - "con = oasis.getTempCredentials()\n", - "\n", - "# Connect the driver to the temp database\n", - "conn = oasis.connect(con)\n", - "db = conn[con[\"dbName\"]]\n", - "\n", - "print()\n", - "print(\"https://{}:{}\".format(con[\"hostname\"], con[\"port\"]))\n", - "print(\"Username: \" + con[\"username\"])\n", - "print(\"Password: \" + con[\"password\"])\n", - "print(\"Database: \" + con[\"dbName\"])" - ], - "execution_count": 6, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Requesting new temp credentials.\n", - "Temp database ready to use.\n", - "\n", - "https://d383fa0b596a.arangodb.cloud:8529\n", - "Username: TUTeuvmxk8xo0ua5biimu39fk\n", - "Password: TUToh5apk2ldjy7b1upbsead\n", - "Database: TUTqjuhef9nl5q0xv2e75yl\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "e4QfL37neG8_" - }, - "source": [ - "Feel free to use to above URL to checkout the UI!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7y81WHO8eG8_" - }, - "source": [ - "# Data Import" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BM0iRYPDeG8_" - }, - "source": [ - "We will use an Fraud Detection example graph, explained in more detail in this [interactive notebook](https://colab.research.google.com/github/joerg84/Graph_Powered_ML_Workshop/blob/master/Fraud_Detection.ipynb)." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "1jWclaDdeG8_" - }, - "source": [ - "*Note the included arangorestore will only work on Linux system, if you want to run this notebook on a different OS please consider using the appropriate arangorestore from the [Download area](https://www.arangodb.com/download-major/).*" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "7bgGJ3QkeG8_", - "outputId": "4715de16-766a-4902-a132-d53bc59d4f63" - }, - "source": [ - "!./tools/arangorestore -c none --server.endpoint http+ssl://{con[\"hostname\"]}:{con[\"port\"]} --server.username {con[\"username\"]} --server.database {con[\"dbName\"]} --server.password {con[\"password\"]} --default-replication-factor 3 --input-directory \"data/fraud_dump\"" - ], - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\u001b[0m2020-11-19T12:37:54Z [190] INFO [05c30] {restore} Connected to ArangoDB 'http+ssl://d383fa0b596a.arangodb.cloud:8529'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:55Z [190] INFO [abeb4] {restore} Database name in source dump is 'fraud-detection'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:55Z [190] INFO [9b414] {restore} # Re-creating document collection 'account'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:55Z [190] INFO [9b414] {restore} # Re-creating document collection 'bank'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:55Z [190] INFO [9b414] {restore} # Re-creating document collection 'branch'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:56Z [190] INFO [9b414] {restore} # Re-creating document collection 'Class'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:56Z [190] INFO [9b414] {restore} # Re-creating document collection 'customer'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:56Z [190] INFO [9b414] {restore} # Re-creating edge collection 'accountHolder'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:57Z [190] INFO [9b414] {restore} # Re-creating edge collection 'Relationship'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:57Z [190] INFO [9b414] {restore} # Re-creating edge collection 'transaction'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [f723c] {restore} # Creating views...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6d69f] {restore} # Dispatched 8 job(s), using 2 worker(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into document collection 'bank', data size: 183 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [d88c6] {restore} # Creating indexes for collection 'account'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored document collection 'bank'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into document collection 'branch', data size: 465 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored document collection 'branch'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into document collection 'Class', data size: 196 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored document collection 'Class'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [d88c6] {restore} # Creating indexes for collection 'customer'...\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into document collection 'account', data size: 1696 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into document collection 'customer', data size: 794 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored document collection 'account'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into edge collection 'accountHolder', data size: 1076 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored document collection 'customer'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into edge collection 'Relationship', data size: 275 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored edge collection 'accountHolder'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [94913] {restore} # Loading data into edge collection 'transaction', data size: 2292 byte(s)\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored edge collection 'Relationship'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [6ae09] {restore} # Successfully restored edge collection 'transaction'\n", - "\u001b[0m\u001b[0m2020-11-19T12:37:58Z [190] INFO [a66e1] {restore} Processed 8 collection(s) in 4.271091 s, read 49781 byte(s) from datafiles, sent 8 data batch(es) of 49773 byte(s) total size\n", - "\u001b[0m" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "227hLXnPeG8_" - }, - "source": [ - "# Create Graph" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "howeguvmeG8_" - }, - "source": [ - "The graph we will be using in the following looks as follows:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "WqRlqnJCeG8_" - }, - "source": [ - "![networkX](https://github.com/arangoml/networkx-adapter/blob/master/examples/assets/fraud_graph.jpeg?raw=1) " - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "PybHP7jpeG8_", - "outputId": "0c59cdb9-e67c-4e18-9791-69fdb4edbd6a" - }, - "source": [ - "from pyArango.collection import Collection, Edges, Field\n", - "from pyArango.graph import Graph, EdgeDefinition\n", - "\n", - "\n", - "class account(Collection):\n", - " _fields = {\n", - " \"Name\": Field()\n", - " }\n", - " \n", - "class customer(Collection):\n", - " _fields = {\n", - " \"Name\": Field()\n", - " }\n", - " \n", - "class transaction(Edges): \n", - " _fields = {\n", - " }\n", - "\n", - "class accountHolder(Edges): \n", - " _fields = {\n", - " }\n", - "\n", - "class FraudDetection(Graph) :\n", - " _edgeDefinitions = [EdgeDefinition(\"accountHolder\", fromCollections=[\"customer\"], toCollections=[\"account\"]),EdgeDefinition(\"transaction\", fromCollections=[\"account\"], toCollections=[\"account\"])]\n", - " _orphanedCollections = []\n", - "\n", - "fraudGraph = db.createGraph(\"FraudDetection\")\n", - "\n", - "print(\"Collection/Graph Setup done.\")" - ], - "execution_count": 8, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Collection/Graph Setup done.\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ANrsn9GreG9A" - }, - "source": [ - "Feel free to visit the ArangoDB UI using the above link and login data and check the Graph!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QfE_tKxneG9A" - }, - "source": [ - "# Connect ArangoDB and NetworkX " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kGfhzPT9eG9A" - }, - "source": [ - "We first connect the ArangoDB_Networkx_Adapter to our temp ArangoDB cluster:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "oG496kBeeG9A" - }, - "source": [ - "ma = ArangoDB_Networkx_Adapter(conn = con)" - ], - "execution_count": 9, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uByvwf9feG9A" - }, - "source": [ - "Next, we need to define the attributes in the vertex and edge collections to be included:\n", - "\n", - "*Note, we are currently working on making this step optional in the future!*" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "UWX9-MsKeG9A" - }, - "source": [ - "fraud_detection_attributes = { 'vertexCollections': \n", - " {'account': {'Balance', 'account_type', 'customer_id', 'rank'},\\\n", - " 'bank': {'Country', 'Id', 'bank_id', 'bank_name'},\\\n", - " 'branch':{'City', 'Country', 'Id', 'bank_id', 'branch_id', 'branch_name'},\\\n", - " 'Class':{'concrete', 'label', 'name'},\\\n", - " 'customer': {'Name', 'Sex', 'Ssn', 'rank'}},\\\n", - " 'edgeCollections' : \n", - " {'accountHolder': {'_from', '_to'},\\\n", - " 'Relationship': {'_from', '_to', 'label', 'name', 'relationshipType'},\\\n", - " 'transaction': {'_from', '_to'}}}" - ], - "execution_count": 11, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "5pC59IV-eG9A" - }, - "source": [ - "Now, we can export the networkX graph:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hPp6n66reG9A" - }, - "source": [ - "g = ma.create_networkx_graph(graph_name = 'FraudDetection', graph_attributes = fraud_detection_attributes)" - ], - "execution_count": 12, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gsDza0PBeG9A" - }, - "source": [ - "From here on we can simply use all networkX functionality:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 319 - }, - "id": "cMlIdO9NeG9A", - "outputId": "e41f8e2a-b0d3-4009-f95e-083afff1b213" - }, - "source": [ - "nx.draw(g, with_labels=True)" - ], - "execution_count": 13, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "KJmyw3JAeG9A", - "outputId": "d53d232d-132b-490d-8a3b-67607489b168" - }, - "source": [ - "g.nodes()" - ], - "execution_count": 14, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "NodeView(('account/6149748', 'account/10000041', 'account/10000043', 'account/6149781', 'account/10000036', 'account/10000040', 'account/10000042', 'account/10000001', 'account/10000035', 'account/10000027', 'account/10000044', 'account/10000008', 'account/1000054', 'account/4149551', 'account/10000034', 'account/10000015', 'account/1000053', 'account/10000014', 'account/1000050', 'account/10000003', 'account/10000022', 'account/10000017', 'account/6149795', 'account/10000030', 'account/10000020', 'account/10000013', 'account/10000039', 'account/10000029', 'account/10000019', 'account/10000028', 'account/10000037', 'account/10000012', 'account/10000024', 'account/orphan_Account_1', 'account/10000006', 'account/10000033', 'account/10000031', 'account/1000052', 'account/10000026', 'account/10000011', 'account/10000018', 'account/10000010', 'account/10000016', 'account/10000002', 'account/10000004', 'account/10000009', 'account/10000025', 'account/10000038', 'account/10000032', 'account/10000023', 'account/10000005', 'account/1000051', 'account/10000021', 'account/10000007', 'bank/1548225', 'bank/1548224', 'bank/1548226', 'branch/1548208', 'branch/1548209', 'branch/1548205', 'branch/1548211', 'branch/1548206', 'branch/1548210', 'branch/1548207', 'branch/1548212', 'branch/1548204', 'branch/1548203', 'Class/customer', 'Class/account', 'Class/bank', 'Class/branch', 'customer/10810', 'customer/10000001', 'customer/10000002', 'customer/10000012', 'customer/10000008', 'customer/10000010', 'customer/10000015', 'customer/10000006', 'customer/10000013', 'customer/10000009', 'customer/10000011', 'customer/10000016', 'customer/10000007', 'customer/10000003', 'customer/10000005', 'customer/10000004', 'customer/10000014'))" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "eNxI-ctteG9A", - "outputId": "edaf5f28-22d8-4586-a43e-d955b48b8940" - }, - "source": [ - "g.edges()" - ], - "execution_count": 15, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "OutEdgeView([('account/6149748', 'customer/10810'), ('account/10000041', 'customer/10000016'), ('account/10000041', 'account/10000043'), ('account/10000043', 'customer/10000016'), ('account/10000043', 'account/10000044'), ('account/6149781', 'customer/10810'), ('account/10000036', 'customer/10000013'), ('account/10000036', 'account/10000041'), ('account/10000040', 'customer/10000015'), ('account/10000040', 'account/10000043'), ('account/10000042', 'customer/10000015'), ('account/10000042', 'account/10000043'), ('account/10000001', 'customer/10000008'), ('account/10000035', 'customer/10000012'), ('account/10000035', 'account/10000040'), ('account/10000027', 'customer/10000002'), ('account/10000027', 'account/10000015'), ('account/10000044', 'customer/10000003'), ('account/10000044', 'account/1000050'), ('account/10000008', 'customer/10000010'), ('account/10000008', 'account/10000010'), ('account/1000054', 'customer/10000016'), ('account/1000054', 'account/10000032'), ('account/4149551', 'customer/10000001'), ('account/10000034', 'customer/10000012'), ('account/10000034', 'account/10000039'), ('account/10000015', 'customer/10000007'), ('account/10000015', 'account/10000030'), ('account/1000053', 'customer/10000014'), ('account/1000053', 'account/1000054'), ('account/10000014', 'customer/10000006'), ('account/10000014', 'account/10000023'), ('account/10000014', 'account/10000001'), ('account/1000050', 'customer/10000003'), ('account/1000050', 'account/1000051'), ('account/10000003', 'customer/10000004'), ('account/10000003', 'account/10000028'), ('account/10000003', 'account/10000003'), ('account/10000022', 'customer/10000006'), ('account/10000022', 'account/10000021'), ('account/10000017', 'customer/10000002'), ('account/10000017', 'account/10000027'), ('account/10000017', 'account/10000007'), ('account/6149795', 'customer/10810'), ('account/10000030', 'customer/10000006'), ('account/10000030', 'account/10000005'), ('account/10000020', 'customer/10000010'), ('account/10000020', 'account/10000014'), ('account/10000013', 'customer/10000008'), ('account/10000013', 'account/10000015'), ('account/10000039', 'customer/10000015'), ('account/10000039', 'account/10000043'), ('account/10000029', 'customer/10000010'), ('account/10000029', 'account/10000031'), ('account/10000019', 'customer/10000009'), ('account/10000028', 'customer/10000006'), ('account/10000037', 'customer/10000014'), ('account/10000037', 'account/10000042'), ('account/10000012', 'customer/10000002'), ('account/10000012', 'account/10000026'), ('account/10000012', 'account/10000021'), ('account/10000012', 'account/10000001'), ('account/10000024', 'customer/10000006'), ('account/10000024', 'account/10000030'), ('account/10000024', 'account/10000008'), ('account/orphan_Account_1', 'customer/10810'), ('account/10000006', 'customer/10000002'), ('account/10000006', 'account/10000018'), ('account/10000006', 'account/10000008'), ('account/10000006', 'account/10000003'), ('account/10000033', 'customer/10000011'), ('account/10000033', 'account/10000038'), ('account/10000031', 'customer/10000002'), ('account/10000031', 'account/10000027'), ('account/10000031', 'account/10000018'), ('account/1000052', 'customer/10000011'), ('account/1000052', 'account/1000053'), ('account/10000026', 'customer/10000008'), ('account/10000011', 'customer/10000009'), ('account/10000011', 'account/10000007'), ('account/10000011', 'account/10000023'), ('account/10000018', 'customer/10000010'), ('account/10000018', 'account/10000025'), ('account/10000010', 'customer/10000007'), ('account/10000010', 'account/10000004'), ('account/10000016', 'customer/10000004'), ('account/10000016', 'account/10000015'), ('account/10000002', 'customer/10000005'), ('account/10000002', 'account/10000001'), ('account/10000002', 'account/10000028'), ('account/10000004', 'customer/10000006'), ('account/10000009', 'customer/10000009'), ('account/10000009', 'account/10000006'), ('account/10000025', 'customer/10000010'), ('account/10000025', 'account/10000019'), ('account/10000038', 'customer/10000014'), ('account/10000038', 'account/10000043'), ('account/10000032', 'customer/10000011'), ('account/10000032', 'account/10000037'), ('account/10000032', 'account/10000035'), ('account/10000032', 'account/10000033'), ('account/10000032', 'account/10000034'), ('account/10000032', 'account/10000036'), ('account/10000023', 'customer/10000005'), ('account/10000023', 'account/10000003'), ('account/10000023', 'account/10000016'), ('account/10000005', 'customer/10000002'), ('account/10000005', 'account/10000013'), ('account/1000051', 'customer/10000013'), ('account/1000051', 'account/1000052'), ('account/10000021', 'customer/10000005'), ('account/10000021', 'account/10000026'), ('account/10000021', 'account/10000018'), ('account/10000007', 'customer/10000009'), ('account/10000007', 'account/10000025'), ('Class/customer', 'Class/branch'), ('Class/account', 'Class/account'), ('Class/account', 'Class/customer'), ('Class/branch', 'Class/bank')])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 15 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k9xyOIQ9eG9A" - }, - "source": [ - "# Next Steps" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ntiBo6X_eG9A" - }, - "source": [ - "* Explore [Interactive NetworkX Notebook](https://colab.research.google.com/github/joerg84/Graph_Powered_ML_Workshop/blob/master/NetworkX.ipynb)\n", - "* Explore [ArangoDB](https://www.arangodb.com/)\n", - "* Explore [Interactive ArangoDB tutorials](https://github.com/joerg84/ArangoDBUniversity#arangodb-university)" - ] - } - ] + "base_uri": "https://localhost:8080/" + }, + "id": "2ekGwnJDeG8-", + "outputId": "c0839114-a489-4fba-d438-198d930cdb90" + }, + "outputs": [], + "source": [ + "# Request temporary instance from the managed ArangoDB Cloud Oasis.\n", + "con = oasis.getTempCredentials()\n", + "\n", + "# Connect the driver to the temp database\n", + "conn = oasis.connect(con)\n", + "db = conn[con[\"dbName\"]]\n", + "\n", + "print()\n", + "print(\"https://{}:{}\".format(con[\"hostname\"], con[\"port\"]))\n", + "print(\"Username: \" + con[\"username\"])\n", + "print(\"Password: \" + con[\"password\"])\n", + "print(\"Database: \" + con[\"dbName\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e4QfL37neG8_" + }, + "source": [ + "Feel free to use to above URL to checkout the UI!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7y81WHO8eG8_" + }, + "source": [ + "# Data Import" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BM0iRYPDeG8_" + }, + "source": [ + "We will use an Fraud Detection example graph, explained in more detail in this [interactive notebook](https://colab.research.google.com/github/joerg84/Graph_Powered_ML_Workshop/blob/master/Fraud_Detection.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1jWclaDdeG8_" + }, + "source": [ + "*Note the included arangorestore will only work on Linux system, if you want to run this notebook on a different OS please consider using the appropriate arangorestore from the [Download area](https://www.arangodb.com/download-major/).*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7bgGJ3QkeG8_", + "outputId": "4715de16-766a-4902-a132-d53bc59d4f63" + }, + "outputs": [], + "source": [ + "!chmod -R 755 ./tools\n", + "!./tools/arangorestore -c none --server.endpoint http+ssl://{con[\"hostname\"]}:{con[\"port\"]} --server.username {con[\"username\"]} --server.database {con[\"dbName\"]} --server.password {con[\"password\"]} --default-replication-factor 3 --input-directory \"data/fraud_dump\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "227hLXnPeG8_" + }, + "source": [ + "# Create Graph" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "howeguvmeG8_" + }, + "source": [ + "The graph we will be using in the following looks as follows:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WqRlqnJCeG8_" + }, + "source": [ + "![networkX](https://github.com/arangoml/networkx-adapter/blob/master/examples/assets/fraud_graph.jpeg?raw=1) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "PybHP7jpeG8_", + "outputId": "0c59cdb9-e67c-4e18-9791-69fdb4edbd6a" + }, + "outputs": [], + "source": [ + "from pyArango.collection import Collection, Edges, Field\n", + "from pyArango.graph import Graph, EdgeDefinition\n", + "\n", + "\n", + "class account(Collection):\n", + " _fields = {\n", + " \"Name\": Field()\n", + " }\n", + " \n", + "class customer(Collection):\n", + " _fields = {\n", + " \"Name\": Field()\n", + " }\n", + " \n", + "class transaction(Edges): \n", + " _fields = {\n", + " }\n", + "\n", + "class accountHolder(Edges): \n", + " _fields = {\n", + " }\n", + "\n", + "class FraudDetection(Graph) :\n", + " _edgeDefinitions = [EdgeDefinition(\"accountHolder\", fromCollections=[\"customer\"], toCollections=[\"account\"]),EdgeDefinition(\"transaction\", fromCollections=[\"account\"], toCollections=[\"account\"])]\n", + " _orphanedCollections = []\n", + "\n", + "fraudGraph = db.createGraph(\"FraudDetection\")\n", + "\n", + "print(\"Collection/Graph Setup done.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ANrsn9GreG9A" + }, + "source": [ + "Feel free to visit the ArangoDB UI using the above link and login data and check the Graph!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QfE_tKxneG9A" + }, + "source": [ + "# Connect ArangoDB and NetworkX " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kGfhzPT9eG9A" + }, + "source": [ + "We first connect the ArangoDB_Networkx_Adapter to our temp ArangoDB cluster:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "oG496kBeeG9A" + }, + "outputs": [], + "source": [ + "ma = ArangoDB_Networkx_Adapter(conn = con)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uByvwf9feG9A" + }, + "source": [ + "Next, we need to define the attributes in the vertex and edge collections to be included:\n", + "\n", + "*Note, we are currently working on making this step optional in the future!*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UWX9-MsKeG9A" + }, + "outputs": [], + "source": [ + "fraud_detection_attributes = { 'vertexCollections': \n", + " {'account': {'Balance', 'account_type', 'customer_id', 'rank'},\\\n", + " 'bank': {'Country', 'Id', 'bank_id', 'bank_name'},\\\n", + " 'branch':{'City', 'Country', 'Id', 'bank_id', 'branch_id', 'branch_name'},\\\n", + " 'Class':{'concrete', 'label', 'name'},\\\n", + " 'customer': {'Name', 'Sex', 'Ssn', 'rank'}},\\\n", + " 'edgeCollections' : \n", + " {'accountHolder': {'_from', '_to'},\\\n", + " 'Relationship': {'_from', '_to', 'label', 'name', 'relationshipType'},\\\n", + " 'transaction': {'_from', '_to'}}}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5pC59IV-eG9A" + }, + "source": [ + "Now, we can export the networkX graph:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hPp6n66reG9A" + }, + "outputs": [], + "source": [ + "g = ma.create_networkx_graph(graph_name = 'FraudDetection', graph_attributes = fraud_detection_attributes)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gsDza0PBeG9A" + }, + "source": [ + "From here on we can simply use all networkX functionality:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 319 + }, + "id": "cMlIdO9NeG9A", + "outputId": "e41f8e2a-b0d3-4009-f95e-083afff1b213" + }, + "outputs": [], + "source": [ + "nx.draw(g, with_labels=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KJmyw3JAeG9A", + "outputId": "d53d232d-132b-490d-8a3b-67607489b168" + }, + "outputs": [], + "source": [ + "g.nodes()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "eNxI-ctteG9A", + "outputId": "edaf5f28-22d8-4586-a43e-d955b48b8940" + }, + "outputs": [], + "source": [ + "g.edges()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k9xyOIQ9eG9A" + }, + "source": [ + "# Next Steps" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ntiBo6X_eG9A" + }, + "source": [ + "* Explore [Interactive NetworkX Notebook](https://colab.research.google.com/github/joerg84/Graph_Powered_ML_Workshop/blob/master/NetworkX.ipynb)\n", + "* Explore [ArangoDB](https://www.arangodb.com/)\n", + "* Explore [Interactive ArangoDB tutorials](https://github.com/joerg84/ArangoDBUniversity#arangodb-university)" + ] + } + ], + "metadata": { + "colab": { + "name": "ArangoDB_NetworkxAdapter.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/examples/IMDB_Networkx_Adapter.ipynb b/examples/IMDB_Networkx_Adapter.ipynb index fc646529..1d8a3eee 100644 --- a/examples/IMDB_Networkx_Adapter.ipynb +++ b/examples/IMDB_Networkx_Adapter.ipynb @@ -1,2147 +1,1385 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "VLfArBaMRTiM" + }, + "source": [ + "# Analysis of IMDB data using the ArangoDB Netoworkx adapter " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Wd0_wS6TRTiO" + }, + "source": [ + "This notebook will illustrate how the Networkx adapter can be used to perform graph analytics tasks on graph data stored in ArangoDB. For this example we will use the IMDB movie review dataset. The dataset provides reviews of various movies by viewers. The details of the dataset are available [here](https://www.imdb.com/interfaces/). If we use a relational representation to analyze this problem, then we will need to know what we want to look in the data and then seek it from the data. For example we may be interested in the average rating for a particular genre of movies. The point here is that we need to know the questions that are important in the analysis of this problem apriori. When we use a graph representation of this data, then we can leverage the body of ideas used in network analysis (or social network analysis) to extract insights from the data. The body of ideas are the standard questions we seek answers to when analyzing any network. The answers to these questions will provide us insights about the data and the problem. In other words, we have a framework for extracting insights from the data. In the example provided in this notebook, we will use ideas from the analysis of bipartite graphs to illustrate this point. Of course, if we have a specific question that we are seeking the answer for, then that is available easily from the graph as well. Therefore, going with a graph represenation makes it easier to extract insights from the data.t\n", + "\n", + "The advantages of using a graph representation for the data extend beyond mining and learning from the data. Running adhoc queries for analytic purposes on the data is more efficient with a graph representation. With a relational representation, we can only optimize query performance for queries that are known before hand (with indexes). Adhoc queries could require multiple joins and have poor performance. Most graphs, have the so called _small world effect_. In such graphs, most nodes can be reached from most other nodes with a small number of edge traversals. An adhoc query starting at any node can reach the node of interest in a few hops.\n", + "\n", + "The illustration in this notebook is organized as follows:\n", + "1. Loading the data for the example.\n", + "2. Creating the Networkx graph from the AranogoDB graph using the Networkx Adapter.\n", + "3. Analysis of the graph using Networkx.\n", + "4. Using the Networkx graph to obtain a graph embedding using _Node2vec_.\n", + "5. Using Arangopipe to store metadata about this experiment." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZbC-dNSj4c82" + }, + "source": [ + "# Loading the Data into ArangoDB" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Z0BtmHbZ4c82" + }, + "source": [ + "We will use Oasis, ArangoDB's managed service offering, for this example. We will start with installing the required libraries to run this example. We will then connect to Oasis, obtain a connection and create the database.After creating the database, we will load the data into ArangoDB. The next few cells illustrate these steps." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NwlgpvAcRTiP" + }, + "source": [ + "## Install Required Libraries " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ZMtTZ5Oth0N-" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!mkdir oasis\n", + "!mkdir IMDBdata\n", + "!git clone -b imdb_with_ratings https://github.com/arangodb/interactive_tutorials IMDBdata\n", + "!git clone -b oasis_connector --single-branch https://github.com/arangodb/interactive_tutorials.git oasis\n", + "!rsync -av oasis/ ./ --exclude=.git\n", + "!chmod -R 755 ./data\n", + "!chmod -R 755 ./tools\n", + "!chmod -R 755 ./oasis\n", + "\n", + "!pip3 install adbnx-adapter==0.0.0.2.5.3\n", + "!pip install arangopipe==0.0.6.9.3\n", + "!pip3 install networkx\n", + "!pip3 install matplotlib\n", + "!pip3 install pyarango\n", + "!pip3 install python-arango\n", + "!pip install node2vec\n", + "!pip install seaborn" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BRAQ2O7fRTiX" + }, + "source": [ + "## Get an Oasis Connection" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kTLmib2BRTiY" + }, + "source": [ + "__Oasis__, the managed database service offering from ArangoDB, will be used for this exercise. This eliminates the need for setting up and configuring an instance of a database." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { "colab": { - "name": "IMDB_Networkx_Adapter.ipynb", - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.6" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "8c4c63c2ec584e8694949cde2b878278": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_6276d89c53f1452b82fed9c2af7e0236", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_e7a24632f5fb4670b7fd8945c8e64ce7", - "IPY_MODEL_b9d9e6899f234dc381a947f25edd0b1f" - ] - } - }, - "6276d89c53f1452b82fed9c2af7e0236": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e7a24632f5fb4670b7fd8945c8e64ce7": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_7d125a00ff3046aab6c2dbd1b824ee5f", - "_dom_classes": [], - "description": "Computing transition probabilities: 100%", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 914, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 914, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a61b9cb46d724bf8bdb24de5a9592017" - } - }, - "b9d9e6899f234dc381a947f25edd0b1f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_9d1e1bb9a456457a87bb0dcb440f76dc", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 914/914 [00:33<00:00, 27.24it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_914e350efb3e4f4fbb1baf94fb4134a4" - } - }, - "7d125a00ff3046aab6c2dbd1b824ee5f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "a61b9cb46d724bf8bdb24de5a9592017": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9d1e1bb9a456457a87bb0dcb440f76dc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "914e350efb3e4f4fbb1baf94fb4134a4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - } - } - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "VLfArBaMRTiM" - }, - "source": [ - "# Analysis of IMDB data using the ArangoDB Netoworkx adapter " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Wd0_wS6TRTiO" - }, - "source": [ - "This notebook will illustrate how the Networkx adapter can be used to perform graph analytics tasks on graph data stored in ArangoDB. For this example we will use the IMDB movie review dataset. The dataset provides reviews of various movies by viewers. The details of the dataset are available [here](https://www.imdb.com/interfaces/). If we use a relational representation to analyze this problem, then we will need to know what we want to look in the data and then seek it from the data. For example we may be interested in the average rating for a particular genre of movies. The point here is that we need to know the questions that are important in the analysis of this problem apriori. When we use a graph representation of this data, then we can leverage the body of ideas used in network analysis (or social network analysis) to extract insights from the data. The body of ideas are the standard questions we seek answers to when analyzing any network. The answers to these questions will provide us insights about the data and the problem. In other words, we have a framework for extracting insights from the data. In the example provided in this notebook, we will use ideas from the analysis of bipartite graphs to illustrate this point. Of course, if we have a specific question that we are seeking the answer for, then that is available easily from the graph as well. Therefore, going with a graph represenation makes it easier to extract insights from the data.t\n", - "\n", - "The advantages of using a graph representation for the data extend beyond mining and learning from the data. Running adhoc queries for analytic purposes on the data is more efficient with a graph representation. With a relational representation, we can only optimize query performance for queries that are known before hand (with indexes). Adhoc queries could require multiple joins and have poor performance. Most graphs, have the so called _small world effect_. In such graphs, most nodes can be reached from most other nodes with a small number of edge traversals. An adhoc query starting at any node can reach the node of interest in a few hops.\n", - "\n", - "The illustration in this notebook is organized as follows:\n", - "1. Loading the data for the example.\n", - "2. Creating the Networkx graph from the AranogoDB graph using the Networkx Adapter.\n", - "3. Analysis of the graph using Networkx.\n", - "4. Using the Networkx graph to obtain a graph embedding using _Node2vec_.\n", - "5. Using Arangopipe to store metadata about this experiment." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZbC-dNSj4c82" - }, - "source": [ - "# Loading the Data into ArangoDB" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Z0BtmHbZ4c82" - }, - "source": [ - "We will use Oasis, ArangoDB's managed service offering, for this example. We will start with installing the required libraries to run this example. We will then connect to Oasis, obtain a connection and create the database.After creating the database, we will load the data into ArangoDB. The next few cells illustrate these steps." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NwlgpvAcRTiP" - }, - "source": [ - "## Install Required Libraries " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "ZMtTZ5Oth0N-" - }, - "source": [ - "%%capture\n", - "!mkdir oasis\n", - "!mkdir IMDBdata\n", - "!git clone -b imdb_with_ratings https://github.com/arangodb/interactive_tutorials IMDBdata\n", - "!git clone -b oasis_connector https://github.com/arangodb/interactive_tutorials oasis\n", - "!rsync -av oasis/ ./ --exclude=.git\n", - "!chmod -R 755 ./data\n", - "!chmod -R 755 ./tools\n", - "!chmod -R 755 ./oasis\n", - "\n", - "!pip3 install networkx\n", - "!pip3 install matplotlib\n", - "!pip3 install --index-url https://test.pypi.org/simple/ adbnx-adapter==0.0.0.2.5.3\n", - "!pip3 install pyarango\n", - "!pip3 install python-arango\n", - "!pip install node2vec\n", - "!pip install seaborn\n", - "!pip install arangopipe==0.0.6.9.3" - ], - "execution_count": 93, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BRAQ2O7fRTiX" - }, - "source": [ - "## Get a Oasis Connection" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kTLmib2BRTiY" - }, - "source": [ - "__Oasis__, the managed database service offering from ArangoDB, will be used for this exercise. This eliminates the need for setting up and configuring an instance of a database." - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "9voIoaGRS0cB", - "outputId": "441a4cd7-6eb6-4664-d97e-fc625fdb6c6f" - }, - "source": [ - "from adbnx_adapter.imdb_arangoDB_networkx_adapter import IMDBArangoDB_Networkx_Adapter\n", - "import oasis\n", - "con = oasis.getTempCredentials()\n", - "\n", - "print()\n", - "print(\"https://{}:{}\".format(con[\"hostname\"], con[\"port\"]))\n", - "print(\"Username: \" + con[\"username\"])\n", - "print(\"Password: \" + con[\"password\"])\n", - "print(\"Database: \" + con[\"dbName\"])\n", - "\n", - "\n", - "ma = IMDBArangoDB_Networkx_Adapter(conn=con)" - ], - "execution_count": 133, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Reusing cached credentials.\n", - "\n", - "https://d383fa0b596a.arangodb.cloud:8529\n", - "Username: TUTavlkt1fv7jsujf5ai5qjcl\n", - "Password: TUTn5bwjhjf4rg2rzkub9hnvu\n", - "Database: TUT276o8okjtpdqehucmszbfs\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "APNXpksoRTif" - }, - "source": [ - "## Create the Collections for the Database " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "RQAoZi3AW9ru" - }, - "source": [ - "# Connect to the temp database\n", - "conn = oasis.connect(con)\n", - "db = conn[con[\"dbName\"]]" - ], - "execution_count": 134, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "f0nSSiRnRTit" - }, - "source": [ - "## Import the Data " - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "sE_jzJHfASIR", - "outputId": "c5dd5bf3-447d-4e6a-f3d7-74ae707bd07b" - }, - "source": [ - "! ./tools/arangorestore -c none --server.endpoint http+ssl://{con[\"hostname\"]}:{con[\"port\"]} --server.username {con[\"username\"]} --server.database {con[\"dbName\"]} --server.password {con[\"password\"]} --default-replication-factor 3 --input-directory \"./IMDBdata/data/imdb_with_ratings\"" - ], - "execution_count": 135, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\u001b[0m2021-03-11T21:14:40Z [996] INFO [05c30] {restore} Connected to ArangoDB 'http+ssl://d383fa0b596a.arangodb.cloud:8529'\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:41Z [996] INFO [abeb4] {restore} Database name in source dump is 'TUTdit9ohpgz1ntnbetsjstwi'\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:41Z [996] INFO [9b414] {restore} # Re-creating document collection 'Movies'...\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:42Z [996] INFO [9b414] {restore} # Re-creating document collection 'Users'...\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:42Z [996] INFO [9b414] {restore} # Re-creating edge collection 'Ratings'...\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:43Z [996] INFO [6d69f] {restore} # Dispatched 3 job(s), using 2 worker(s)\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:43Z [996] INFO [94913] {restore} # Loading data into document collection 'Users', data size: 16717 byte(s)\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:43Z [996] INFO [94913] {restore} # Loading data into document collection 'Movies', data size: 68107 byte(s)\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:43Z [996] INFO [6ae09] {restore} # Successfully restored document collection 'Users'\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:43Z [996] INFO [94913] {restore} # Loading data into edge collection 'Ratings', data size: 1407601 byte(s)\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:43Z [996] INFO [6ae09] {restore} # Successfully restored document collection 'Movies'\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:48Z [996] INFO [75e65] {restore} # Current restore progress: restored 2 of 3 collection(s), read 9270558 byte(s) from datafiles, sent 3 data batch(es) of 881948 byte(s) total size, queued jobs: 0, workers: 2\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:52Z [996] INFO [69a73] {restore} # Still loading data into edge collection 'Ratings', 10660073 byte(s) restored\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:52Z [996] INFO [6ae09] {restore} # Successfully restored edge collection 'Ratings'\n", - "\u001b[0m\u001b[0m2021-03-11T21:14:52Z [996] INFO [a66e1] {restore} Processed 3 collection(s) in 12.377135 s, read 11542023 byte(s) from datafiles, sent 4 data batch(es) of 11542020 byte(s) total size\n", - "\u001b[0m" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "tDmWTWYkW6VW", - "outputId": "490fb28d-d136-43f2-e067-dd540744c4bc" - }, - "source": [ - "import csv\n", - "import json\n", - "import requests\n", - "import sys\n", - "import oasis\n", - "from pyArango.connection import *\n", - "from pyArango.collection import Collection, Edges, Field\n", - "from pyArango.graph import Graph, EdgeDefinition\n", - "\n", - "class Users(Collection):\n", - " _fields = {\n", - " \"user_id\": Field(),\n", - " \"age\": Field(),\n", - " \"gender\": Field()\n", - " }\n", - " \n", - "class Movies(Collection):\n", - " _fields = {\n", - " \"movie_id\": Field(),\n", - " \"movie_title\": Field(),\n", - " \"release_data\": Field()\n", - " }\n", - "\n", - "class Ratings(Edges): \n", - " _fields = {\n", - " #user_id and movie_id (_key of movie) are encoded by _from, _to \n", - " \"rating\": Field(),\n", - " \"timestamp\": Field()\n", - " }\n", - "\n", - "class IMDBGraph(Graph):\n", - " _edgeDefinitions = [EdgeDefinition(\"Ratings\", fromCollections=[\"Users\"], toCollections=[\"Movies\"])]\n", - " _orphanedCollections = []\n", - "\n", - "iMDBGraph = db.createGraph(\"IMDBGraph\", replicationFactor=3)\n", - "\n", - "print(\"Collection/Graph Setup done.\")" - ], - "execution_count": 137, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Collection/Graph Setup done.\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "5rm-ZpNQ4c87" - }, - "source": [ - "# Use the Networkx-Adapter to create a Networkx Graph" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "i0CYXcbU4c87" - }, - "source": [ - "Now that we have loaded the data into ArangoDB, we can use the __Networkx-Adapter__ to create _Networkx_ graphs from the ArangoDB graph. To do so, we'll have to provide a graph descriptor that describes the graph structure to the __Networkx-Adapter__. These steps are illustrated below. " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tua4CIHYRTi0" - }, - "source": [ - "## Specify the Graph Structure " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "9oKkkRxwRTi0" - }, - "source": [ - "To use the IMDB Networkx Adapter, we need to specify the structure of the graph that we want to create. This is done with a simple dictionary. " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "wobwe8KqXXi2" - }, - "source": [ - "imdb_attributes = {'vertexCollections': {'Users': {},\n", - " 'Movies': {}},\n", - " 'edgeCollections': {'Ratings': {'_from', '_to', 'ratings'}}}" - ], - "execution_count": 138, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ORqpcKl_4c87" - }, - "source": [ - "## Obtain the networkx graph" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "jjJZJEgvXZ0W" - }, - "source": [ - "g = ma.create_networkx_graph(\n", - " graph_name='IMDBGraph', graph_attributes=imdb_attributes)" - ], - "execution_count": 139, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Rk-La15l4c88" - }, - "source": [ - "__Done!__, we now have a _Networkx_ graph representation that we can use for analysis!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "a3dOVYck4c88" - }, - "source": [ - "# Analysis of the IMDB reviews dataset with Networkx\n", - "We just created a networkx graph for this problem. In this notebook we will use a small set of ideas from the standard body of ideas used in network analysis to extract insights from the movie review dataset. Networkx provides an implementation of these ideas. These will be discussed next.\n", - "\n", - "As mentioned earlier, one of the advantages of using a graph representation is that we can leverage the standard body of ideas used to analyze networks to extract information about this dataset. In what follows, we will call out such facts as we identify them.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Zj_ZCYrt4c88" - }, - "source": [ - "## Get the user and movie nodes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "yqmOgDuN4c88" - }, - "source": [ - "user_nodes = [n for n in g.nodes() if n.startswith(\"Users\")]\n", - "movie_nodes = [n for n in g.nodes() if n.startswith(\"Movies\")]" - ], - "execution_count": 140, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZMA_ffth4c89" - }, - "source": [ - "## Structural Property Introspection: Number of Nodes and Edges" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "1wjglzLW4c89", - "outputId": "8c39721f-3bfe-422a-a0ac-8275d037c456" - }, - "source": [ - "print(\"Number of Users are %d\" % (len(user_nodes)))\n", - "print(\"Number of Movies are %d\" % (len(movie_nodes)))\n", - "print(\"Number of Ratings are %d\" % (len(list(g.edges()))))" - ], - "execution_count": 141, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Number of Users are 943\n", - "Number of Movies are 1682\n", - "Number of Ratings are 65499\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7YAkup5g4c89" - }, - "source": [ - "## Convert the graph obtained from the interface to a bi-partite graph " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Le8HMfU-4c89" - }, - "source": [ - "import networkx as nx\n", - "B = nx.Graph()\n", - "B.add_nodes_from(user_nodes, bipartite=0)\n", - "B.add_nodes_from(movie_nodes, bipartite=1)\n", - "B.add_edges_from(list(g.edges()))" - ], - "execution_count": 142, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZaBJqyZy4c89" - }, - "source": [ - "### Identified fact:\n", - "_The graph has two kinds of edges. It has 943 users and and 1682 Movies. A user may watch multiple movies. 65499 movie ratings are available. This information is obtained by simply identifying the structure of the graph._" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Ybp1eslr4c89", - "outputId": "9e307259-52a8-4172-8725-6d7cde71ea80" - }, - "source": [ - "from networkx.algorithms import bipartite\n", - "bipartite.is_bipartite(B)" - ], - "execution_count": 143, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "True" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 143 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "RcV_-8Dj4c89" - }, - "source": [ - "## Is the graph connected?\n", - "If the graph is connected then there is a path between any two nodes in the graph. If not, then some nodes are not connected. In the context of this application, a disconnected graph implies that there exist users in the graph who may not have rated a movie in common. If it is true that any given pair of users have rated at least one movie in common, then there is a path connecting these users through the movie they have rated in common." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KIYLmAtj4c8-" - }, - "source": [ - "## Identified fact:\n", - "_In the user community, if we pick any two users, then it is possible that they may not have rated a movie in common._" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Dr749ocn4c8-", - "outputId": "e4e91970-7275-4e6c-d1b6-589b7cb79039" - }, - "source": [ - "nx.is_connected(B)" - ], - "execution_count": 144, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "False" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 144 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "1nNjYdTp4c8-" - }, - "source": [ - "users = [n for n in B.nodes if B.nodes[n]['bipartite'] == 0]\n", - "movies = [n for n in B.nodes if B.nodes[n]['bipartite'] == 1]" - ], - "execution_count": 145, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pWP1Tm0Z4c8-" - }, - "source": [ - "## How many movies does a User rate?\n", - "This is a distribution. A review of the plot below will show the familiar long tailed distribution. Most viewers rate less than say 100 movies. There are some serious reviewers out there though. These are on the tail of the distribution." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "nW4ztdKR4c8-" - }, - "source": [ - "degu, degm = bipartite.degrees(B, movies)" - ], - "execution_count": 146, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "xEkEriFa4c8-" - }, - "source": [ - "du = [v for k,v in degu]" - ], - "execution_count": 147, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 355 - }, - "id": "iMlIdvIp4c8-", - "outputId": "40bdc0d7-afe6-4d22-b26c-a9d7b305c696" - }, - "source": [ - "import matplotlib.pyplot as plt\n", - "plt.rcParams['figure.figsize'] = [10, 5]\n", - "ax = plt.hist(du)\n", - "plt.title(\"Histogram of the Number of Movies Viewed\")\n", - "plt.xlabel(\"Movies Viewed\")\n", - "plt.grid(True)" - ], - "execution_count": 148, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAFSCAYAAAAq4HEaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfVRVdb7H8Q8HQkRSBJ94cHKNJhcjE8WHHHsQNXACIVtpMZZlNVOpeceyHFMpHWpQU2vU8TZWY403V40GAhpo3mvmLReWVuak5SLDYEDPkRsoD3nOvn+4PDcSDiD+BOH9Wqu13Pu7z/79zpfN4dPem42XZVmWAAAAcMnZWnoCAAAAbRVBCwAAwBCCFgAAgCEELQAAAEMIWgAAAIYQtAAAAAwhaAE/cfvtt2vv3r0tPY0WtX37dt1yyy2Kjo7WoUOHGtx+7969uvnmmy/DzC6948ePKyIiQmfPnm2R8T/55BPddtttio6O1o4dOy77+Pv27VNcXFybH/PnIiIidOzYsRadA9oPghbajdjYWP3P//xPrXWbN2/WPffc417OycnR8OHDPe6npX84m5aenq4FCxZo//79GjBgwAV1kz+kNm/erIiICP31r3+ttf7mm29ukwH45Zdf1m9+8xvt379fY8eOvaAeGxurqKgoORyOWuuTk5MVERGh48ePN2v8mJgY5ebmNmsfP1VSUqIBAwbou+++u6A2ffp0paenX/IxgdaOoAW0Mi0d4IqKinTttde22PiBgYFat26dKioqWmwOF+Nivm6N6XVYWJhycnLcy4cPH1ZlZWWTx7ocevbsqRtvvFGZmZm11peVlWnXrl1KTk5uoZkBLYegBfzET896ff7555o4caIGDx6skSNH6oUXXpAkTZkyRZI0dOhQRUdHa//+/XK5XFqzZo1Gjx6tG2+8UU899ZTKy8vd+83IyNDo0aM1fPhwrV69utY4f/7zn/X444/rySef1ODBg/Xuu+/q888/1+TJkxUTE6NRo0Zp0aJFqqmpce8vIiJCGzZscF92Wrlypb777jvdfffdGjx4sGbNmlVr+5+qb641NTWKjo6W0+lUUlJSnWdYfvOb30iSkpKSFB0dra1bt7prr732mm688UaNGjVKmzZtcq+vqalRenq6br31Vo0cOVILFy5UVVVVvV+DX/7yl4qOjtbf/va3Outz587VihUr3Ms/v3QZGxurdevWKTExUYMGDdK8efN08uRJPfTQQ4qOjtb999+v//3f/621z02bNmnUqFEaNWqUXn311Vq9euWVVzR27FgNHz5cs2bNUllZmaT/P7P5zjvv6NZbb9XUqVPrnO/bb7+tcePGadiwYXrkkUdUUlIiSRo7dqwKCwv1yCOPKDo6ut6vV1JSkjIyMtzLGRkZFwSW8vJyPfXUUxoxYoRGjx6tNWvWyOVyqaamRjExMTpy5Ih7W4fDoYEDB8put1/Qu5KSEs2cOVMjRoxQbGys3njjDXetvu+Hn0tOTr4gaOXk5Khfv36KiIho9JjV1dUaOHCg+2zeX/7yFw0YMMAdwFeuXKm0tDRJDR9j69atc399//GPf9Q5b8AUghZQj7S0NN1333369NNPtX37do0fP16S9Pe//12SlJ+fr/379ys6OlqbN2/Wu+++qzfeeEM7duzQmTNntGjRIknSN998o+eee05Lly7V7t27VVFR4f5he97777+v+Ph47du3T4mJibLZbPrDH/6gjz/+WBs3btRHH32k//zP/6z1mg8//FCbN2/W22+/rXXr1mnBggVaunSpdu3apa+//rrWWZCfqm+uvr6+2r9/vyQpMzOzznuGNmzY4K7v379fv/71ryVJJ0+eVHl5uT744AOlpaVp0aJF7jCzbNkyFRQUKCMjQ3l5eSotLdXq1as99n7WrFlav369O9Q0VV5enl5//XXl5ubqv/7rv/Twww9r9uzZ+vjjj+VyufTmm2/W2n7v3r3Ky8vTq6++qr/+9a/uEPzmm29qx44d+vvf/67du3erS5cu7q/refn5+dq6dWutgHbeRx99pBdffFErV67Uhx9+qLCwMM2ePVuStGPHDoWGhmrt2rXav3+/fH1963wvgwYNUkVFhY4ePSqn06mcnBxNmDCh1jaLFy9WeXm5duzYoTfffFOZmZnatGmTfH19NW7cuFrHwrZt2zR06FAFBwfX2ofL5dKjjz6qiIgIffDBB1q/fr3Wr1+v3bt3S6r/++Hnxo0bp1OnTmnfvn3udVu2bKnzbJanMTt06KDrr79e+fn57j6Hhobqk08+cS8PGzZMkudj7IMPPtBrr72m1157TXl5efroo4/qnDdgCkEL7cr06dMVExPj/u+5556rd1sfHx999913cjgc6tSpkwYNGlTvtllZWbr//vvVu3dvderUSbNnz9bWrVt19uxZvffeexo9erRiYmLk6+urxx9/XF5eXrVeP2jQII0dO1Y2m01+fn6KiorSoEGD5OPjo/DwcE2ePNn9A+e8hx56SAEBAbr22mvVv39//epXv1Lv3r119dVX6+abb673RnZPc71YPj4+mj59uq666irdcsst8vf3V0FBgSzL0ttvv6158+YpMDBQAQEB+t3vfldvCDwvMjJSI0eOvOBercaaMmWKunXrpp49eyomJkYDBw7UgAED1KFDB40bN+6C3kyfPl3+/v6KiIjQxIkTlZ2dLUnauHGjfv/736tXr17y9fXVjBkzlJubW6tXM2fOlL+/v/z8/C6YR1ZWlu68805dd9118vX11ezZs3XgwIEm31t1/qzWnj171LdvX/Xs2dNdczqd2rp1q5544gkFBAQoPDxcDzzwgLZs2SJJSkxMrNXvrKwsJSYmXjDGF198IYfDoRkzZsjX11e9e/fWpEmT3GctG/v94Ofnp/j4ePdZrW+//VZffvnlRY05dOhQ5efn6+zZszp8+LDuvfde5efnq7q6Wl988YViYmIaPMa2bdumiRMnqn///vL399eMGTOa1HuguXxaegLA5bR69WqNHDnSvbx582a98847dW6blpaml19+WePHj1d4eLhmzJih0aNH17ltaWmpwsLC3MthYWE6e/as7Ha7SktL1atXL3etY8eOCgwMrPX6n9YlqaCgQH/605908OBBVVZWyul06rrrrqu1Tbdu3dz/7tChwwXLJ0+ebPJcf/oDvCkCAwPl4/P/HycdO3bUmTNn5HA4VFlZqYkTJ7prlmXJ5XI1uM/HH39cd911lx544IEmz8dTb/z8/HTmzJla24eEhLj/HRYW5r7UVlRUpOnTp8tm+///J7XZbLLb7e7ln3/tfqq0tLTW161Tp04KDAxUSUmJwsPDG/1+kpKSNGXKFB0/flxJSUm1aqdOndKPP/6o0NBQ97rQ0FD3WdPhw4erqqpKn332mYKDg/XVV1/VeVn4+++/V2lpqWJiYtzrnE6ne7kp3w933HGHHn30Uc2fP1+ZmZkaNWrUBWfQGjPmsGHD9MILL+jQoUPu/5l45plndODAAV1zzTXq2rWr7Ha7x2OstLRUUVFR7tpPj33gciBoAfXo06ePli9fLpfLpby8PD3++OPau3fv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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "9ePYKt-a4c8-" - }, - "source": [ - "### Identified fact:\n", - "_Inspecting the degree distribution of vertices is an activity we commonly perform to understand some basic characteristics of the network. In this application, this activity shows that most user's rate less than a 100 movies. The graph above is an example of \"long tailed distribution\". This is commonly seen in social networks._" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TLGsHDx24c8-" - }, - "source": [ - "## How many users rate a movie?\n", - "This is also a distribution that also has the long tailed behavior. Most mvoies are rated by less than 100 users. There are some movies that are rated by many viewers though." - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 355 - }, - "id": "zCdf0HX34c8_", - "outputId": "0b0a31eb-bac7-400f-da72-b72020f0bcaa" - }, - "source": [ - "dm = [v for k,v in degm]\n", - "plt.rcParams['figure.figsize'] = [10, 5]\n", - "ax = plt.hist(dm)\n", - "plt.title(\"Histogram of the Number of Viewers Rating a Movie\")\n", - "plt.xlabel(\"Number of Viewers\")\n", - "plt.grid(True)" - ], - "execution_count": 149, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "43HtTUpU4c8_" - }, - "source": [ - "### Identified fact:\n", - "_We can repeat the exploration of degree distribution with the movie nodes. The behavior observed with the movie nodes is similar to what is observed with the user nodes. We observe the same \"long tailed\" distribution and most movies are rated by less than a 100 users._" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "mNf2j7U14c8_" - }, - "source": [ - "## Centrality Measures\n", - "\n", - "A centrality measure identifies influential nodes in a network. How do we formalize the observations about movie importance and the user's rating behavior in the given network? The notion of centrality measure is useful in this regard. Many measures of node centrality are used, see [Chapter 3 of the text book by Zafarani et.al](http://dmml.asu.edu/smm/) for details. We will use degree centraility in this example (see the [documentation](https://networkx.github.io/documentation/stable/reference/algorithms/generated/networkx.algorithms.bipartite.centrality.degree_centrality.html) for details). In the illustrations below, we will capture the top 10 users and movies in terms of importance as determined by this measure. " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "BsHe6G_N4c8_" - }, - "source": [ - "dc= bipartite.degree_centrality(B, users)\n", - "sdcu = {}\n", - "sdcm = {}\n", - "for k, v in sorted(dc.items(),reverse=True, key=lambda item: item[1]):\n", - " if k.startswith(\"Users\"):\n", - " sdcu[k] = v\n", - " else:\n", - " sdcm[k] = v\n", - "\n", - "del dc" - ], - "execution_count": 150, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Uf4MZBHe4c8_" - }, - "source": [ - "## List the top 10 users in terms of degree centrality\n", - "These guys rate a lot of movies" - ] - }, - { - "cell_type": "code", - "metadata": { - "scrolled": true, - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "N64DiO3H4c8_", - "outputId": "3aba9db1-4cb3-4350-fe55-993786eb8f3d" - }, - "source": [ - "list(sdcu.keys())[:10]" - ], - "execution_count": 151, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['Users/405',\n", - " 'Users/13',\n", - " 'Users/276',\n", - " 'Users/450',\n", - " 'Users/234',\n", - " 'Users/303',\n", - " 'Users/416',\n", - " 'Users/655',\n", - " 'Users/181',\n", - " 'Users/393']" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 151 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "caKNxjrP4c8_" - }, - "source": [ - "## List the top 10 movies in terms of degree centrality\n", - "These movies are rated by a lot of people" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Gswkyc5f4c8_", - "outputId": "af141f85-b4b4-4b24-c098-2bdfb88da4f0" - }, - "source": [ - "list(sdcm.keys())[:10]" - ], - "execution_count": 152, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['Movies/50',\n", - " 'Movies/258',\n", - " 'Movies/100',\n", - " 'Movies/288',\n", - " 'Movies/181',\n", - " 'Movies/286',\n", - " 'Movies/294',\n", - " 'Movies/1',\n", - " 'Movies/56',\n", - " 'Movies/98']" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 152 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CeHGqYwX4c8_" - }, - "source": [ - "## How does this importance measure vary over the user community?\n", - "We can get a sense of this by viewing the distribution of this measure." - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 604 - }, - "id": "0pOqgjAp4c9A", - "outputId": "a3abe1e1-e275-46fa-85a0-a1b64d0ec7a6" - }, - "source": [ - "import seaborn as sns\n", - "import numpy as np\n", - "npvals = np.fromiter(sdcu.values(), dtype=float)\n", - "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", - "ax = sns.distplot(npvals, hist = False)\n", - "plt.title(\"Distribution of User Degree Centrality\")\n", - "plt.xlabel(\"User Degree Centraility\")\n" - ], - "execution_count": 153, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2557: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", - " warnings.warn(msg, FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "Text(0.5, 0, 'User Degree Centraility')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 153 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAIECAYAAAD8YSNOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde3yT9fn/8XcObZo2bdNDCuXgYU6KbiIoiE5UBirqEHX7OpzOKW6eNqf7uk0ZY1PRhw51X9ShTt2GO/jT6UMFpngG8TCnOFFUUASRMz0fkqZN0iS/P0oClZYmbZI7h9fzn0na3rks9x6+e/W6r48pHA6HBQAAAOQgs9EFAAAAAEYhDAMAACBnEYYBAACQswjDAAAAyFmEYQAAAOQswjAAAAByFmEYQNx++9vf6t57703ItXbs2KFx48YpGAxKki688EI98cQTCbm2JP3oRz/S008/nbDrxWrBggWaOHGijj/++JS/N4y19z28dOlSXXLJJQZXBGB/CMMAepgyZYrGjBmjcePGafz48TrvvPP06KOPKhQKRT9n3rx5+slPfhLTtf7973/v93OGDRum1atXy2KxDLr2P/zhD/rFL37R47U//elPOueccwZ97Xjs2LFDixYt0rJly/Tmm2/u8/GnnnpK3/ve9/Z5PZbvVyLU1NRo7NixGjdunCZOnKiLLrpIy5YtS/r7JkpdXZ3mzJmjSZMmady4cTrttNN0zz33yOv1DvraNTU12rx5cwKq7DZjxgz95S9/Sdr1AQweYRjAPv74xz9q9erVWrFihS699FI99NBD+vWvf53w9+nq6kr4NdPBjh075HQ6VVFRYWgd+/v+LlmyRKtXr9Zzzz2nc845R/PmzdPChQsTXkM4HO7xg9RgtbS06LzzzpPP59Njjz2m1atXa9GiRWpra9OWLVsS9j59ydZ7FshlhGEAfSouLtbUqVN111136emnn9b69eslSbNnz9aCBQskSU1NTbr88ss1fvx4HXPMMTr//PMVCoX0y1/+Ujt27NAVV1yhcePG6aGHHtK2bdtUU1OjJ554QpMnT9ZFF10UfW3vkLFlyxb9z//8j4466ihdeeWVamlpkSS9/fbbOvHEE3vUGOmmvvbaa3rggQf03HPPady4cZoxY4aknr+yDoVCuu+++/TNb35Txx13nK677jq53W5Jitbx9NNPa/LkyZo4caLuv//+Pr83brdb1113nY499lh985vf1H333adQKKR///vfuuSSS1RXV6dx48Zp9uzZA/rer1y5UmeccYbGjRunE044QX/+85+jH1uxYoXOOuusaOf+k08+6fH9ePDBB3XmmWdq7Nix/Ya38vJynX322brxxhv1wAMPqLm5OfrvF+m+nnDCCVqwYEF0lCUYDOp3v/udJk6cqClTpugf//hHj7/DCy+8UAsWLNB5552nI488Ulu3btXGjRs1a9YsHXPMMZo2bVqPTrTf79f8+fM1efJkfeMb39Bvf/tbdXZ29lrvokWLVFRUpDvuuEMjRoyQJFVXV2vu3LkaPXq0JO33vWbPnq2bbrpJl112mcaNG6dzzz03GqIvuOACSdJZZ52lcePGadmyZdF77sEHH9Txxx+vX/3qV2ptbdXll1+uY489VhMmTNDll1+uXbt29Vrv3r8F6O3606dP1/Lly6OfHwgENHHiRK1du3a/f28AEocwDKBfY8aM0dChQ/Xuu+/u87FFixZpyJAheuutt/Tmm2/q2muvlclk0h133KFhw4ZFu8yXXnpp9GtWrVqlZcuW9Qh4e1u8eLFuvfVWvfHGG7Jarbrlllv6rfHEE0/U5ZdfrtNPP12rV6/W0qVL9/mcp556Sk8//bT+9re/6eWXX5bX69W8efN6fM5///tfPf/88/rrX/+qe++9Vxs3buz1/W6++Wa53W69/PLL+vvf/64lS5boySef1De+8Q099NBDqqqq0urVq/W73/2u39p78+tf/1rz5s3T6tWr9cwzz+jYY4+VJK1du1Zz5szRvHnz9Pbbb2vmzJn68Y9/LL/fH/3aZ599Vg8++KDeffddWa3WmN5v6tSpCgaDWrNmjaTu0Gi1WvXiiy9q8eLFevPNN6M/VDz++ON67bXXtGTJEj399NN6+eWX97nekiVLdPPNN+u9995TeXm5LrnkEk2fPl3//ve/tWDBAt10003asGGDJOnOO+/Upk2btHjxYr344ouqq6vrcyb9rbfe0imnnCKzuff/fHm93v2+lyQtW7ZMV111lVatWqUDDjgg+oPdI488Eq199erVOuOMMyRJDQ0Nam1t1YoVK3TzzTcrFArp29/+tlasWKEVK1bIZrPtcx/1prfrn3XWWT3u1ZUrV6qqqkqHH354v9cDkBiEYQAx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rFixgvT0dD777LPLepyzudw/i4jID6EwLCItVklJCT/72c9IS0tj8ODBTJkyBa/XC0BBQQE///nPGTp0KKNGjWLhwoW+582bN4/HHnuMxx9/nAEDBrB48eLzHicwMJC+ffvyyiuvUFpaynvvved77F//+hfjxo1j0KBB3H///eTm5voeW79+PWPHjmXgwIH85je/4Sc/+QmLFi0C4L333mPy5MnMnj2bIUOGMG/ePOrq6pgzZw4jRoxg+PDhPPPMM9TU1Pj298knnzBx4kTS0tKYPHkyu3fvPmu9Bw8e5I033uDFF19k2LBhBAQEEBwczK233sr06dMBznusrKwsbrjhBv7yl78wbNgwrrvuOt59910A3n77bT744AP+/Oc/k5qayoMPPgjAqFGjWLBgARkZGfTv3x+3282CBQtIT08nNTWVW265hY8//thX43vvvcddd9111vpnzpzJH/7wB6qqqpg2bRqFhYWkpqaSmppKQUEB/fr14/jx477td+zYwdChQ6mvrz/v71FEWieFYRFpsf76178SHx/Pxo0b2bBhAzNmzMAwDLxeLw899BDdu3dn7dq1vP7667z++uusW7fO99zVq1dz8803s3nzZjIyMpp0vLCwMIYPH87mzZsBWLVqFa+99hovv/wyGzduZODAgfzyl78EGoL6Y489xi9/+UuysrJISUlhy5Ytp+1v27ZtJCcns2HDBh566CHmzp1LdnY2S5YsYeXKlRQWFvrGzu7cuZOnnnqKWbNmkZWVRWZmJg8//DB1dXVn1Llx40YSEhLo27fvOX+W8x0L4NixY5SXl7N27VpeeOEFZs2axYkTJ8jMzCQjI8PXa/7qq6/6nrN8+XIWLFjA5s2bcTgcJCcn88Ybb/DVV1/x6KOP8sQTT1BYWNik1xogJCSEP/3pT8TFxbFlyxa2bNlCfHw8gwcP5t///rdvu6VLlzJ+/HjfkBYRkVMpDItIi+VwOCgqKiIvLw+n00laWhqGYfDtt99SUlLCo48+SkBAAMnJydx55518+OGHvuf279+f9PR0bDYbQUFBTT5mXFwcJ06cAOCtt95i+vTpdO7cGYfDwYMPPsiuXbvIzc1l7dq1dO3alZtuugmHw8Hdd99N27Ztz9jX1KlTcTgcBAYG8s477/DUU0/Rpk0bwsLC+NnPfsby5cuBhh7ZzMxM+vXrh91u57bbbsPpdLJ169YzaiwtLSU2NvacP4Npmuc91snX9pFHHsHpdHLjjTcSEhJCdnb2eV+bqVOn4nK5fK/nuHHjiI+Px2azccstt9ChQwe2bdvWtBf6PG677Tbef/99ADweD8uXL2fixIk/eL8i0jI5rC5ARORS2e32M8afut1uXw/g/fffz8svv+yblSAzM5Pp06eTm5tLYWEhaWlpvud5PJ7TlhMSEi6ppoKCAiIjIwHIy8tj9uzZzJkzx/e4aZoUFBRQWFh42jEMwzjjmKcul5SUUF1dze23337avk4O+8jLy2PJkiX84x//8D1eX19/1p7WNm3aUFRUdM6f4ULHOrkPh+P7j5Dg4OALjpV2uVynLS9ZsoS//vWvvqEjVVVVpw1vuFSjR4/m2Wef5ciRI2RnZxMWFnbeXnARad0UhkXkquVyucjJyaFz586+dTk5OXTs2BFoGLYwc+ZMZs6cyZ49e/jpT39Knz59cLlcJCUlsXLlynPu2zCMi66nsrKSjRs3+sbJulwuHnzwQW699dYztj106BAFBQW+ZdM0OXr06DlriIqKIigoiOXLlxMfH3/G/k4e66GHHrpgncOGDWN6dFF0AAADNklEQVTWrFl8++239OnT54zHL3SsCznXa3fq+tzcXJ5++mn+9re/kZqait1uv6Te27MdKzAwkHHjxvH+++9z4MAB9QqLyHlpmISIXLVuueUWXnnlFY4ePYrX6+Xzzz9nzZo1jB07Fmg4oezQoUOYpkl4eDh2ux3DMOjbty+hoaEsWLCAmpoaPB4Pe/bsueSv6Ovq6ti+fTuPPPIIERERvh7VyZMns2DBAvbu3QtAeXm5byzrjTfeyHfffceqVatwu9288cYbHDt27JzHsNlsTJo0idmzZ1NcXAw09EKfHOc8adIk3nrrLb755htM06SqqopPP/2UioqKM/bVsWNHpkyZ4huvXFdXR21trW9M74WOdSExMTHk5OScd5vq6moMwyA6OhqAd9991/c6XYyYmBhKS0spLy8/bf3EiRNZvHgxa9asURgWkfNSGBaRq9YjjzxCamoqU6ZMYdCgQfzud79j7ty5dOvWDWjofb333ntJTU0lMzOTu+66i6FDh2K323n11VfZvXs3o0ePZujQoTz99NNnDY7nc3LGhCFDhvDkk0/Sq1cv3nrrLUJCQgAYM2YMDzzwADNmzGDAgAFMmDDBNx9udHQ0L730Er/73e8YMmQI+/bto3fv3uc9yeuJJ56gQ4cO3HnnnQwYMIB77rnHN063T58+PP/888yaNYtBgwZx0003nTarxX96+umn+fGPf+zbPj09nY8//piRI0de8FgX8qMf/Yh9+/aRlpbGww8/fNZtunTpwn333cfkyZMZPnw4e/bsYcCAAU3a/6k6d+7M+PHjSU9PJy0tzdfbPnDgQGw2G7169SIxMfGi9ysirYcuuiEi4ge8Xi833HADc+fOZejQoVaX0yLcfffdZGRkMGnSJKtLERE/pp5hERGLrFu3jrKyMurq6nxTkPXv39/iqlqGbdu2sXPnTsaNG2d1KSLi53QCnYiIRbZu3crjjz9OXV0dXbp0Yf78+Rc1jZuc3ZNPPsmqVav41a9+RVhYmNXliIif0zAJEREREWm1NExCRERERFothWERERERabUUhkVERESk1VIYFhEREZFWS2FYRERERFothWERERERabX+Px8xG6LPnezgAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kbzu3I_q4c9A" - }, - "source": [ - "## How does this importance measure vary over the movie community?" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 604 - }, - "id": "LQ28qv9y4c9A", - "outputId": "e0b35ddc-0ce8-4ef6-ff11-b5ec7d2115db" - }, - "source": [ - "import seaborn as sns\n", - "import numpy as np\n", - "npvals = np.fromiter(sdcm.values(), dtype=float)\n", - "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", - "ax = sns.distplot(npvals, hist = False)\n", - "plt.title(\"Distribution of Movie Degree Centrality\")\n", - "plt.xlabel(\"Movie Degree Centraility\")\n" - ], - "execution_count": 154, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2557: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", - " warnings.warn(msg, FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "Text(0.5, 0, 'Movie Degree Centraility')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 154 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAIECAYAAAD8YSNOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXxU9dn///csyWSyLyQQdqsC0hsUBHHBLaBgxYBai2uVVkV7U9vbti6UVkV/uN432rrWemOr/Gz1riIq7iLu1gWkVihlXwJkX2ZLZvv+ESaFEiCQzJwz57yef8lMOHM1h8ej71y5zvVxxOPxuAAAAAAbchpdAAAAAGAUwjAAAABsizAMAAAA2yIMAwAAwLYIwwAAALAtwjAAAABsizAM4IB+/etf66GHHuqRa1VVVWnUqFGKRqOSpMsuu0zPPfdcj1xbkq688kq98MILPXa9rpo/f77GjRunk046KeWfLfXsPULP2v3f+OLFi/WDH/zA4IoA7M7BnmHA3ioqKlRbWyuXyyWXy6UjjjhCU6dO1fTp0+V0HtzPyxUVFbrjjjt04okndvnvXHbZZaqsrNQFF1xwsKXrt7/9rTZt2qT77rvvoP9uT6qqqtLkyZO1dOlSlZSU7PX+p59+qu9///uaOHHiHoF19erVmjp1qo477jg99dRTqSx5D0OHDpXX65XD4VBmZqaGDRum6dOn6zvf+Y5hNR2M6upq3X///Xrvvffk9/vVu3dvfec739GVV16p7Ozsbl176NCheuONNzRo0KBDvsb+/o33xPUBdA+dYQB69NFHtXz5ci1dulRXXXWVHn/8cf3yl7/s8c+JRCI9fk0zqKqqUmFhYadBOKG4uFgrVqxQQ0NDx2svvPCCBg8enIIKD+zFF1/U8uXL9eqrr+rcc8/V3Llz9eCDD/b458TjccVisR67XmNjoy688EK1trbqT3/6k5YvX64FCxaoublZmzdv7rHP2Rer/psG7IQwDKBDXl6eJkyYoPvvv18vvPCC1qxZI0m66aabNH/+fElSfX29Zs6cqTFjxui4447TxRdfrFgspl/84heqqqrSNddco1GjRunxxx/X1q1bNXToUD333HM67bTTdPnll3e8tnuI2Lx5s7773e9q9OjRuvbaa9XY2CipvaN6yimn7FFjRUWFPvroI7333nt67LHH9Oqrr2rUqFGqrKyUtOevpGOxmB5++GGdfvrpOuGEE3TDDTeopaVFkjrqeOGFF3Taaadp3LhxeuSRR/b5vWlpadENN9yg448/XqeffroefvhhxWIxffTRR/rBD36g6upqjRo1SjfddFOnfz8jI0MTJkzQkiVLJEnRaFRLlizROeecs8fXffnllzr//PN17LHH6vzzz9eXX34pSVqyZInOO++8Pb72ySef1DXXXLPXPZKkpUuXaurUqRozZowuvPBCrV69ep//23ZXXFysadOm6dZbb9Vjjz3WEd5bWlo0e/ZsjR8/XieffLLmz5/fMeoSjUZ11113ady4caqoqNDTTz+9xz2+7LLLNH/+fF144YU6+uijtWXLFq1bt04zZszQcccdp0mTJnV8XySpra1Nd999t0477TSdeOKJ+vWvf61QKNRpvQsWLFBOTo7uvfde9e/fX5JUXl6uOXPmaNiwYZK038+66aabdNttt+nqq6/WqFGjdMEFF3SE6EsuuUSSNHXqVI0aNUpLlizp+Df5u9/9TieddJJuvvlmNTU1aebMmTr++OM1duxYzZw5Uzt27Oi03ueff14XXXTRPq8/ZcoUvfPOOx1fHw6HNW7cOH3zzTddun8ADh5hGMBeRo4cqT59+ujzzz/f670FCxaod+/e+vjjj/Xhhx/q+uuvl8Ph0L333qu+fft2dJmvuuqqjr/z2WefacmSJXriiSc6/bxFixZp3rx5+uCDD+R2u3XHHXccsMZTTjlFM2fO1FlnnaXly5dr8eLFe33N888/rxdeeEF//OMf9dZbbykQCGju3Ll7fM0XX3yh1157TX/4wx/00EMPad26dZ1+3u23366Wlha99dZbeuqpp/Tiiy/qL3/5i0488UQ9/vjjKisr0/Lly3XXXXfts+Zp06Zp0aJFkqQPPvhAQ4YMUe/evTveb2xs1MyZM3XZZZfp008/1YwZMzRz5kw1NDTo9NNP14YNG7Rx48aOr3/ppZf2CtOS9M0332j27NmaO3euPv30U02fPl0/+tGP1NbWtt/v6e4mTJigaDSqlStXSmoPjW63W2+88YYWLVqkDz/8sOOHjmeffVbvvfeeXnzxRb3wwgt666239rreiy++qNtvv11ffvmliouL9YMf/EBTpkzRRx99pPnz5+u2227T2rVrJUn33XefNmzYoEWLFumNN95Q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prPfCxHR9WAyTES9Snp6OjIzM93PMzMzcf/997dZp6amBr/97W8xZswYTJw4Ee+++y6cTiesVitGjBiBM2fOuNetqKjA4MGDUV5ejqysLNx5553uZSUlJfj1r3+NMWPG4O6778aaNWs6FKOXlxcGDx6Mv/71r6isrMS6devcy/7zn/9g2rRpGDlyJB599FGYzWb3sn379mHq1KkYPnw4fve732HevHn4/PPPAQDr1q3DnDlzsHLlSowePRrvvPMOrFYrMjIyMGHCBIwbNw6vvPIKGhsb3dv7+uuvkZ6ejhEjRmDOnDk4derUVeO9cOECPv74Y7zxxhsYO3YsNBoNtFot7rvvPixcuBAAfnJfLZ/bP/7xD4wdOxZ33HEH1q5dCwD49NNPsXHjRvz9739HcnIyFi1aBMDVy7969WqkpaVh6NChsNvtWL16NVJSUpCcnIx7770XX331lTvGdevW4aGHHrpq/EuXLsWbb76J+vp6PP7447BYLEhOTkZycjJKSkowZMgQXL582b3+iRMnMGbMGNhstg61JxH1bUyGiahXGTp0KGpra3Hu3Dk4HA5s3rwZ9913X5t1li9fjpqaGuzYsQMfffQR1q9fj7Vr10Kj0WDy5Mltepa3bt2KkSNHwmg0ttmG0+nEE088gfj4eOzZswcffvghPvzwQ+zdu7fDser1eowbNw7Z2dkAgB07duD999/HX/7yFxw4cADDhw/Hc889B8CVlD/99NN47rnnkJWVhf79++PIkSNttnfs2DH069cP+/fvxxNPPIHXX38deXl5yMzMxPbt22GxWNy1szk5OXjhhRewbNkyZGVlYfbs2XjyySdhtVrbxXngwAGEhYVh8ODBP/pefmpfAFBWVoaamhrs2bMHK1aswLJly1BVVYXZs2cjLS3N3Wv+3nvvuV+zefNmrF69GtnZ2VCpVOjXrx8+/vhjHD58GE899RSWLFkCi8XS4c9bp9Phb3/7G0JCQnDkyBEcOXIEoaGhGDVqFLZu3epeb/369Zg+fbq7pIWIPBuTYSLqdVp6h/fv34+BAwciNDTUvczhcGDLli147rnnoNfrERkZiV/+8pfYsGEDACAtLa1NMrxx40akpaW128f333+PiooKPPXUU9BoNOjXrx9mzZqFLVu2XFesISEhqKqqAgB88sknWLhwIQYOHAiVSoVFixbh5MmTMJvN2LNnD+Li4jBlyhSoVCo8/PDDCAoKaret+fPnQ6VSwcvLC5999hleeOEF+Pv7Q6/X41e/+pX7vX366aeYPXs2hgwZAkmS8MADD0CtVuPo0aPtYqysrERwcPCPvgdZln9yXwCgUqmwePFiqNVq3HXXXdDpdMjLy/vJz2b+/PkwmUzw9vYGAEybNg2hoaEQRRH33nsvoqOjcezYsY590D/hgQcecLd/ywFUenr6TW+XiPoGldIBEBFdr/T0dMybNw8FBQXtkprLly/DZrMhPDzcPS88PBwlJSUAgNGjR6OxsRHfffcdjEYjTp06hZSUlHb7MJvNsFgsGDFihHuew+Fo87wjSkpK4OfnBwAoLCzEypUrkZGR4V4uyzJKSkpgsVgQFhbmni8IQpvnANo8r6ioQENDA2bMmNFmW06n072vzMxM/Otf/3Ivt9lsV+1p9ff3R2lp6Y++h2vtq2UbKtWVPylarfaatdImk6nN88zMTHzwwQfu0pH6+vo25Q03atKkSXj11Vdx6dIl5OXlQa/X/2QvOBF5FibDRNTrREREIDIyEt988w1WrFjRZllAQADUajUKCwsRGxsLACgqKnLZUcgWAAADmUlEQVT3HkuShHvuuQebNm1CUFAQJkyYAL1e324fJpMJkZGR2L59+w3HWVdXhwMHDrjrZE0mExYtWtSurAMA8vPz3Qk74Eo2i4uL26wjCEKb9+nt7Y3Nmze36RlvHf+iRYvwxBNPXDPOsWPHYtmyZfj++++RlJTUbvm19nUtreP+sflmsxkvvfQS/vnPfyI5ORmSJN1Q7+3V9uXl5YVp06Zhw4YNOH/+PHuFiagNlkkQUa+0YsUKfPjhh9DpdG3mtyS7b775Jmpra2E2m/HBBx+0SUDT0tKwdetWbNy4EampqVfd/uDBg+Hj44PVq1ejsbERDocDZ86c6dBpe6vViuPHj2Px4sUwGAzuHtU5c+Zg9erVOHv2LADXhX4ttax33XUXTp8+jR07dsBut+Pjjz9GWVnZj+5DFEXMnDkTK1euRHl5OQBXL3RLTfPMmTPxySef4LvvvoMsy6ivr8fu3btRW1vbblsxMTGYO3euu17ZarWiqanJXdN7rX1di9FoREFBwU+u09DQAEEQ3EPmrV271v05XQ+j0YjKykrU1NS0mZ+eno4vvvgCu3btYjJMRG0wGSaiXikqKuqqvZgA8PLLL0Or1SIlJQVz585FamoqHnzwQffyIUOGQKvVwmKxtBk9ojVJkvDee+/h1KlTmDRpEsaMGYOXXnrpqslki5YRE0aPHo3nn38eiYmJ+OSTT9wJ++TJk/HYY4/h2WefxbBhw5CamuoeDzcwMBBvvfUW/vjHP2L06NHIzc3FoEGDfvIiryVLliA6OhqzZs3CsGHD8Mgjj7jrdJOSkrB8+XIsW7YMI0eOxJQpU9qMavFDL730En7+85+7109JScFXX32FiRMnXnNf1/Kzn/0Mubm5GDFiBJ588smrrhMbG4sFCxZgzpw5GDduHM6cOYNhw4Z1aPutDRw4ENOnT0dKSgpGjBjh7m0fPnw4RFFEYmIiIiIirnu7RNR38aYbREQ9kNPpxJ133onXX38dY8aMUTqcPuHhhx9GWloaZs6cqXQoRNSDsGeYiKiH2Lt3L6qrq2G1Wt1DkA0dOlThqPqGY8eOIScnB9OmTVM6FCLqYXgBHRFRD3H06FH85je/gdVqRWxsLFatWuUedoxu3PPPP48dO3bgxRdfvOrFkkTk2VgmQUREREQei2USREREROSxmAwTERERkcdiMkxEREREHovJMBERERF5LCbDREREROSxmAwTERERkcf6/11htq8WAiD9AAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "z1GwPZIg4c9A" - }, - "source": [ - "### Identified fact:\n", - "_We have a measure to capture the importance of a movie and a user on the basis of the rating activity performed on them. We have identified important users and movies in the network on the basis of this measure. We have also have information about how this importance measure varies over the users and movies in the data._" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "x1vtgYbAXpec" - }, - "source": [ - "m4v = [t[0] for t in g.in_edges('Movies/4')]" - ], - "execution_count": 155, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "sO21vdXv4c9A" - }, - "source": [ - "## Similarity of nodes\n", - "Just like measures exist to quantify the importance of nodes in a network, there exist measures to quantify the similarity of nodes in a network. We will pick a random node in the network and characterize the similarity of nodes connected to it." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "y4W1MtL-RTjK" - }, - "source": [ - "## How similar are viewers of the movie 'Get Shorty'?\n", - "In this example, we will use the __Jaccard__ similarity as a measure of node similarity. We first get all pairs of users who have seen the movie and then compute the __Jaccard__ similarity between them. The details are shown below. Networkx provides an API for this purpose that we will use." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "z4WoMVchXtVq" - }, - "source": [ - "from itertools import combinations\n", - "m4vucmb = list(combinations(m4v, 2))" - ], - "execution_count": 156, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "3Z4VBUvkXyHl" - }, - "source": [ - "import networkx as nx\n", - "gp = g.to_undirected()\n", - "jcp = nx.jaccard_coefficient(gp, m4vucmb)" - ], - "execution_count": 157, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "f2i7Puh9X14N" - }, - "source": [ - "jcpv = []\n", - "for u, v, p in jcp:\n", - " jcpv.append(p)\n", - " #print('(%s, %s) -> %.8f' % (u, v, p))" - ], - "execution_count": 158, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-L1O0rhe4c9B" - }, - "source": [ - "## What does the distribution of User Similarity look like?" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 604 - }, - "id": "ANP7CmNj4c9B", - "outputId": "0d78641c-b03c-48ff-e3a8-76a14d6719cf" - }, - "source": [ - "import seaborn as sns\n", - "import numpy as np\n", - "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", - "ax = sns.distplot(jcpv, hist = False)\n", - "plt.title(\"Distribution of Jaccard Similarity between Raters of Get Shorty\")\n", - "plt.xlabel(\"Jaccard Similarity\")" - ], - "execution_count": 159, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2557: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", - " warnings.warn(msg, FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "Text(0.5, 0, 'Jaccard Similarity')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 159 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAIECAYAAAD7I/1bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVzUdeI/8NccMNz3DR4IgqByCXhheBWaqbnW1w77tdVmbdu1XbpWa+tWu5WtpVluWw/do2+HlUellbflrcmpiCAIyD2gwgBzvn9/uM5XFGREmA8z83r+pczM5/NiPgzz4jPvz/stE0IIEBERERHZKbnUAYiIiIiI+hILLxERERHZNRZeIiIiIrJrLLxEREREZNdYeImIiIjIrrHwEhEREZFdY+Elh/PHP/4Rq1at6pVtVVVVITk5GUajEQBw3333Yd26db2ybQD4zW9+g/Xr1/fa9iy1fPlyjB49GuPHj7f6vnvDokWLsHz58h49dsaMGTh48GCPHnv58fr6669x991392g7ALB69Wq8+OKLPX785W40C1lPf3/trVy5Es8995zUMYium1LqAES9afLkyWhoaIBCoYBCoUB0dDRmz56NefPmQS6/+Pfd0qVLLd7Wq6++inHjxnV5n7CwMBw7dqxXsq9cuRJnzpzBsmXLzF/76KOPemXb16Oqqgpr1qzBzp074e/vf9XtlZWVmDJlCgoKCqBU2t6vEJ1Oh7/97W/YvHkzmpub4evriylTppjL5Xfffdfjbffm8Xr00UfN/5byOf/666+xbt06fPrpp1bd7/VYuXIlVq9eDWdnZ/PrfuHChUhOTrbo8bGxsfjxxx8xaNCgPk56bd299gCgpaUFK1euxNatW9HY2AgfHx8kJCTgoYceQmJiYrf7WLRoEYKDg/H73/++y/ts27YNK1euREVFBZycnBAbG4vXXnsNAwYM6PH3diN5iHqD7b1bEXVj9erVGDduHJqbm3Ho0CG89tpryM3NxV/+8pde3Y/BYLDJwtedqqoq+Pj4dPmG298YjUYoFAqL7//hhx8iPz8f69atQ1BQEM6ePYsjR470YcLrZ68/W31p+vTpWLZsGQwGA1auXImnnnoKe/bs6fP99uax6u61p9PpcP/998PLywurV69GVFQUtFot9uzZgz179lhUeLtz5swZLFy4EO+99x7GjBkDjUaDvXv3XtdrzFKXPhkjsgYOaSC75enpiSlTpuCdd97B+vXrUVRUBKDjx92NjY145JFHkJqaivT0dNxzzz0wmUx4/vnnUVVVhUcffRTJycn4xz/+gcrKSsTGxmLdunWYOHEi7r//fvPXDAaDeb/l5eW44447kJKSgt/+9rc4d+4cAODgwYO46aabOmScPHky9u3bhz179uDvf/87tmzZguTkZMyaNQtAxyESJpMJ77//PiZNmoSxY8fihRdeQHNzMwCYc6xfvx4TJ07E6NGj8cEHH3T53DQ3N+OFF17AmDFjMGnSJLz//vswmUzYt28fHnzwQdTV1SE5ORmLFi3q9nnetWsXbr/9dqSkpCAzMxMrV67scPuRI0dw1113ITU1FZmZmfj6668BAO3t7fjrX/+KSZMmYdSoUbj77rvR3t4OAHjyyScxfvx4jBo1Cvfeey9OnTpl3t6iRYuwZMkSPPzww0hKSsLBgwdx/PhxzJkzB8nJyXj66aeh1Wq7zJuXl4epU6ciODgYMpkMERERuP322686JsDFM4dPPvkknnvuOSQnJ2PmzJkoLS3F3//+d4wdOxaZmZn4+eefzY+91pCWV199FZmZmUhJScGvfvWrDiX78v2kpKRg/fr1HT46nj9/PgAgLS0NycnJOHToENLT03Hy5EnzNtRqNRITE9HY2Njp/oUQWLp0KUaNGoVp06Zh//795tuam5uxePFiZGRkYMKECVi+fDmMRiNKSkqwZMkSZGdnIzk5GampqaioqEBqaipMJhMA4KWXXsLYsWPN23r++eexdu3aa273ki+//BLTp09HWloaHnroIZw9e9Z8W2xsLD799FPccsstSE1NxZ/+9CdYsjCoUqnEzJkzUVtba34ucnNzMW/ePKSmpiIjIwNLly6FTqcDANx7770AgNmzZyM5ORmbN28GAOzcuROzZ89Gamoq7rrrLhQWFpr3MXnyZHz44YeYOXMmkpKSYDAY8OGHH2LChAlITk5GVlZWh+f3cjfy2tu4cSNqa2uxatUqxMTEQKFQwM3NDdOmTcMTTzxhvl9JSQkeeOABpKenIysry/w9ff755/jmm2/w8ccfIzk5ucOnCJecOHECERERGDt2LGQyGTw8PJCVlYWwsDDzffR6PV544QUkJydjxowZyMvL67Dv++67D6mpqZgxYwa2b99uvu3K1+6XX355VZ6PPvqow/cCXHztvPrqq50+n0QWE0R2ZNKkSWLv3r1XfT0zM1N88sknQgghFi5cKP72t78JIYRYtmyZePnll4VOpxM6nU4cPnxYmEymTrdVUVEhYmJixPPPPy80Go1oa2szf02v1wshhJg/f77IyMgQJ0+eFBqNRjz++OPi2WefFUIIceDAATFhwoQu865YscJ830vmz58vvvjiCyGEEOvWrRNTp04V5eXloqWlRfzud78Tzz33XIdsL774omhraxMnTpwQw4cPF8XFxZ0+T88//7x49NFHRXNzs6ioqBC33HKLeT+d5bzcld/zgQMHRGFhoTAajeLEiRNi7NixYuvWrUIIISorK0VSUpL45ptvhE6nE42NjeL48eNCCCFeeeUVMX/+fFFTUyMMBoM4evSo0Gq15u+1ublZaLVa8eqrr4pZs2aZ979w4UKRkpIijhw5IoxGo2hubhYTJ04Ua9asETqdTmzZskXEx8ebj/GVVq1aJTIzM8V//vMfUVhYaD7eXR2TESNGiD179gi9Xi+ef/55MWnSJPH+++8LnU4nPv/8czFp0qROj9dXX30l7rrrLvNtGzZsEI2NjUKv14uPP/5YjBs3TrS3t5v3Ex8fL7Zu3SqMRqNoa2vr8PNw5XMuhBBLliwRb775pvn/a9euFY888kin3/NXX30l4uLizM/Rd999J1JSUkRTU5MQQojHHntMvPzyy0Kj0YiGhgYxd+5c8emnn3b6fQhx8fWUl5cnhBDilltuEZMnTzb/rGVmZoqCgoJut7t161YxdepUUVxcLPR6vVi1apWYN2+eeR8xMTFiwYIF4vz58+Ls2bNi9OjRYvfu3Z1+f5c/V1qtVrz11lsiPT3d/Hzl5eWJY8eOCb1eLyoqKsS0adPEmjVrOuyrrKzM/P+CggIxZswYkZ2dLQwGg/j666/FpEmTzD+fkyZNErNmzRJVVVWira1NlJSUiJtuuknU1NSYj9eZM2c6zXojr72nn35aLFy4sMvbhRBCo9GIm266SXz55ZdCr9eLgoICkZ6eLk6dOiWE6Pj7rzPl5eVixIgR4rXXXhP79+8XLS0tHW6/9JrYtWuXMBgMYtmyZeLOO+8UQgih0+nE1KlTxQcffCC0Wq3Yt2+fSEpKEiUlJeZ9X/7abW9vvypPbW2tSExMFOfPnxdCCKHX68WYMWPMP29EPcUzvOQQgoKCcP78+au+rlQqUV9fj6qqKjg5OSE1NRUymeya23riiSfg5uYGFxeXTm+fPXs2YmJi4Obmhqeeegrff/99r3x098033+DXv/41BgwYAHd3dzzzzDPYvHlzh7PLjz/+OFxcXDBs2DAMGzasw1mpS4xGIzZv3oxnn30WHh4eiIiIwAMPPIBNmzb1KNfo0aMRGxsLuVyOYcOGYcaMGTh06BAA4Ntvv8W4ceNw2223wcnJCb6+voiLi4PJZMJXX32FF198EcHBwVAoFEhJSYGzszMA4I477oCHhwecnZ3xxBNPoLCw0Hw2GwCmTJmCUaNGQS6X48SJE9Dr9bj//vvh5OSEadOmYeTIkV3mfeSRR/Dwww/jm2++wdy5czFhwoRrXhiYmpqKCRMmQKlUYtq0aWhqasKCBQvg5OSEW2+9FWfPnsWFCxe6fZ5mz54NX19fKJVKPPjgg9DpdCgtLTXfnpSUhKlTp0Iul3f5s3W5OXPm4LvvvjOf9dy4caP5k4HO+Pn5mZ+jW2+9FZGRkdi1axcaGhqwe/duLF68GG5ubvD398evf/3ra45lTktLw+HDh1FfXw8AyMrKwqFDh1BRUYGWlhYMGzas2+1+9tlnWLBgAaKioqBUKvHoo4/ixIkTHc7yPvzww/Dy8kJYWBhGjx7d6c/zJd9//z1SU1ORmJiIdevWYcWKFeahBiNGjEBSUhKUSiUiIiIwb948HD58uMttff7555g3bx4SExOhUCgwZ84cODk5ITs723yf++67D6GhoXBxcYFCoYBOp0NJSQn0ej0iIiIwcODAq7Z7o6+9pqYmBAQEmP9/4sQJpKamIiUlBVlZWQAufuISHh6OuXPnQqlUIj4+HllZWfj+++8t2seAAQPw73//G7W1tXj66acxZswYLFq0CBqNxnyfUaNGITMzEwqFArNnzzYfl5ycHLS2tmLBggVwdnbG2LFjMWnSpA4/S5e/dlUq1VX7DwoKQmpqqjnvTz/9BF9fX4wYMcKi/ERd4SAxcgi1tbXw9va+6usPPfQQ3nvvPTz44IMAgHnz5mHBggXX3FZISMg1bw8NDTX/OywsDHq9Hk1NTT1I3VFdXR3Cw8PN/w8PD4fBYIBarTZ/7fI3Q1dXV7S2tl61naamJuj1+g4fUYaFhaG2trZHuXJycrBs2TKcOnUKer0eOp0O06ZNAwBUV1d3+sbf1NQErVbb6UUwRqMRy5cvx/fff4/GxkbzxYZNTU3w9PQE0PE5rqurMw9PuPz76YpCocC9996Le++9F+3t7fjqq6+wePFiJCQkICoq6qr7Xz6e0sXFBb6+vubxjJeKaWtrK7y8vLp+kgB8/PHH+PLLL1FXVweZTIaWlpYOPxfd/VxdKTExES4uLjh48CACAwNRXl6OKVOmdHn/zp6juro6VFVVwWAwICMjw3ybyWTq8BxfKT09Hdu3b0dwcDDS0tIwevRobNy4ESqVCqmpqZDL5d1ut6qqCq+//jreeOMN8+1CCNTW1pp/zgMDA823ubq6dihdV5o2bRqWLVuGxsZGPPnkkygoKMDo0aMBAKWlpfjrX/+K/Px8tLW1wWg0Yvjw4V1uq6qqChs2bMB//vMf89f0ej3q6urM/7/8+Rk0aBAWL16MlStXori4GBkZGeaLsS53o689Hx8f8x8ZABAXF4cjR45g3759eOmllwAAZ8+eRW5uLlJTU833MxqN1/xj6EpJSUl49913AVwcDvL73/8eq1evxrPPPgug4+8ZFxcXaLVaGAwG1NXVISQkxPya7ez7u9bP1SVz5szBp59+iv/5n//Bpk2bMHv2bIuzE3WFhZfsXm5uLmprazFq1KirbvPw8MCiRYuwaNEiFBUV4f7778fIkSM7jEm8UndngKurqzv8+9KZTVdXV/MYVeDim9Dl4y272+6lC6wuqaqqglKphL+/P2pqaq752Mv5+vrCyckJVVVViI6ONue88s3ZUs8++yzmz5+Pjz76CCqVCq+99pq5yIWGhiI3N7fTDCqVChUVFRg2bFiH27755hts374da9asQUREBJqbm5GWltbl+M3AwEDU1tZCCGF+Dquqqiy6otzFxQX33nsvVqxYgeLi4k4Lb284cuQIPvroI6xduxZDhw6FXC6/6nu61vHv6rY5c+Zg06ZNCAwMRFZWVqdnzC658jmqrq7G5MmTERISAmdnZxw4cKDTi68623daWhrefPNNhISEIC0tDaNGjcKSJUugUqmQlpYGAN1uNzQ0FI8++uh1FTFL+Pn5YenSpZg7dy5uu+02BAUF4ZVXXkF8fDzefvtteHh4YO3atfjhhx+63MalbL/97W+7vM+Vz8vMmTMxc+ZMtLS04I9//COWLVuGt956q8N9bvS1N3bsWKxcuRKtra1wc3PrMntaWhrWrFljUe7uJCQk4JZbbukwjr4rQUFBqKmpgclkMpfe6upqDB48uMvHdJZn6tSpeOWVV1BUVIRdu3bh+eefv67MRJ3hkAayWy0tLdi5cyeeeeYZzJo1C7GxsVfdZ+fOnThz5gyEEPD09IRCoTD/Ag4ICEBFRcV173fTpk0oLi5GW1sb3n33XWRlZUGhUCAyMhJarRa7du2CXq/HBx98YL5wBrh4JvHs2bPmi4GudNttt+Gf//wnKioqoNFosHz5ckyfPv26rxBXKBSYNm0ali9fjpaWFpw9exZr1qzpcfHQaDTw9vaGSqVCbm4uvv32W/NtM2fOxL59+8xDL5qamnDixAnI5XLMnTsXf/nLX1BbWwuj0Yhjx45Bp9NBo9HA2dkZvr6+aGtrw9/+9rdr7v/SR9X/+te/oNfr8eOPP3a4iOZKa9euxcGDB9He3g6DwYD169dDo9EgPj6+R9+/JTQaDRQKBfz8/GAwGPDee++hpaXF4sf7+flBLpdf9fM4a9YsbNu2DZs2bepw4V1nGhsbzc/Rli1bUFJSgszMTAQFBWH8+PH461//ipaWFphMJpSXl5uHpfj7+6O2trbDz+rgwYOhUqmwadMmpKenw8PDA/7+/vjhhx/Mhbe77d5111348MMPzUWqubkZW7Zssfg5uZYhQ4ZgwoQJ5mniNBoN3N3d4e7ujpKSkqumWLvytX7nnXfis88+Q05ODoQQaG1txa5du7o8ZqdPn8b+/fuh0+ng7OwMlUrV4SznJTf62rv99tsRGBiIxx9/HEVFRTAajdBqtcjPzzffZ+LEiSgrK8OGDRug1+uh1+uRm5uLkpISABePZ2VlZZf7OHLkCL744gvzJ0clJSXYsWOHRTNAJCQkwMXFBR999BH0ej0OHjyIHTt24NZbb+3yMZ3lUalUyMrKwrPPPouRI0de8xMbIkux8JLduTSzQmZmJlavXo0HHnigyynJzpw5gwceeADJycmYN28e7r77bowZMwYAsGDBAnzwwQdITU3Fxx9/bPH+Z8+ejUWLFmH8+PHQ6XTm+V09PT2xZMkSvPTSS7jpppvg6ura4WPsS8MARo8ejTlz5ly13blz52LWrFmYP38+pkyZAmdnZ7z88ssW57rcyy+/DFdXV0ydOhX33HMPbrvtNsydO/e6tnHpD4MlS5ZgxYoVSE5OxqpVqzB9+nTzfcLCwvCPf/wDa9asQXp6Om6//XbzeL+FCxciJiYGd9xxB9LT07Fs2TKYTCbcfvvtCAsLw4QJEzBjxgwkJSVdM4ezszNWrlyJ9evXIz09HZs3b8bNN9/c5f1dXV3xxhtvYPz48RgzZgw++eQTrFy5sk/mGL3k0iwFWVlZmDx5MlQqlUUf7V6e+dFHH8Xdd9+N1NRU81jS0NBQxMfHQyaTdfgIuzMJCQk4c+YMxowZg3feeQcrVqyAr68vAODNN9+EXq/HrbfeirS0NDz55JPmj87HjBmD6OhoZGRkmIcIABeHNfj4+Ji/j/T0dAghOgwVuNZ2b775ZvzmN7/BM888g5SUFNx22229Oo3YQw89ZC5uCxcuxLfffouUlBS8/PLLVxWwxx9/HIsWLUJqaio2b96MkSNH4s9//jOWLl2KtLQ03HLLLebZRTqj0+nw9ttvY/To0cjIyEBjYyOeeeaZTu97I689lUqFf/3rX4iKisIjjzxinnEjLy8P77zzDoCLn1p9/PHH2Lx5MyZMmICMjAwsW7bM/AfLHXfcgeLiYqSmpuKxxx67ah9eXl7YsWMHZs6cieTkZDz88MOYOnUqfvOb33Sbz9nZGatXr8aePXswZswY/OlPf8Kbb755zU9Ouspz++23o6ioiMMZqNfIRFefExIRdaKwsBDz58/vd3PXOqo//OEPCAoK4sT9ZFeqqqowffp07N27Fx4eHlLHITvAMbxEZDGTyYQtW7bwiul+orKyElu3bpVk+WmivmIymbBmzRrceuutLLvUa1h4ichiEydOREBAQK+vWkfX75133sE///lPLFiwoE+HYxBZU2trK8aPH4+wsDBJllYn+8UhDURERERk13jRGhERERHZNRZeIiIiIrJrLLxEREREZNds5qK1piYNTCbHG27s7+8BtdryCerJvvD4OzYef8fG4++4eOx7Ri6XwdfXvdPbbKbwmkzCIQsvAIf9vukiHn/HxuPv2Hj8HRePfe/ikAYiIiIismssvERERERk11h4iYiIiMiusfASERERkV1j4SUiIiIiu8bCS0RERER2zWrTkmm1Wrz++uvYv38/VCoVkpKS8Oc//9lauyciIiIiB2W1wvvWW29BpVLhhx9+gEwmQ0NDg7V2TUREREQOzCqFV6PRYMOGDdi9ezdkMhkAICAgwBq7JiIiIiIHJxNC9PlSHoWFhXj88cdx88034+DBg3B3d8dTTz2F1NTUvt41ERERETk4q5zhNRqNqKioQHx8PBYuXIicnBw8+uij2Lp1Kzw8PCzahlrd4pDL7AUGeqK+vlnqGCQRHn/HxuPv2Hj8HRePfc/I5TL4+3feK60yS0NoaCiUSiVuu+02AEBiYiJ8fX1RWlpqjd0TERERkQOzSuH18/PD6NGjsXfvXgBAaWkp1Go1Bg0aZI3dExEREZEDs9osDX/605+wePFivPHGG1AqlXjzzTfh5eVlrd0TERERkYOyWuEdMGAA/v3vf1trd0REREREALjSGhERERHZORZeIiIiIrJrVhvSQES2TQiBmsZW5J9uRE1TK1ROCrg4KRDo64rU2EA4KRVSRyQiIuoUCy8RXVOb1oCtRyrwU0411BfaAQDuLkroDCboDSYAwGfbnTAxKRyTU8Lh7aGSMi4REdFVWHiJqFNavRE7jlZi84Ez0LQbMGKIH2aMHYQRkX4I8HEFABhNJhSVn8PWI5X4dl8Zth2txGNzRmD4YD+J0xMREf0fFl4iusqJskb88/uTqDvXhpFD/HH7hEhEhl49jaBCLkfcYD/EDfZDtVqD9zfkY/nnOZifFYOJSeESJCciIroaCy8RmbW26/H5jmL8lFuNIF9XPH93MuIG+Vr02FB/dyyePwofbMzHv74/iYZz7bhjYlQfJyYiIuoeCy8RAQCOnqzDf34sQnOrHtPHDMTs8ZFwdrq+C9FcVUo8dUcCPvmxCJsPnIG/twsmJfNMLxERSYuFl8jBNTVr8b/binD0ZD0GBnng6TsTMSjEs8fbU8jlmH9LLBqbtfjfrUUID3BHzACfXkxMRER0fTgPL5GD0uqM2PRzKf7w4X7kFKsxN3MIXro/9YbK7iVyuQwLZg5HoI8rVq3Pg/p8ey8kJiIi6hme4SXqx4QQqFZrUFbTDCEEZJDBSSlHsJ8bQvxcezT3bUubHvvya/DDoXI0NWuRGhuIOyZGIcjXrVezu7ko8cTckXj1X0fw3vo8vHjfKCgV/BubiIisj4WXqB+qVmuw5WA5Cs80oaGLs6MyGRDs64bBIZ4YHOqFwSGeCPZ1hZe7M2Qymfl+QgjUn29HWfUF5JaocbiwDnqDCdHh3nhk1vA+HW4Q6u+OB6bH4f0N+fjhUDlmjB3cZ/siIiLqCgsvUT9iMJqw+cAZfLuvDEqFHKOGBePWUE8MjfCGk1IOIS7Oj1utbkVVgwaV9S0oLG/CgeO15m2onBTw9VRBABAmAU27Hpp2AwDAxVmBjJGhyEwKw8DgGx+6YInUYUEYFROIjT+XYVRsEEL8evdMMhERUXdYeIn6idrGVqz8Og9VDRqkxwXh7ilDER0ZgPr65qvue2VZbWrWoqKuBXVNrag714ZzLTrIZYBcJoPKWYFBwZ6IDPVCeKC7JMMK7r0lBif+cRBrtxTihXuSIb/sDDQREVFfY+El6gfU59ux7LNj0OpNePrOBCREBVzX4309VfD1VAHw75uAN8jHQ4X/mRyNtVsKsSe7ChM5VRkREVkRryAhkth5jQ7LPjuGVq0Rz92VdN1l11ZMSAhF3CBfrNtVguZWndRxiIjIgbDwEkmotd2Atz87hqYWLX5/Z6LVxtVKQSaT4Z6pQy9Oh7a3TOo4RETkQFh4iST06fYiVDW04om5CYiO8JY6Tp8LD/RAZlIYdv5yFtVqjdRxiIjIQbDwEkkkt6QBe/NqcOvYgRg+2E/qOFYzOyMSKmc51u0skToKERE5CBZeIgm0thvwz+9PIjzAHTPHRUodx6q83J1x29jByC5uwPGyRqnjEBGRA2DhJZLA5ztO4VyLFg/OiIOT0vFehlNTIxDg7YLPdxTDJITUcYiIyM453jstkcROljfhp9xqTB89CJGhXlLHkYSTUoFf3TQEFXUtOHSitvsHEBER3QAWXiIrEkLgqz2n4ePhjFnjB0sdR1Lp8cGICPTAhj2lMBhNUschIiI7xsJLZEUFpY0orjyP28YNhrOTQuo4kpLLZPhV5hDUnWvDz7nVUschIiI7xsJLZCVCCHy95zT8vVwwISFM6jj9QmKUP6LDvbFpbyl0eqPUcYiIyE6x8BJZSXZxA8pqmjFz/GCHvFCtMzKZDHMzh+Bciw7bf6mUOg4REdkpvusSWYFJCGz4qRRBPq4YNyJE6jj9SuxAX4yI9MPm/WfQ2m6QOg4REdkhFl4iK8gtVqOirgWzMgZDqeDL7kpzM6OgaTfgh0PlUkchIiI7xHdeIivYfrQCvp4qpMcFSx2lXxoU4onUYUH48XAFLmh0UschIiI7w8JL1Meq1RoUlDVhYlIYz+5ew5wJkdAbTPh2f5nUUYiIyM7w3Zeoj+345SwUchluSgqXOkq/FurvjvEjQ7Dr2Fk0nG+TOg4REdkRFl6iPtSmNWBvXjXS4oLg7e4sdZx+b3ZGJAAZNv1cJnUUIiKyIyy8RH1oX34N2nVGTBkVIXUUm+Dn5YLJKeHYm1+NqgaN1HGIiMhOsPAS9REhBHb8UonBIZ4YEuoldRybcevYQXB2UmD9T6eljkJERHaChZeoj5wsP4dqdSsmp0RAJpNJHcdmeLk5IyttAI6erEdp9QWp4xARkR1g4SXqI/vya+DirEBaXJDUUWxOVvpAeLg64evdJVJHISIiO8DCS9QHtHojDp+sQ2psEFROCqnj2BxXlRIzxg5CQVkTTpxpkjoOERHZOBZeopRD9CkAACAASURBVD5w7FQ9tDojlxG+AZOSw+HrqcJXu0sghJA6DhER2TAWXqI+sC+/Bv5eKsQM9JE6is1ydlJg1vjBOF11AdmnGqSOQ0RENoyFl6iXnWvRoqC0EWOGh0DOi9VuSEZCKIJ9XfH1ntMwmXiWl4iIeoaFl6iXHTxeCyHA4Qy9QCGXY85NQ3C2QYMDx2ukjkNERDaKhZeol+3Lr0FkqCdC/d2ljmIXUocFYWCQBzb8VAqD0SR1HCIiskEsvES9qLK+BRV1LRg7nGd3e4tcJsOvMqPQcL4de3KqpI5DREQ2iIWXqBcdKayDTAakxQVLHcWujBzih5gBPtj4cyla2w1SxyEiIhvDwkvUi46crEfsAB94uztLHcWuyGQyzJscjeZWPb7dXyZ1HCIisjEsvES95GyDBlUNGoyK5cpqfSEy1AvjR4Zg6+EK1Da1Sh2HiIhsCAsvUS85erIOMgApMYFSR7FbczOjoFTK8cWOYqmjEBGRDWHhJeolRwrrER3hDV9PldRR7JaPhwq3jR2EY6cacLysUeo4RERkI1h4iXpBTWMrKutbkMrhDH3ulrQBCPB2wafbTnGaMiIisggLL1EvOHqyDgAwKpbDGfqak1KBe6bG4GyDBlsPV0gdh4iIbAALL1EvOFJYj6gwL/h5uUgdxSEkDQ1A8tAAbNxbiobzbVLHISKifo6Fl+gG1Z9rw5naZs7OYGX3TI0BAPzv1lMSJyEiov6OhZfoBmWfagAApMQESJzEsfh7u2B2RiSyixtwrKhe6jhERNSPsfAS3aDs4gaEBbgjyNdN6igO5+bUAQgPdMcn24rQruMKbERE1DkWXqIb0NquR1HFOSRG+0sdxSEpFXL8v6xYNF7QYtPeMqnjEBFRP8XCS3QD8k43wmgSSI7m7AxSGRrhgwkJodh6uAKVdS1SxyEion6IhZfoBuQUN8DD1QlDwrykjuLQ7pwUDVeVEv/68SRMQkgdh4iI+hkWXqIeMhhNyC1RIzHaH3K5TOo4Ds3D1Ql3TopCceV5/JxbLXUcIiLqZ1h4iXroVOV5tGoNSIrm7Az9wfiRoYiJ8Ma6ncW4oNFJHYeIiPoRFl6iHsopboBSIcPwSD+poxAAuUyG/zdtGNp1Rny2nXPzEhHR/2HhJeoBIQSyTzVg2CBfuDgrpY5D/xUW4I4ZYwfhwPFa5J1WSx2HiIj6CRZeoh6oVrei7lwbhzP0QzPGDkaovxv+/cNJaHVGqeMQEVE/wMJL1AO5JRfPHiZEcf7d/sZJKcf904ah4Xw7Nvx8Wuo4RETUD7DwEvVA3mk1wgLcEeDtKnUU6kTMAB9kJoXhx8MVOFPTLHUcIiKSmNUK7+TJkzFt2jTMnj0bs2fPxk8//WStXRP1qnadAacqz2HkEF6s1p/dOTEKXm7OWLulEEaTSeo4REQkIatebbNixQrExMRYc5dEve7EmSYYjAIJQzicoT9zc3HCvTfH4P0N+dh6uBLTRg+UOhIREUmEQxqIrlNeiRoqZwWGDvCROgp1Y1RsIJKiA7Dh59OoP9cmdRwiIpKITAjrrMM5efJkeHh4QAiBUaNG4ZlnnoGXF5djJdsihMBDr23FkDBvvPTgaKnjkAXqm9rwu7e2Iy7SH6/8ZgxkMq6KR0TkaKxWeKurqxEaGgqdTofXXnsNGo0Gy5Yts/jxanULTCarRO1XAgM9UV/Pi276i7MNGrz80UH8v2mxmJgU3uf74/HvHduOVOB/t53CglnxGBMfInUci/H4OzYef8fFY98zcrkM/v4end9mrRChoaEAAGdnZ9xzzz345ZdfrLVrol6Td2k6Mo7ftSmTUyIwJMwLn247hZY2vdRxiIjIyqxSeFtbW9HcfPEvFSEENm/ejLi4OGvsmqhX5Z1WIzzQHX5eLlJHoesgl8tw/7RhaG034IsdxVLHISIiK7PKLA1qtRpPPPEEjEYjTCYToqKisGTJEmvsmqjXtGkNKKo4h5vTBkgdhXpgQJAHpo0eiO/2n8HY4cGIG8xp5YiIHIVVCu+AAQOwYcMGa+yKqM+cLD8Ho0lgZCSLkq2aOW4wDp+ow79/LMLSh9KhVHCiGiIiR8Df9kQWKihthLOTHNERnI7MVjk7KXDPzUNR09iKbUcqpY5DRERWwsJLZKH8skYMG+gLJyVfNrYsISoAiVH+2LS3FOdatFLHISIiK+A7N5EFGs61obaxFcM57tMu3DV1KAxGE77cVSJ1FCIisgIWXiIL5Jc1AgCGc/yuXQj2dUNW+kDsy69BceV5qeMQEVEfY+ElskBBaSN8PVUI9XeTOgr1khljB8HXU4VPt5+CldbfISIiibDwEnXDaDLhRFkThkf6cVlaO+LirMTtEyJRWn0BR07WSx2HiIj6EAsvUTfKqpvRqjVgBIcz2J3xI0IRHuiOr3aXwGA0SR2HiIj6CAsvUTcKShshAxA3yFfqKNTL5HIZ7pwYhbqmNuzOrpI6DhER9REWXqJu5Jc1YlCIJzzdnKWOQn1g5BB/DBvog017S9GmNUgdh4iI+gALL9E1tLYbcPrsBc7OYMdkMhnunBSN5lY9vj9YLnUcIiLqAyy8RNdQWN4EkxAcv2vnIkO9MCo2ENuOVkDTrpc6DhER9TIWXqJrKChthMpZgahwb6mjUB+bNT4SbVojth6ukDoKERH1MhZeomsoKG1E3EBfKBV8qdi7AUEeSIkJxNYjlWjlWV4iIrvCd3GiLtQ1taLuXBvH7zqQWeMHo01rwLYjlVJHISKiXsTCS9SFgrImAFxO2JEMDPZEUnQAfjxcwRkbiIjsCAsvURfyT6vh7+WCYF9XqaOQFc3KGIxWrQHbj/IsLxGRvWDhJeqEwWhCYTmXE3ZEg0O8MGKIH7YdrYTewNXXiIjsAQsvUSdKqy+gTWvkdGQOKit9IC5odDh4vFbqKERE1AtYeIk6UVDaCJkMGMblhB1S/CBfRAS648fD5RBCSB2HiIhuEAsvUScKShsRGeoFD1cnqaOQBGQyGW5JG4jKeg2On2mSOg4REd0gFl6iK2ja9ThdfQHDB3M4gyMbHR8ML3dn/HiIC1EQEdk6Fl6iK5woa4IQnI7M0Tkp5ZiSEo6802qcbdBIHYeIiG4ACy/RFQrKGuHirMCQMC+po5DEJiaHw0kpx/YjPMtLRGTLWHiJLiOEQP7pRsQN4nLCBHi6OWN0XDD2H6/lQhRERDaM7+hEl6lraoP6QjuHM5BZZlIYtDojDp7gFGVERLaKhZfoMvmljQA4fpf+z5AwL0QEemD3sSqpoxARUQ+x8BJdpqC0EQHeLgjy4XLCdJFMJsPE5DCcqW1GafUFqeMQEVEPsPAS/ZfBaMKJ8iaM4HLCdIUx8SFwdpJjd/ZZqaMQEVEPsPAS/VfJ2fPQ6owYHukvdRTqZ9xclBgdF4yDx+t48RoRkQ1i4SX6r4KyRshlMsQN8pE6CvVDmUnh0OqNOFBQI3UUIiK6Tiy8RP9VUNqIIWFecHPhcsJ0tchQT0QEeuDnPBZeIiJbw8JLBKClTY+y6mbED/aVOgr1UzKZDONGhKC0+gKq1Vx5jYjIlrDwEgE4XtYIAWDEEI7fpa6NGR4MmQzYz2ENREQ2hYWXCEDeaTXcVEpEhnpKHYX6MR8PFYZH+mF/fg1MQkgdh4iILMTCSw5PCIGC0kbER/pBIedLgq5t3PAQqC9oUVR+TuooRERkIb67k8M7W6/BuRYdRnB1NbJAckwgVM4K7OOwBiIim8HCSw7v0nLCLLxkCZWTAqmxgThSWAet3ih1HCIisgALLzm8vNNqhAe4w8/LReooZCPGjQhFu86IY0X1UkchIiILsPCSQ9PqjDhVeQ7DeXaXrkPsQB/4eqpw8Hit1FGIiMgCLLzk0E5WNMFgFBgxhIWXLCeXyZA2LAj5pY3QtOuljkNERN1g4SWHlne6Ec5KOWIHcDlhuj7pccEwmgR+4bAGIqJ+j4WXHFp+aSNiBvrASamQOgrZmMhQTwR4u+DwiTqpoxARUTdYeMlhNZxrQ21jK0ZEcnU1un4ymQxpcUE4XtaE5lad1HGIiOgaWHjJYV2ajmwkx+9SD6UPC4ZJcFgDEVF/x8JLDivvtBr+XiqE+LlJHYVs1MBgDwT7uuIQhzUQEfVrLLzkkAxGE06cacLwSH/IZDKp45CNujisIRiF5U04r+GwBiKi/oqFlxzS6aoLaNcZOZyBblh6XBCEAI6e5FleIqL+ioWXHFJ+qRpymQxxg1h46cZEBHog1N8NR09yHC8RUX/FwksOKe90I4aEe8HNRSl1FLIDKTGBOFl+Di1tXISCiKg/YuElh3OhVYfymmaM5HLC1EtSYgJhEgI5xQ1SRyEiok6w8JLDOV7aCAFgxBDOv0u9Y3CIJ/y8VJyejIion2LhJYeTX9oID1cnDAr2lDoK2QmZTIbkoYHIL22EVmeUOg4REV2BhZccikkI5Jc2YnikH+RyTkdGvWdUTCD0BhPyTquljkJERFdg4SWHUlHbggsaHUZw/C71sqEDvOHh6oRfTnFYAxFRf8PCSw4lt+TiRUUjOX6XeplCLkdSdAByitUwGE1SxyEiosuw8JJDyT2tRmSoJ7zcnaWOQnYoJSYQbVoDCsubpI5CRESXYeElh9HcqsPpsxeQEBUgdRSyU8MjfaFyUuCXIk5PRkTUn7DwksPI/+90ZAlRHM5AfcNJqcDIKH8cK6qHSQip4xAR0X+x8JLDyC1Rw8vNCYNCOB0Z9Z2UmACc11z8NIGIiPoHFl5yCCaTQP5pNUYO8YdcxunIqO8kDAmAQi7jIhRERP0ICy85hJKq89C0GzCSwxmoj7m5KBE32Be/FNVDcFgDEVG/wMJLDiG3RA25TMb5d8kqUmICUXeuDWfrNVJHISIisPCSg8gtUSM6whtuLk5SRyEHkDw0EDIARzmsgYioX7B64X3vvfcQGxuLoqIia++aHFRTsxYVdS1I5HAGshJvd2dER3hzHC8RUT9h1cJbUFCA7OxshIeHW3O35ODyTqsBgON3yapSYgJRUdeC+nNtUkchInJ4Viu8Op0OS5cuxSuvvGKtXRIBAHKKG+DnpUJ4gLvUUciBpMQEAgDP8hIR9QNWK7zvvvsuZs2ahYiICGvtkgh6gwnHzzQhISoAMk5HRlYU6OOKAUEeOMbCS0QkOaU1dnLs2DHk5+fjueee6/E2/P09ejGRbQkM5EIJPZVdVAetzogJyRE2+zzaam4CMpLC8fnWk3BycYaPp6pH2+Dxd2w8/o6Lx753WaXwHj58GCUlJZgyZQoAoKamBg899BD+8pe/ICMjw6JtqNUtMJkcb07LwEBP1Nc3Sx3DZv30SyWUCjnCfFxs8nnk8bdtseFeMAlgx8EyTEgMu+7H8/g7Nh5/x8Vj3zNyuazLE6RWKbwLFizAggULzP+fPHkyVq9ejZiYGGvsnhxYTokawwb6QOWskDoKOaABQR7w93LBL0X1PSq8RETUOzgPL9mt2qZW1Da2cnYGkoxMJkNyTAAKyprQrjNIHYeIyGFJUnh37NjBs7vU53JLLk5HlsDCSxIaFRMIg9GE/NONUkchInJYPMNLdiuvRI1gPzcE+7pJHYUcWHSENzxcnXDsFGdrICKSCgsv2SWtzojC8nNIGMKzuyQthVyOxGh/5BSrYTCapI5DROSQWHjJLhWUNcJgNCExmoWXpJcyNBCtWgOKKs5JHYWIyCGx8JJdyi5ugKtKgZgBPlJHIUJ8pB+clXIcK2qQOgoRkUNi4SW7YxICuSVqjIj0h1LBH3GSnspJgeGRfvjlVD2EcLz5xImIpMY2QHanrLoZFzQ6JEUHSB2FyCwlJhBNzVqU1XAyeSIia2PhJbuTXdwAmQycf5f6lcToAMhk4GwNREQSYOElu5NT3ICh4RengiLqLzxcnRA7wIfjeImIJMDCS3ZFfb4dFXUtSBzK4QzU/yTHBOJsgwa1ja1SRyEicigsvGRXckounj3j+F3qj5L/+4fYsVM8y0tEZE0svGRXsosbEOTrihA/rq5G/U+AtysGBnvgF47jJSKyKhZeshvtOgMKzzQhMSoAMplM6jhEnUoZGoiSyvM4r9FJHYWIyGGw8JLdOF7WBINRIImrq1E/lhwTCAHO1kBEZE0svGQ3Lq6upsRQrq5G/VhEoDuCfFxx9CQLLxGRtbDwkl24tLrayCF+XF2N+jWZTIZRwwJxoqwJLW16qeMQETkENgOyC6XVF3BBo0MiZ2cgG5A2LAgmIXCsiGd5iYisgYWX7EJOcQPkMhlGDuH4Xer/BgV7IsDbBUc4rIGIyCpYeMkuZJ9SIzqCq6uRbZDJZEgdFoTjZY3QtHNYAxFRX2PhJZvXcL4NlfUtXGyCbEpqbBCMJoFsLkJBRNTnWHjJ5uUUqwEAiZyOjGxIZKgn/L1UOFxYJ3UUIiK7x8JLNi+npAHBvq4I9XeXOgqRxWQyGUbFBqGgtBGt7Qap4xAR2TUWXrJp5tXVOJyBbFDqsP8OayjmxWtERH2JhZdsWkHpxdXVWHjJFg0J84KvpwpHCll4iYj6Egsv2bScS6urRXhLHYXousllMoyKDUR+aSPatBzWQETUV1h4yWZdXF2tgaurkU1LGxYEg9GEnGLO1kBE1FfYEshmlVZdwIVWPacjI5sWFe4NHw9nztZARNSHWHjJZmVfWl0titORke2S/3e2hrzTHNZARNRXWHjJZuUUN2BohDfcXbi6Gtm21NhAGIwm5JaopY5CRGSXWHjJJl1cXU3D2RnILgyN8IG3uzOOnOSwBiKivsDCSzbp0upqSUNZeMn2yeUypMQGIq9EDa3OKHUcIiK7w8JLNimnuAHBfm4I8XOTOgpRr0iLDYLOYEJOCWdrICLqbSy8ZHPatAYUljchKZoXq5H9iBlwcVjDweO1UkchIrI7LLxkc46XNcJgFJyOjOyKXC5Delww8k6roWnXSx2HiMiusPCSzckuboCbSomocK6uRvZlzPBgGIwCR09yqWEiot7Ewks2xWQSyC1RY2SUP1dXI7szOMQTwb6uOFBQI3UUIiK7wsZANuV09QU0t+qRyPG7ZIdkMhlGxwfjZPk5NDVrpY5DRGQ3WHjJpuRcWl1tCAsv2aexw0MgAF68RkTUi1h4yabkFDcgZgBXVyP7FeznhshQTxw4zmENRES9hYWXbAZXVyNHMTo+BOW1LaiobZY6ChGRXWDhJZthXl2NhZfsXHpcEGQyYPcvlVJHISKyCyy8ZDOyixsQ4ueGYK6uRnbOx0OFuEG+2H2sEkIIqeMQEdk8Fl6yCW1aA06WN/HsLjmMMfEhqFG34nTVBamjEBHZPIsL77Zt22AwGPoyC1GXCkovrq7G6cjIUaTEBMJJKceBAs7WQER0oywuvCtWrEBGRgaWLl2KnJycvsxEdJXs4ga4uygRHcHV1cgxuLkokR4fgkOFtTAYTVLHISKyaRYX3k2bNmHt2rVQqVR44oknkJWVhffffx+VlbyogvrWpdXVEqL8oZBzFA45jsyUCDS36nHiTJPUUYiIbNp1tYdhw4Zh4cKF2L17N5YsWYLvv/8eN998M+69915s2rQJJhPPQlDvK6k6j5Y2PacjI4eTGhcEN5WSSw0TEd0g5fU+oLy8HJs2bcKmTZsgk8nw5JNPIjQ0FJ988gl+/PFHvPfee32RkxxY9qkGKOQyjIjk+F1yLE5KBVKHBeLg8Tpo9UaonBRSRyIiskkWF95PPvkEGzduxJkzZzB9+nS8+eabSEpKMt+elZWFcePG9UlIcmzZxQ2IHegDN5fr/vuMyOaNjg/BnpxqHDtVjzHxIVLHISKySRY3iD179uCBBx7AlClT4OzsfNXtrq6uWLlyZa+GI6ptakW1uhUTk8OljkIkidiBPvDzUmF/fi0LLxFRD1k8hjc9PR3Tp0+/quyuWbPG/O+MjIzeS0YEIOdUAwCurkaOSy6TYezwEOSXqnGuRSt1HCIim2Rx4V21alWnX//ggw96LQzRlbKLGxAe6I5AH1epoxBJZtyIEAgBzslLRNRD3Q5p2L9/PwDAaDTiwIEDHZa5rKyshLu7e9+lI4emadejqOI8po8ZKHUUIkmF+rtjSJgX9uZXIyt9AGQymdSRiIhsSreF98UXXwQA6HQ6LF682Px1mUyGwMBAvPTSS32Xjhxa3mk1TEJwOAMRgPEjQvDvH4tQXtuCQSGeUschIrIp3RbeHTt2AABeeOEFvPnmm30eiOiSnGI1vNycEBnmJXUUIsmlxQXj0+2nsDe/moWXiOg6WTyGl2WXrMlgNF1cXS06AHJ+fEsED1cnJEUH4OBxLjVMRHS9rnmGd/r06diyZQsAIDMzs8txY7t27er1YOTYTlWeR5vWwOEMRJcZNyIUR07WI++0GslDA6WOQ0RkM65ZeP/85z+b//3WW2/1eRiiS7JPNUCpkGP4YD+poxD1GyOG+MHTzQn78mpYeImIrsM1C29qaqr53+np6X0ehggAhBDIKW5A/GBfqJy5lCrRJUqFHGPiQ7Djl0q0tOnh4eokdSQiIptg8RjeNWvW4MSJEwCA7OxsTJw4EZMnT8axY8f6LBw5pmp1K+rOtSGRwxmIrjJ+ZAiMJoFDJzgnLxGRpSwuvGvXrkVERAQA4O2338avf/1r/Pa3v8Xrr7/eZ+HIMWUXX1xdLTHKX+IkRP3PwGBPRAR6YG9ejdRRiIhshsWFt7m5GZ6enmhpacHJkydx33334c4770RpaWlf5iMHlF3cgEHBnvDzcpE6ClG/NH5kCEqrL6BarZE6ChGRTbC48IaGhuKXX37B5s2bkZqaCoVCgZaWFigUHGNJvedCqw4lZ88jMZpnd4m6MiY+GHKZjGd5iYgs1O3CE5e88MILePLJJ+Hs7IwVK1YAAHbu3ImRI0f2WThyPHklaggBXoFOdA3eHiqMGOKH/QU1+NVNQyCXc65qIqJrsbjwZmZm4ueff+7wtWnTpmHatGm9HoocV3ZxA3w9VRgY7CF1FKJ+bdyIEKzeWIAT5U2cvo+IqBsWF17g4jje0tJSaDQdx42NHTu228c+9thjqKyshFwuh5ubG15++WXExcVdX1qya3qDCfmljRgbH9zlIidEdFHy0AC4qZTYl1fNwktE1A2LC+/XX3+NpUuXws3NDS4u/3cxkUwmw/bt27t9/BtvvAFPz4vrv2/btg2LFy/G+vXrexCZ7NXJ8iZodUYkDeV0ZETdcVIqkB4XhH0FNZivNcBVdV3nL4iIHIrFvyGXL1+Od999F5mZmT3a0aWyCwAtLS08g0dXyS5ugLOTHHGDfKWOQmQTxo0Mxa7sKhw5WYcJCWFSxyEi6rcsLrxGoxEZGRk3tLMXX3wRe/fuhRACH3300Q1ti+yLEALZxQ0YPtgPTkrO/EFkiagwLwT7umJ/fg0LLxHRNciEEMKSO65ZswYajQaPPfYY5HKLZzPr1IYNG/Ddd9/hH//4xw1th+xHadV5PPn2Ljz5P0m4efQgqeMQ2YzPt57Ef74vxEcv3oxgPzep4xAR9UsWF97MzEw0NDTAyckJPj4+HW7btWvXde84ISEBu3fvhq+vZR9fq9UtMJksimpXAgM9UV/fLHWMPvfN3lJs+KkUf3siA97uzlLH6Tcc5fhT5yw5/g3n2/DCB/tx+4RIzBofaaVkZA18/TsuHvuekctl8PfvfJYni4c0vPXWWz0OoNFocOHCBYSGhgIAduzYAW9v76uKMzmu7OIGRIZ5sewSXacAb1cMG+iDffk1mDluMK+PICLqhMWFNz09vcc7aWtrw1NPPYW2tjbI5XJ4e3tj9erV/MVMAIBzLVqUVjfjVzcNkToKkU0aPzIUH393AsVnz2NoBE8kEBFdyeLCq9PpsGrVKnz77bc4d+4cjh49ip9//hllZWWYP3/+NR8bEBCAL7744obDkn3KKW4AACRFczoyop4YFRuI//xYhL151Sy8RESdsPjqs9dffx1FRUVYtmyZ+czs0KFD8emnn/ZZOHIMOcVqBHi7IDzQXeooRDbJxVmJ1GGBOHSiDlqdUeo4RET9jsWFd9u2bXj77beRnJxsnqUhODgYtbW1fRaO7J9Wb8TxskYkRgdwiAvRDcgYGYp2nRFHi+qkjkJE1O9YXHidnJxgNHY8c9DY2MgLz+iGnChrgs5g4nAGohsUM8AHQT6u+Dm3WuooRET9jsWFd9q0aVi4cCEqKioAAHV1dVi6dClmzJjRZ+HI/mUXN8DFWYHYgfzDiehGyGQyjB8ZgsLyc6g71yZ1HCKifsXiwvv73/8eAwYMwKxZs3DhwgVkZWUhMDAQv/vd7/oyH9kxkxDIKWnAiCH+UCpubDETIro4W4MMwL48nuUlIrqcxbM0lJeXIzIyEo888giMRiOmTp2K2NjYvsxGdu5MTTPOt+iQFO0vdRQiu+Dn5YL4wb7Ym1eDWRmRkHNcPBERAAvO8Aoh8Ic//AEzZ87E3//+d+zcuRPr1q3DnDlz8Ic//AEWLtRGdJXsUw2QyYCEKI7fJeot4xNCob7QjsIzTVJHISLqN7o9w/v555/j0KFD+Pzzz5GQkGD+em5uLp599ll89tlnuPvuu/s0JNmn7OIGDA33hoerk9RRiOxGytBAuKqU+DmvGvGD/aSOQ0TUL3R7hnfjxo146aWXOpRdAEhISMDixYuxcePGPgtH9kt9vh0VdS1IHMqzu0S9ydlJgTHxwTh6sh6t7Qap4xAR9QvdFt6SkhKkpaV1eltaWhpKSkp6PRTZv5wSrq5G1FcyEkKhN5hwqJDzpBMRARYUXqPRCA8Pj05v8/DwgMlk6vVQZP+yTzUg2NcVof5cXY2otw0O8UR4gDv2ck5eIiIAFozhNRgMOHDgQJcXp125GAVRd9q0BhSWN2HKqAipoxDZpYtz8obii53FqGrQICyAf1gSkWPrtvD6+/tj8eLFXd7u58eLIuj6HC9rhMEoOJyBqA+NHRGCL3eVYG9eNe6cFC11Pi9yVAAAIABJREFUHCIiSXVbeHfs2GGNHORAsk81wN1FiegIb6mjENktb3dnJET5Y19+DX6VOQQKORd3ISLHxd+AZFUmk0BOiRojo/z5BkzUxzISQnFeo0Pe6UapoxARSYqNg6yqpOo8Wtr0HM5AZAUJUf7wcnfGnuwqqaMQEUmKhZesKru4AQq5DCMiuZwwUV9TKuSYkBCKnJIGNDVrpY5DRCQZFl6yqpxiNWIG+MDNpdvh40TUCyYkhkEI4KdcnuUlIsfFwktW03CuDVUNGiRyOAOR1QT5uGL4YF/8lFMFk6nz6SWJiOwdCy9ZTe5pNYCL4wqJyHoyk8KhvqBFfikvXiMix8TCS1aTW6JGkI8rgn1dpY5C5FCShgbAy80Ju7PPSh2FiEgSLLxkFTq9EYVnmpAQ5Q+ZTCZ1HCKHolTIMT4hFDnFal68RkQOiYWXrKKw/Bx0BhOHMxBJ5KbEMJiEwM951VJHISKyOhZesoq8EjWclXLEDvSROgqRQwr2dUPcIF/sya6CSfDiNSJyLCy81OeEEMg93YC4Qb5wUir+f3t3Hl9leaB9/DpLcrLv+86WECDsm+wCCgiIa7GOaIdXWltbP7Wtlc50pq+2taXtdKZWO9Z3xmn1dbRaLSrYIgqyieyyJYGQnSSQPSF7cs7z/gHmlUEwQHKenHN+38/HJiHnnOdK7lgv7tzPfZsdB/BZc8cnqa65Q7ncvAbAx1B4MeDO1LepprGD5QyAySZmxio0yE/bOHkNgI+h8GLAHSk8vx1ZDoUXMJXdZtXMnER9cqpWjS3cvAbAd1B4MeCOFNYpOSZYMeFsRwaYbc64JDldhnZx8xoAH0LhxYBq7+zRyfJGZneBQSIhKkgj0yK0jZvXAPgQCi8GVG5Jg5wuQ2OHUniBwWLu+GTVNnHzGgDfQeHFgDpaVKtAh03DU8LNjgLggomZsQoL8tMHB06bHQUA3ILCiwFjGIaOFNZpdEaU7DZ+1IDBws9u1dzxyTpSWKfqxnaz4wDAgKOFYMCUV7eosaWL9bvAIDRvQrKsVou2MMsLwAdQeDFgPt2OjPW7wOATGerQpKxY7ThSpY6uHrPjAMCAovBiwBwpqlN6QqjCQxxmRwHwORZMSlF7Z492Hz9rdhQAGFAUXgyIlvZuFVY0MbsLDGLDk8OVFh+iLQdOy2CLMgBejMKLAXG8uF6GIY4TBgYxi8WiBZNSVFHbqrzSBrPjAMCAofBiQBwprFVIoJ+GJIaZHQXAFUwfFa+wID+9t6/c7CgAMGAovOh3LsPQseJ6jRkaJavVYnYcAFfgZ7dp/sQUHSmsU2Vtq9lxAGBAUHjR78rPtuhcW7dGZ0SZHQVAH8ybmCw/u1Xv7SszOwoADAgKL/rd8ZLzx5WOHkLhBTxBWJC/Zo5J0EfHzqqptcvsOADQ7yi86HfHi+uVHBusCLYjAzzGTVNS1eN0aetBDqIA4H0ovOhXnd1OFZxuZDkD4GESo4M1fniMthysUFe30+w4ANCvKLzoVwXljepxGhrDcgbA4yyamqqW9m7tPFpldhQA6FcUXvSrY8X1stssGpEaYXYUAFcpMzVCw5LC9Lc9ZXK6XGbHAYB+Q+FFv8otqdeIlAg5/GxmRwFwlSwWi265IV21TR3am1ttdhwA6DcUXvSbxpZOna5pZXcGwIONGx6j5NhgvftxqVwcNwzAS1B40W9yP92OjBvWAI9ltVh0y/R0VdS26vCpWrPjAEC/oPCi3xwvrldokJ9S40PMjgLgOkzNjlNMeIA27i6VwSwvAC9A4UW/MAxDx0saNCojSlYLxwkDnsxmtWrJtDQVVTYrr7TB7DgAcN0ovOgXp2ta1dzapVEZkWZHAdAPZo1NVGSoQ2/tLGaWF4DHo/CiXxwvZv0u4E387DbdMj1dBaeblMssLwAPR+FFvzheUq+kmGBFhQWYHQVAP5kzLun8LO8OZnkBeDYKL65bd49TJ8sbWc4AeBk/u1XLbkjXqYom5ZYwywvAc1F4cd1Onm5Sd4+L44QBLzRrbJKiwhxav7OIWV4AHovCi+uWW1wvm9WirFRmeAFvc36WN0OFFc29a/UBwNNQeHHdjhfXa0RKuBz+HCcMeKNZYxMVHebQenZsAOChKLy4Ls2tXSqrbtEodmcAvJbdZtXSGRkqqmzW0SJmeQF4HgovrkvvccKs3wW82qycREWHBegt1vIC8EAUXlyX48X1Cg6wKz0+1OwoAAaQ3WbV8pkZKq46pyOFdWbHAYCrQuHFNTMMQ7mlDcrOiJLVynHCgLebMSZBMeEBnL4GwONQeHHNqhva1XCuU6PS2Z0B8AV2m1XLZmSo5Mw5fVJQa3YcAOgzCi+uWd6F40azKbyAz5iZk6D4qCC9ub1ILhezvAA8A4UX1yyvtEGRoQ7FRQaaHQWAm9isVt0+e4gqalu1+/gZs+MAQJ+4pfA2NDRozZo1WrRokZYvX65vfvObqq9naxtPZhiG8ssaNDItUhYL63cBXzJ5ZJzS40P11s5idfe4zI4DAF/ILYXXYrHowQcf1KZNm/TOO+8oNTVVv/rVr9xxaQyQitpWnWvrZjkD4IOsFovunDtUtU0d2vZJhdlxAOALuaXwRkREaNq0ab0fjx8/XpWVle64NAbIp+t3R6ZHmJwEgBlGD4nSyLQIbfioRB1dPWbHAYArcvsaXpfLpVdeeUXz589396XRj/JLGxQbEaCYcNbvAr7IYrHozrnD1NzWrc37ys2OAwBXZHf3BX/84x8rKChI991331U9Lzo6ZIASDX6xsYPrUAeny9DJ002aOTZp0GXzRnyPfdtgHv/Y2FBNO1ihTfvKdddNIxUW7G92JK8zmMcfA4ux719uLbzr1q1TaWmpnnvuOVmtVze5XFfX4pNb4MTGhqqm5pzZMS5ScqZZre3dyogPHnTZvM1gHH+4jyeM/7Lpadp7/Ixe2nBcX5o/3Ow4XsUTxh8Dg7G/Nlar5bITpG5b0vDrX/9ax44d07PPPit/f2YBPFnv+t00blgDfF1ybIhuGJOgDw6eVn1zh9lxAOBzuaXwFhQU6Pe//72qq6t1zz33aMWKFXr44YfdcWkMgLzSBiVGBykixGF2FACDwG2zhsjlMvT2rhKzowDA53LLkoYRI0boxIkT7rgUBliP06WC8ibNzEkwOwqAQSImIlDzJiRr68EKLZ6WpoSoILMjAcBFOGkNV6Wk6pw6u53svwvgIstmZMjPbtVftheZHQUALkHhxVXJK62XRVIW63cBfEZ4sL9umpKqffnVKj3DzTYABhcKL65KXmmDUuNCFBLoZ3YUAIPM4qlpCg6w641thWZHAYCLUHjRZ909Tp2qaNZIljMA+BxBAXYtvSFDx4rrlX9hNxcAGAwovOizUxXN6nG6WL8L4LLmT0xWZKhDb2wrlGH43t7pAAYnCi/6LK+0QVaLRZmpEWZHATBI+fvZtGLWEBVWNuvgyVqz4wCAJAovrkJ+aYMyEkMV6HD7idQAPMjMnAQlRgfpz9sK1eN0mR0HACi86JuOrh4VVzWznAHAF7JZrbpr3jCdrW/TjiNVZscBAAov+qbgdJOcLoMb1gD0yfjhMcpMCddbO4rU3tljdhwAPo7Ciz7JK22QzWrR8ORws6MA8AAWi0V3zx+u5rZubdpbZnYcAD6Owos+yStt0LCkMDn8bGZHAeAhhiWFa/LIOG3aW67Glk6z4wDwYRRefKG2jm6VnT3HcgYAV+3OuUPV43Tp7Z3FZkcB4MMovPhCJ8obZRjihjUAVy0+MkjzJiRr++EqVda2mh0HgI+i8OIL5Zc2ys9u1dAk1u8CuHrLZ2bI38/KkcMATEPhxRfKL2vQ8ORw+dn5cQFw9cKC/HXL9HQdKqjVyfJGs+MA8EE0GFxRS3u3yqtbNDKN09UAXLubpqQqIsRfr289xZHDANyOwosrOlHWIEncsAbgujj8bLp99lAVVjbrwIkas+MA8DEUXlxRfmmjHH42DUkMMzsKAA83MydRyTHBHDkMwO0ovLiivLIGjUgJl93GjwqA62O1WnTXvGGqbmjXtk8qzY4DwIfQYnBZTa1dqqxtZTkDgH4zdli0RqZF6O1dxRw5DMBtKLy4rN71u2kUXgD9w2Kx6O4bh+tcW7f+uocjhwG4B4UXl5Vf2qAAf5vSE0LMjgLAiwxJDNPU7Di9t7dMDec4chjAwKPw4rLyyhqVmRohm5UfEwD96865w+QyDL3JYRQA3IAmg8/VcK5TZ+vbWM4AYEDERgTqpsmp2nXsjErONJsdB4CXo/Dic+VfWL+bzQ1rAAbI0hsyFBrkp1ffL+AwCgADisKLz5Vf2qAgh12pcazfBTAwggLsum32UJ083aSDJzmMAsDAofDic+WXNSgrLUJWq8XsKAC82Jxx5w+jeG3rKXX3cBgFgIFB4cUl6po6VNPYwf67AAaczWrVygXDVdPYoQ8OnDY7DgAvReHFJXrX73LDGgA3GDMkWjlDo/XORyVqbusyOw4AL0ThxSXyShsUEuinpNhgs6MA8BEr5w9XZ5dTb+0sNjsKAC9E4cVFDMNQflmDRqZFyGph/S4A90iKCda8CUnadqhSFbWtZscB4GUovLhITWO76ps7Wb8LwO1WzBoih79Nr205ZXYUAF6GwouL5Jc1ShIHTgBwu9Agfy2fkaGjRXU6VlRndhwAXoTCi4vklzYoPNhfidFBZkcB4IMWTEpRXESg/rTllJwutikD0D8ovOhlGIbyLuy/a2H9LgAT+NmtuvvGYaqobdX2w1VmxwHgJSi86HWmvk1NLV2s3wVgqomZscpMjdD6HUVq6+gxOw4AL0DhRa9P1++y/y4AM1ksFt2zYLha2rq1cXeJ2XEAeAEKL3rllzYoMtShuMhAs6MA8HEZCWGaMSZBm/eXq7qx3ew4ADwchReSzq/fPVHWoJFpkazfBTAo3DF3mKxWi/78YaHZUQB4OAovJEmVta1qbuvWyPQIs6MAgCQpMtShJdPStT+/WifLG82OA8CDUXghifW7AAanxVPTFBnq0J+2FMhlGGbHAeChKLyQJOWVNigmPEAxEazfBTB4OPxtumPOUBVXndOe42fNjgPAQ1F4Iddn1u8CwGBzw5gEpSeE6s/bCtXZ7TQ7DgAPROGFTle3qLWjh/W7AAYlq8WiLy8YoYZzndq0t8zsOAA8EIUXyi9tkCRmeAEMWpmpEZqUFat3Py5Vw7lOs+MA8DAUXii/rFFxkYGKCgswOwoAXNbd84bJ5TL0l+1FZkcB4GEovD6ux+lSflmDRmVEmR0FAK4oLjJICyelatfRKpWeOWd2HAAehMLr44qrmtXR5dSodJYzABj8ls1IV3Cgn179oEAG25QB6CMKr4/LLWmQRVJ2BoUXwOAXFOCn22cP0YnyRh08WWN2HAAegsLr446X1CsjMVTBAX5mRwGAPpkzPknJscH605ZT6u5hmzIAX4zC68PaO3tUVNHM+l0AHsVmteqeBSNU29Sh9/aVmx0HgAeg8PqwE2WNchkGhReAxxmdEaXxw2O0YXepmlrYpgzAlVF4fVhuSb387VYNTw43OwoAXLWV84erp8elN9imDMAXoPD6sOMl9cpMjZCfnR8DAJ4nPipICyenaNcRtikDcGU0HR9V39yhqro2ljMA8GjLZwxRSJCf/vv9k2xTBuCyKLw+Ku/CccKj2I4MgAcLCrDr9jlDVXC6Sfvyq82OA2CQovD6qOMl9QoL8lNKXIjZUQDguswZm6SU2BC9vvWUurrZpgzApSi8PsgwDOWWNCg7I0pWi8XsOABwXaxWi768cITqmju1iW3KAHwOCq8PqqhpVXNrF8sZAHiN7PRITcyM1cbdJapr6jA7DoBBhsLrg3JL6iWd38cSALzFyvnDJUN69YMCs6MAGGQovD7oeEmDEqKCFBUWYHYUAOg3sRGBWjYjQwdO1uhIYZ3ZcQAMIhReH9PjdOlEeQOzuwC80qKpaUqICtLLm09wAxuAXhReH1NY0aSubhfrdwF4JT+7VffdnKmaxg69+3Gp2XEADBIUXh9zvKRBVotFWWkUXgDeaVRGlKaNite7H5fpbEOb2XEADAJuKbzr1q3T/PnzlZWVpZMnT7rjkriM3JJ6DUkKVVCA3ewoADBgVs4fLrvNopff4wQ2AG4qvAsWLNDLL7+s5ORkd1wOl9Ha0a3iqmbW7wLwehEhDt0+Z6iOFdfrwIkas+MAMJlbCu/kyZOVmJjojkvhCvJLG2UY53/dBwDebv7EZKXFheiVDwrU3tljdhwAJvKY32tHR/vuEbixsaH98jpF24sU6LBp2rhk2W0s3/YU/TX+8EyM//X51j0T9NjTO/T+oUqtXj7a7DhXjfH3XYx9//KYwltX1yKXy/fWYcXGhqqm5tx1v45hGNqfe0aZKRFqqG/th2Rwh/4af3gmxv/6RQf5ac64JL21rVA5GRHKSAgzO1KfMf6+i7G/Nlar5bITpEzz+YizDe2qaexQzrBos6MAgFt96cZhCg320wsb89XjdJkdB4AJKLw+4uiFU4dyhlJ4AfiWoAA/3b8oS6drWvTubvbmBXyRWwrvT37yE82ZM0dnzpzR3//932vp0qXuuCw+42hRnRKighQbEWh2FABwuwkjYjV9VLze+ahEp6tbzI4DwM3cUnh/+MMfavv27crNzdWuXbu0ceNGd1wWF3R1O3WivFFjhrI7AwDfde9NmQoOsOs/N+axtAHwMSxp8AH5ZY3q7nFpLMsZAPiwkEA/rVo0UqVnz+ntXcVmxwHgRhReH3C0qE7+dquy0iLMjgIAppqUFatZYxO1cXepCk43mh0HgJtQeH3A0aI6ZaVFys9uMzsKAJjuywtGKCY8QP/nnVwOpAB8BIXXy51taFN1Q7tyWL8LAJKkQIdda5aPVl1zh17efNLsOADcgMLr5Y4V1UsS++8CwGcMTw7X8hkZ+ujYGe06WmV2HAADjMLr5Y4U1ikuIlDxkUFmRwGAQeXWmUM0Mi1CL206oYoatioDvBmF14t1djmVV9qgscOZ3QWA/8lqteirt45WgMOu360/po4u1vMC3orC68WOl9Srx+nS+OExZkcBgEEpIsShry4fpTN1bXpp0wkZhmF2JAADgMLrxT45VatAh02ZqWxHBgCXMyojSitmDdHu42f1/v7TZscBMAAovF7KZRg6UlinMUOiZbcxzABwJctmZmjCiBj9acsp5ZXUmx0HQD+jCXmpkqpzam7tYjkDAPSB1WLRg8tGKSE6SP/+1nHVNLabHQlAP6LweqlPTtXKYmE7MgDoq0CHXd+6I0cul6HfvnGEQykAL0Lh9VKHT9VqRHK4QgL9zI4CAB4jPipID902WpW1bfr3t47J6XKZHQlAP6DweqG6pg6VV7do3AiWMwDA1RozJFqrFmXqWFG9Xt5cwM4NgBewmx0A/e9wYa0ksX4XAK7R3PHJqm5s118/LlNsRICWTEs3OxKA60Dh9UKfFNQqLjJQCVGcrgYA1+rOucNU29ih17cWKizIXzNzEs2OBOAasaTBy7R2dCuvtEGTMmNlsVjMjgMAHuvTnRuy0yP1X+/m65NTtWZHAnCNKLxe5pOCWjldhiZmxZodBQA8np/dqm/ekaO0+BD9+/pjOlneaHYkANeAwutlDpyoUWSoQ0MSw8yOAgBeIdBh17e/NE7RYQH6zZ8Pq7iq2exIAK4ShdeLdHT16FhxvSZlxsrKcgYA6DdhQf763j3jFRzgp3959ROVnjlndiQAV4HC60WOFNapx+nSJJYzAEC/iwoL0Pe/PEGBDpt+9eohlVe3mB0JQB9ReL3IgRM1Cgvy04iUCLOjAIBXiokI1GNfniB/P5t++cohZnoBD0Hh9RJd3U4dKazThMxYWa0sZwCAgRIXGaTH750gh59Vv3jlkE5VNJkdCcAXoPB6ieMl9ersdrKcAQDcIC4ySGv/bpJCg86v6c0rbTA7EoAroPB6if35NQpy2DUyLdLsKADgE6LDA7T27yYqJjxA//raJ9qXX212JACXQeH1Ap3dTh0sqNGkrFjZbQwpALhLRIhDj//dRGUkhum59cf03r5ysyMB+By0Iy9w+FStOrucmj46wewoAOBzQgL99L2V4zUxM1avflCgV94vkNPlMjsWgM+g8HqBj4+fVWSoQ1lp7M4AAGbw97Pp67eN0cLJKdq8v1z/9voRtXZ0mx0LwAUUXg/X0t6to0V1mpYdz2ETAGAiq9Wiexdm6itLRiq/tEE//uN+VdSwVy8wGFB4Pdy+/Go5XYamj443OwoAQNKccUl6/N6J6uhy6scv7tfOI1UyDMPsWIBPo/B6uI+Pn1FSTLBS40LMjgIAuGB4Srh+9JUpGpoYphfezdP/2ZCr9s4es2MBPovC68Fqm9pVcLpJ00fFy8JyBgAYVCJDHfrePRN02+wh2pN7Vj96Ya/ySurNjgX4JAqvB9uTe1aSNG0UyxkAYDCyWi26deYQrf27ibJZLfrlq5/oxU0nmO0F3IzC66FchqEdR6qUmRKu2IhAs+MAAK5gREqE/vfqqVo0NVXbDlXoh/+xR3tyz7K2F3ATCq+HOlHaoOqGds0dn2x2FABAHzj8bFo5f4T+4f5JCgvy1+/fPq5fvnJI5dXs5AAMNAqvh9p2uFLBAXZNyoo1OwoA4CoMSwrXPz0wWasWZam8ukX/+4W9ev6d46puaDM7GuC17GYHwNVrbu3SgRM1mj8xRf5+NrPjAACuktVq0Y0TkjVlZJz+uqdUH+w/rX151Zo9LknLZ2QoMtRhdkTAq1B4PdCuY1VyugzNHZ9kdhQAwHUICfTT3fOG66bJqXrnoxJt/6RSu45WacHEFN23dJTZ8QCvQeH1MC7D0LZPKpWZEq6kmGCz4wAA+kFEiEOrbs7SoqlpentnsTbtLdO2wxWaNyFZi6amKSzI3+yIgEej8HqYT29WWzFziNlRAAD9LC4iUA8uG6Ul09O1ef9p/e3jMn1w4LTmT0jR4mlpCgum+ALXgsLrYbYcrOBmNQDwcskxwXps1WTdPDlFG3aXaNO+Mm05eFrzJiRrybQ0hYewxhe4GhReD1JV16qDJ2u0dEY6N6sBgA9IignWV5eP1vIZGdq4u1Sb95dr66EKzR2fpCXT0rm5DegjCq8H2bS3TDabVQsnpZodBQDgRonRwXpw2Sgtn5mhDR+VaMuBCn14qFJzxyVpyfQ0RYUFmB0RGNQovB6isaVTHx07o1ljk1jDBQA+Kj4ySP9r6SgtnzlEGz8q0YefVGjb4QrNHpukpTekU3yBy6DweojN+8vldBlaPJXZXQDwdXERgfr7W7LPL3X4uFTbD1dqx5Eq3TghWUtvSGdiBPgfKLweoK2jRx8eqtDkrDjFRQaZHQcAMEjERATqgcUjtfSGdL29q0TvHyjX9sOVumlKihZPTVNQgJ/ZEYFBgcLrAT78pELtnU7dMj3d7CgAgEEoJjxQq2/J1pJpaVq/o1gbPirVlgMVWjI9TQsnpcrhz43O8G0U3kGuubVL7+4uVc7QaKUnhJodBwAwiCVGB+vrt43R0rPn9Ob2Ir2xrUib95/WshvSNXd8svzsVrMjAqag8A5yf9p8Qu1dPfrSjcPMjgIA8BBp8aH69t3jdOp0k97YVqj/fr9Am/aW6daZQzQjJ0E2K8UXvoWf+EHsbH2bNu4q1pxxSUqODTE7DgDAwwxPCdf3752g764cr7Bgf/3XX/P1w//Yq715Z+UyDLPjAW7DDO8g9ucPC+XvZ9VtszhGGABwbSwWi0YPidKojEgdKqjVX7YX6bm3jit5V4mWTE/T1Ox42W3Mf8G7UXgHqZPljTpwskb3LR7JEZIAgOtmsVg0MTNW44fHaG/eWW38uFT/sSFPf9lepIWTUzV7bCK7OsBrUXgHoa5up/74t3xFhjq0Yu4wnWtqNzsSAMBLWK0WTR+doGmj4nW4sE5//bhUf9pySn/ZUaQZYxI1b3yS0uK5SRrehcI7CL2xrUhVdW367srxCvC365zZgQAAXsdisWj88BiNHx6j0jPn9P6Bcu08UqUPD1UoLT5Es8cmacrIOA6xgFeg8A4yuSX12ry/XAsmpmj0kCiz4wAAfEB6Qqj+19JRWjl/hD4+fkY7j1bp5c0n9d/vn1RWaoQmZcVpYmasIkNZYgfPROEdRNo6uvWfG/OUEBWku9iGDADgZiGBflo4OVULJ6eqvLpF+/OrdeBkjV7efFIvbz6pYclhmpQZp/EjYhQfGSiLxWJ2ZKBPKLyDhNPl0n9syFNTS5f+8f5JcvhxKg4AwDypcSFKjQvR7XOGqrK2VQdOVOvAiRq9tvWUXtt6SjHhAcoZFq2cIdEamR6hAH8qBQYvfjoHAcMw9NKmk/rkVK1W3ZypIYlhZkcCAKBXUkywkmKGaPnMIapubNexojodK6rXrqNV2nqwQnabRSNSIpQzNFpjhkYpOSaY2V8MKhTeQeDtXSXafrhSy2ak68aJKWbHAQDgsuIiAjV/YormT0xRd49LBacbdayoXkeL6y7M/kqRoQ7lDI3SmCHRGpURpaAA6gbMxU+giQzD0Ka95XprZ7Fm5STq9tlDzY4EAECf+dmtGpURpVEZUfqShqu+uUPHiut1tKhO+/Krtf1wlawWi4YkhWpU+vnDL4YmhcvPzkEXcC8Kr0l6nC793/dOaPvhKk3KitX9i7P49Q8AwKNFhQVozrgkzRmXpB6nS0WVzTpWXKfckgZt2F2idz4qkb+fVZkpEcrOiNSIlAilx4dSgDHgKLwmaG7t0u/WH9PJ8kYtm5Gu22YPlZWyCwDwInabVZmpEcpMjdAdc87vRHSirFG5pQ3KLanX61sLLzzOovT4UA1LDtfQpDANTw5XZKiDSSD0KwqvGzldLm09WKH1O4rV1ePSV5eP0vTRCWbHAgBgwAUF+GlCZqwmZMZKkppaOnWqolmFlU0qrGjS1kMVem9f+fnHOuwXbpQLVvKFt0mWfCP4AAAPfklEQVQxwQoP8WeCCNeEwusGPU6XDp+q1Vs7i3W6plWjMiJ178JMJcUEmx0NAABThIc4NCkrVpOyzhfgHqdL5dUtKqpsVkVtqyprW3XwZI22H67sfY7dZlV0eIBiwhyKDg9UTHiAosMDFBHiUESIv8KDHQp02JgdxiXcVniLi4u1du1aNTY2KiIiQuvWrVNGRoa7Lu92LsPQ6eoW7T9Rox1HKtXU0qWY8AA9fPsYTcyM5V9GAAA+w26zakhi2EVbcxqGoXNt3aqobVVVXatqmzpU29ShuqYOlRfUqLmt+5LX8fezKiLYofAQf4VfKMIRIQ6FB194G+Kv0CB/hQTaZbOydthXuK3w/uhHP9K9996rFStW6K233tI///M/68UXX3TX5QdUj9OlhnOdqqxtVWVdq0qqzimvtEEt7d2ySMoZFq15i5M1dmi0rFaKLgAAfWGxWBQW7K+wYH9lp0de8vnObqfqmzvU2NKlppZONbZ0qbGlU02t5z8+Xd2iY0Wd6uhyfu7rBwfYFRLkr9AgP4UG+p1/G+Sv4AA/BTpsCvC3K8DfpkDH+bcOf5vsVqvsNotsNqtsVovsF966DEOGcb6kX/z+/3/rchnn/zHOv3Ve5v2zzZ1qaGiT1Wo5/4/FIqtVF95aet/2Xt9m6c1lt1npGp/DYhiGMdAXqaur06JFi7Rnzx7ZbDY5nU5NmzZN7733nqKiovr0Gg0NrXK5BjyqJKmjy6mPj59RR5dTTqehHpdLTpehHqdLTqehzm6n2rt61N7Zo+bWbrV1XPw3zPAQh4YlhWlESriGp0QoPNj/mrNER4eorq7ler8keCjG37cx/r6N8e8/Xd0uNbd1qrm1S+fautXa0aPWjm61tnerpb1HbR3daunoVuuF951u6hsDxWLRhSJ+oQzbrLJ++mc2i2yflmPrZ4q71SqrzXK+zPf+ufXCYyy9Jdpy4X8+/chy4XqfXvj8xxblDI1SVFiAW79uq9WiyMjPXy7qlhneqqoqxcfHy2Y7f1yuzWZTXFycqqqq+lx4L/cFDJQ7E8Pder0riY4OMTsCTMT4+zbG37cx/v0n0ewAMBWLVwAAAODV3FJ4ExMTdfbsWTmd59fQOJ1OVVdXKzGRv28BAABgYLml8EZHRys7O1sbNmyQJG3YsEHZ2dl9Xs4AAAAAXCu33LQmSYWFhVq7dq2am5sVFhamdevWaejQoe64NAAAAHyY2wovAAAAYAZuWgMAAIBXo/ACAADAq1F4AQAA4NUovAAAAPBqFN5BoLi4WCtXrtSiRYu0cuVKlZSUXPIYp9OpJ554QgsXLtRNN92k119/3f1BMSD6Mv47d+7UHXfcoTFjxmjdunXuD4kB05fxf/bZZ7V06VItX75cd9xxh3bs2OH+oBgQfRn/N954Q8uXL9eKFSu0fPlyvfjii+4PigHRl/H/VFFRkcaNG8d/A66VAdOtWrXKWL9+vWEYhrF+/Xpj1apVlzzmL3/5i7F69WrD6XQadXV1xuzZs43y8nJ3R8UA6Mv4l5SUGLm5ucavf/1r4+c//7m7I2IA9WX8t2/fbrS1tRmGYRh5eXnGpEmTjPb2drfmxMDoy/ifO3fOcLlcve/PmzfPyMvLc2tODIy+jL9hGEZPT49x3333Gd/5znf4b8A1YobXZHV1dcrNzdWyZcskScuWLVNubq7q6+svety7776ru+++W1arVVFRUVq4cKH+9re/mREZ/aiv45+enq7s7GzZ7XYzYmKA9HX8Z8+ercDAQElSVlaWDMNQY2Oj2/Oif/V1/ENCQmSxWCRJHR0d6u7u7v0Ynquv4y9Jzz//vObNm6eMjAw3p/QeFF6TVVVVKT4+XjabTZJks9kUFxenqqqqSx6XlJTU+3FiYqLOnDnj1qzof30df3inaxn/9evXKy0tTQkJCe6KiQFyNeP/wQcfaOnSpbrxxhv14IMPKisry91x0c/6Ov75+fnauXOnvvKVr5iQ0ntQeAHAQ+zdu1e/+c1v9C//8i9mR4GbLViwQBs3btSmTZv01ltvqaioyOxIcIPu7m790z/9k5544oneYoxrw+9HTZaYmKizZ8/K6XTKZrPJ6XSqurpaiYmJlzyusrJSY8eOlXTpjC88U1/HH97pasb/0KFDeuyxx/S73/2OY9m9xLX8+5+UlKScnBx9+OGH/Bx4uL6Mf01NjcrKyvTVr35VktTc3CzDMNTS0qIf//jHZkX3SMzwmiw6OlrZ2dnasGGDJGnDhg3Kzs5WVFTURY9bvHixXn/9dblcLtXX1+v999/XokWLzIiMftTX8Yd36uv4HzlyRI8++qiefvppjR492oyoGAB9Hf/CwsLe9+vr67Vnzx5lZma6NSv6X1/GPykpSXv27NGWLVu0ZcsWPfDAA/rSl75E2b0GFsMwDLND+LrCwkKtXbtWzc3NCgsL07p16zR06FCtWbNGjzzyiHJycuR0OvXkk09q165dkqQ1a9Zo5cqVJidHf+jL+O/fv1/f+c531NLSIsMwFBoaqp/+9KeaPXu22fFxnfoy/nfeeacqKioUHx/f+7xf/OIXrOP0An0Z/6eeekq7du2S3W6XYRi6++67tWrVKrOjox/0Zfw/67e//a3a2tr0+OOPm5TYc1F4AQAA4NVY0gAAAACvRuEFAACAV6PwAgAAwKtReAEAAODVKLwAAADwahReABgE9uzZozlz5lzTc5977jn94z/+4zU99+2339bq1at7P87KylJpaek1vVZlZaUmTJggp9N5Tc8HgIFC4QXgM1atWqXXX3/d7BjX5P3339eKFSs0ceJETZs2Tffff7/Ky8slSQ899JB++tOfXtPr3nrrrXrhhRf6JWNSUpIOHTrUewSqJ3+/AXgXjhYGADfr6emR3d73//stLS3V448/rmeeeUbTp09Xa2urdu3a1VssB4Or/ZoAwJ2Y4QXgc5qamvS1r31N06dP15QpU/S1r31NZ86c6f18Y2OjfvCDH2jWrFmaMmWKvvGNb/R+7rMzrQsXLtT27dslSW+88YaWLFmiCRMmaMGCBXr11Vd7n/PpcoXnn39eM2fO1A9+8AN1dHRo7dq1mjJlim655RYdPXr0snnz8vKUkpKiG264QRaLRSEhIVq0aJGSkpIknT996Xvf+54k6fTp08rKytIbb7yhuXPnasqUKXrllVd05MgRLV++XJMnT9aTTz7Z+9pvvvmmvvzlL3/udT/88EPddtttmjhxoubOnavf/va3vZ/79Dqvv/665s2bpwceeKD3z3p6evSv//qv2r9/v5588klNmDBBTz75pJ544gn9/Oc/v+gaDz30kP7whz980ZABwHXhr+MAfI7L5dIdd9yhf/u3f5PT6dQ//MM/6Mknn9Tvfvc7SdL3v/99BQUFaePGjQoKCtKhQ4ckSUeOHNHjjz+up59+WjfccINqamrU0tIiSYqOjtbvf/97paamat++fVqzZo1ycnI0evRoSVJtba2ampq0detWuVwuPfPMMyorK9PmzZvV3t6uNWvWXDbv6NGjVVRUpKeeekrz589XTk6OgoODr/g1Hj58WO+995727dunr3/965o9e7b+8Ic/qKenR7fddpsWL16sqVOnXvE1AgMDtW7dOo0YMUInT57U6tWrlZ2drYULF/Y+Zt++fXr33XdltVpVW1vb++ePPvqoDh48qFtvvVV333137/fvG9/4hr7//e/LarWqvr5eu3fv1k9+8pMr5gCA68UMLwCfExkZqUWLFikwMFAhISH6+te/rn379kmSqqurtX37dj3xxBMKDw+Xn59fbzH885//rDvvvFMzZ86U1WpVfHy8hg0bJkmaN2+e0tLSZLFYNHXqVM2cOVP79+/vvabVatUjjzwif39/BQQE6K9//aseeughRUREKDExUatWrbps3tTUVL300ks6e/asvv3tb2v69Olau3atWltbL/uchx9+WA6HQ7NmzVJQUJCWLVum6OhoxcfHa/LkycrNzf3C79O0adOUlZUlq9WqkSNHaunSpdq7d+9Fj/nWt76loKAgBQQEfOHrjR07VqGhodq9e7ck6d1339XUqVMVExPzhc8FgOvBDC8An9Pe3q6f/exn2rFjh5qamiRJra2tcjqdOnPmjMLDwxUeHn7J86qqqjR37tzPfc1t27bp2WefVUlJiVwulzo6OpSZmdn7+cjISDkcjt6Pq6urlZiY2Pvxp8sTLmf8+PH6zW9+I+n8TOmjjz6q5557Tt/97nc/9/HR0dG97zscjks+bmtru+L1pPOzxL/61a9UUFCg7u5udXV1afHixRc9JiEh4Qtf57Nuv/12vf3225o5c6befvtt3X///Vf1fAC4FszwAvA5L7zwgoqLi/Xaa6/p4MGDevnllyVJhmEoISFBTU1Nam5uvuR5iYmJKisru+TPu7q69Mgjj2j16tXatWuX9u/frzlz5sgwjN7HWCyWi54TGxurqqqq3o8/+/4XGTt2rG6++WYVFBT0+TnX4rvf/a4WLFigbdu26cCBA7rnnnsu+pqkS7+uL3Lrrbfqgw8+UH5+vgoLCy9aHgEAA4XCC8DntLa2yuFwKCwsTI2NjXrmmWd6PxcXF6c5c+boiSeeUFNTk7q7u3uXO9x111168803tXv3brlcLp09e1aFhYXq6upSV1eXoqKiZLfbtW3bNu3ateuKGZYsWaLnn39eTU1NOnPmjF566aXLPnb//v167bXXVFdXJ0kqLCzUli1bNG7cuH74blxea2urwsPD5XA4dOTIEW3YsOGqnh8TE9O7ddqnEhISlJOTo8cee0w333xzn5ZCAMD1ovAC8DkPPPCAOjs7NX36dK1cuVKzZ8++6PO/+MUvZLfbtWTJEs2YMUN//OMfJZ2fWf3Zz36mp556SpMmTdJ9992nyspKhYSE6Ic//KG+/e1va8qUKdqwYYPmz59/xQzf/OY3lZSUpAULFmj16tVasWLFZR8bFhamLVu2aPny5ZowYYLWrFmjhQsX6sEHH7z+b8YV/OhHP9LTTz+tCRMm6Nlnn9WSJUuu6vn333+/Nm3apClTplx0Y9ptt92mkydPXvFrBoD+ZDH+5++nAMBL3X777Xr44Yf5NbrJ9u3bp8cee0xbt2696iURAHAtmOEF4BMKCgpUWFio7Oxss6P4tO7ubr344ou66667KLsA3IbCC8Dr/fKXv9Tq1av1ve99T8nJyWbH8VmFhYWaMmWKampq9JWvfMXsOAB8CEsaAAAA4NWY4QUAAIBXo/ACAADAq1F4AQAA4NUovAAAAPBqFF4AAAB4NQovAAAAvNr/A8SXmbNENclRAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "dRNe85k54c9B" - }, - "source": [ - "### Identified fact:\n", - "_Picking a random node in the graph, we characterized the similarity of nodes connected to it. In this dataset, we can use this idea to get a sense of how similar user's rating a movie tend to be. A review of the above figure shows that a range of similarities are observed._" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "1SJKyWDe4c9B" - }, - "source": [ - "## Bipartite Clustering\n", - "The next idea that we will investigate on the graph comes from [Latapy et.al](https://arxiv.org/abs/cond-mat/0611631). In this work, the authors extend the notion of clustering coefficients associated with a node to the case of bi-partite graphs. Since our graph is a bipartite graph, we will use this metric. See section VIII of the paper for a detailed explanation of the idea. Briefly, the clustering coefficient for a pair of nodes $u, v$, is defined as follows:\n", - "$$\n", - "\\begin{equation*}\n", - "cc(u,v) = \\frac{N(u)\\cap N(v)}{N(u) \\cup N(v)},\n", - "\\end{equation*}\n", - "$$\n", - "where:\n", - "\n", - "* N(u) is the neighborhood of node $u$. These are the nodes connected to $u$. For example, the movies user $u$ rates.\n", - "* N(v) is the neighborhood of node $v$.\n", - "Reviewing the above equation, it is evident that the clustering coefficient captures the shared neighborhood for a pair of nodes. Nodes associated with high clustering coefficient have many common neighbors. In the context of this problem, a pair of users with a high clustering coefficient suggests that these users have rated many movies in common. Similarly, a pair of movies with a high clustering coefficient suggests that these movies there are many common raters(users) for these movies. Networkx provides an implementation of this idea. The details of computing the clustering coefficients for the users and movies are shown below.\n", - "To obtain the clustering coefficient for a node $u$, we simply average the clustering coefficient of $u$ with other nodes that it shares common neighbors with. It is defined as follows:\n", - "\n", - "$$\n", - "\\begin{equation*}\n", - "cc(u) = \\frac{\\sum_{v \\in N(u)} cc(u,v)}{\\left| N(N(u) \\right|},\n", - "\\end{equation*}\n", - "$$\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "u7o7oLkC4c9B" - }, - "source": [ - "cr = bipartite.clustering(B)\n", - "cu = {}\n", - "cm = {}\n", - "for k, v in sorted(cr.items(),reverse=True, key=lambda item: item[1]):\n", - " if k.startswith(\"Users\"):\n", - " cu[k] = v\n", - " else:\n", - " cm[k] = v\n", - "\n", - "del cr" - ], - "execution_count": 160, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ATmq_-aK4c9B" - }, - "source": [ - "## List the top 10 users in terms of clustering tendencies \n", - "These users share a high degree of common movie rating activity with other users. If rating is used as a proxy for the act of liking or disliking a movie, then user's with high clustering values share rating activity with " - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "HX9colNZ4c9B", - "outputId": "660accba-5da0-47ba-b479-17667dc94eb9" - }, - "source": [ - "list(cu.keys())[:10]" - ], - "execution_count": 161, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['Users/72',\n", - " 'Users/297',\n", - " 'Users/64',\n", - " 'Users/178',\n", - " 'Users/533',\n", - " 'Users/493',\n", - " 'Users/347',\n", - " 'Users/301',\n", - " 'Users/198',\n", - " 'Users/249']" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 161 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gE83U_Am4c9B" - }, - "source": [ - "## List the top 10 movies in terms of clustering tendencies \n", - "These movies have a high degree of common users rating them." - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Av0ToBrp4c9C", - "outputId": "c97d33bd-1940-40e6-da2e-f2386753712b" - }, - "source": [ - "list(cm.keys())[:10]" - ], - "execution_count": 162, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['Movies/1663',\n", - " 'Movies/1643',\n", - " 'Movies/1669',\n", - " 'Movies/1652',\n", - " 'Movies/1373',\n", - " 'Movies/1364',\n", - " 'Movies/1363',\n", - " 'Movies/1354',\n", - " 'Movies/1349',\n", - " 'Movies/1348']" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 162 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BgGI3bv04c9C" - }, - "source": [ - "## How does user clustering tendency vary over the community?" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 604 - }, - "id": "JNGtK0z84c9C", - "outputId": "46a87af3-a70f-4613-fc00-a18290bde79e" - }, - "source": [ - "import seaborn as sns\n", - "import numpy as np\n", - "npvals = np.fromiter(cu.values(), dtype=float)\n", - "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", - "ax = sns.distplot(npvals, hist = False)\n", - "plt.title(\"Distribution of User Clustering Coefficients\")\n", - "plt.xlabel(\"User Clustering Coefficients\")\n" - ], - "execution_count": 163, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2557: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", - " warnings.warn(msg, FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "Text(0.5, 0, 'User Clustering Coefficients')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 163 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EjfGafPm4c9C" - }, - "source": [ - "### Note:\n", - "Note that the distribution of user clustering coefficients has two humps (bi-modal). This suggests that there are two user communities. This is borne out when we visualize a sample of the user community using a _tSNE_ plot later in this notebook." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SPxiPAjm4c9C" - }, - "source": [ - "## How does movie clustering tendency vary over the community?" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 604 - }, - "id": "enjjfIib4c9C", - "outputId": "bf997c79-d536-42e9-dd90-1263cfea1a0b" - }, - "source": [ - "import seaborn as sns\n", - "import numpy as np\n", - "npvals = np.fromiter(cm.values(), dtype=float)\n", - "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", - "ax = sns.distplot(npvals, hist = False)\n", - "plt.title(\"Distribution of Movie Clustering Coefficients\")\n", - "plt.xlabel(\"Movie Clustering Coefficients\")" - ], - "execution_count": 164, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2557: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", - " warnings.warn(msg, FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "Text(0.5, 0, 'Movie Clustering Coefficients')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 164 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAIECAYAAAAJn6j+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde3zT1f0/8FeuvaV3ekkvNC2XcpdLKaJcpAUpEygbc6KoEyaKN3RsIlMcE1AHMnHyQ5jOL96YqA/lKgoyQEQQL4CgXEqvtEnvl6Tpvcnn90cho/aWtkk+ubyej8cea5NPkjenqX319H3OkQiCIICIiIiIiDolFbsAIiIiIiJXwOBMRERERGQFBmciIiIiIiswOBMRERERWYHBmYiIiIjICgzORERERERWYHAmojb++te/YtOmTTZ5Lp1Oh1GjRsFkMgEA7rnnHnz00Uc2eW4AuP/++7Fjxw6bPZ+1NmzYgHHjxuHmm292+GsDtv0a/dLy5cuxYcMGuzx3d/zyveMq6uvrsXjxYowZMwZLliwB0Pr9Yu2/6/vvv8f06dMdUTIRWUnCfZyJPEtKSgrKysogk8kgk8nQv39/pKen44477oBU2r3fpVNSUrBmzRrcdNNNVj/mnnvuwezZs3H77bd3t3Rs3LgReXl5WL9+fbcfa0s6nQ5paWk4fPgwQkND29x/8uRJ3HvvvZg6dWqrcHvx4kWkp6cjOTkZ7777riNLbkUQBLz77rv48MMPUVBQgICAAIwcORKPPPIIEhMTsXz5ckREROCPf/xjj1/j5MmTePLJJ3H06FEbVm5bZ8+excaNG3H69GlIpVL07dsXd955J+bOndur5925cyfee+89bN++HXK5vMv3iyP05HuViNrijDORB9qyZQtOnz6Nw4cPY9GiRXjjjTfwzDPP2Px1mpubbf6czkCn0yEoKKjTEBQSEoIzZ86gsrLSctuOHTug0WgcUGHnnn/+ebzzzjt45pln8O2332L//v2YOnUqvvzyS7FLs7D3e+f06dP4/e9/j7Fjx+LAgQM4efIk/va3v9kk6Ot0Omg0GsjlcsvnXb1fiMg1MDgTeTB/f3+kpqbilVdewY4dO5CRkQGg9Z/qKyoq8OCDDyIpKQnJycm46667YDab8eSTT0Kn02Hx4sUYNWoU3njjDRQUFCAxMREfffQRbrnlFvz+97+33HZ9ELpy5Qp++9vfYvTo0XjooYdQVVUFoGWWctKkSa1qTElJwfHjx3H06FH861//wmeffYZRo0Zh9uzZAFq3fpjNZrz22muYMmUKxo8fj2XLlqG6uhoALHXs2LEDt9xyC8aNG4fNmzd3ODbV1dVYtmwZbrzxRkyZMgWvvfYazGYzjh8/joULF6KkpASjRo3C8uXL2328QqFAamoq9u3bBwAwmUzYt28fZs2a1eq6U6dOYe7cuRgzZgzmzp2LU6dOAQD27duH3/zmN62ufeutt7B48eI2XyMAOHz4MNLT05GUlIR58+bh4sWL7daVm5uLbdu24eWXX8b48eOhVCrh4+OD2bNn44EHHmhz/SeffII777yz1W2JiYnIy8sDAHz55Zf41a9+hVGjRmHixIl48803UVtbi0WLFlnGaNSoUSguLobZbMbrr7+OqVOnYty4cXj88cctX3tr3jv33HMPXnnlFcybNw+jRo3CwoULUVFRYalr586dmDJlCsaNG4dNmzZZ3jvtWbduHebMmYMHHngAISEhkEgkGDZsGP75z39arvnwww8xbdo0JCcnY/HixSguLrbcl5WVhQULFiA5ORnTp0+3fJ1fffVVvPbaa5b36fbt29u8X37576qqqsJf/vIXTJgwAWPHjsXDDz8MoO33Q3FxMR577DHceOONSElJwTvvvGO5b+PGjXj88cexbNkyjBo1CrfddhvOnTsHAO1+rzY0NODPf/4zxo0bh6SkJMydOxdlZWXtjhUR/Q+DMxFhxIgRiIyMxPfff9/mvq1btyIiIgInTpzA119/jaVLl0IikeCll15CVFSUZfZ60aJFlsd899132LdvH9588812X2/nzp144YUXcOzYMcjlcqxZs6bLGidNmoQHH3wQM2bMwOnTp7F79+4213zyySfYsWMH3nnnHRw8eBC1tbVYtWpVq2t++OEHfP7553j77bexadMmZGVltft6q1evRnV1NQ4ePIh3330Xu3btwscff4ybbroJb7zxBsLDw3H69Gn8/e9/77DmOXPmYOfOnQCAY8eOYeDAgYiIiLDcX1VVhQcffBD33HMPTp48iQULFuDBBx9EZWUlpkyZgpycHOTm5lqu37NnT5vgDQDnz5/H008/jVWrVuHkyZO444478PDDD6OxsbHNtSdOnEBkZCRGjBjRYd3d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E6+88oolkFZUVODgwYPWD2Ynpk+fjkOHDuHUqVNobGzExo0b0dluq08++SR27NiBf//735a/dly8eNGyBd/MmTPxySef4MKFC2hsbMTLL7+MESNGICYmBrfccgtyc3Oxc+dONDU1oampCWfPnu2wX74z4eHhmDRpEp577jno9Xo0NTXhu+++a3PdiBEj4Ofnh9dffx319fUwmUzIyMjA2bNnrXqdX36vfvPNN7h06RJMJhNUKhXkcnm3t6Mk8kT8LiHyQNdW10+ePBlbtmzBggUL8OKLL7Z7bV5eHhYsWIBRo0bhjjvuwJ133mmZpXvggQewefNmJCUldbiYqz3p6elYvnw5br75ZjQ2Nlq2wvP398fKlSuxYsUKTJo0CT4+Pq3+/J6WlgYAGDduHH7961+3ed65c+di9uzZuPvuu5GamgqlUolnn33W6rqu9+yzz8LHxwdTp07FXXfdhZkzZ/Z4f9+kpKR2Z6uDg4OxZcsWbN26FePGjcO///1vbNmyBSEhIZZrZs2ahePHjyMtLa3DXwCGDx+O1atXY9WqVRg7dixuvfVWfPLJJx3Ws2LFCsyfP99y/dSpU/HFF19gypQpba6Nj4/HI488gvvuuw+33nprm9niXbt2ISUlBaNHj8b27dvx0ksvAQD69euH2267DVOnTkVSUhKKi4tx7733IiUlBQsXLsSoUaPwu9/9zurg15UBAwbg2WefxdKlSzFx4kT4+voiJCQESqWy3etHjx6Nt99+G9988w2mTp2K5ORkPPvss5g8eTKAltn+xx9/HI899hgmTJiA/Px8yy4mKpUKb775Jvbt24eJEydiwoQJWL9+fbuLMa2xbt06yOVyzJgxAzfddBPefvvtNtfIZDJs2bIFFy9eRGpqKm688UasWLGi3V+O2vPL79WysjIsWbIEY8aMwa9+9SskJye36cEnorZ4AAoREbmdmpoajB07Fvv370dsbKzY5RCRm+CMMxERuYVDhw6hrq4OtbW1WLt2LQYOHIiYmBixyyIiN8LgTEREbuG///0vJk6ciIkTJyIvLw8vv/xyjxcbEhG1h60aRERERERW4IwzEREREZEVGJyJiIiIiKzA4ExEREREZAWPOjmwsrIGZjNbunsqNFSF8nLr9gylznEsbYdjaTscS9vhWNoOx9J2OJZdk0olCA726/B+jwrOZrPA4NxLHD/b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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0ICweEaZ4c9C" - }, - "source": [ - "### Note:\n", - "Note that the distribution of user clustering coefficients has three humps. This suggests that there are three movie clusters. \n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "b26SbNVt4c9C" - }, - "source": [ - "### Identified fact:\n", - "_We have identified users and movies that tend to have have a lot of common rating activity. We have identified that users and movies have clustering tendencies._" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "hJmuEFFx4c9C" - }, - "source": [ - "# Using Node2vec to obtain a graph embedding" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Nc-VtRGO4c9D" - }, - "source": [ - "Machine learning techniques can be applied on graphs to determine vector representations of graph elements such as nodes and edges. Such a representation is called an _embedding_. We can use the Networkx representation of the graph associated with the 10 most clustered users and determine its embedding. We can use a technique called [_t Stochastic Neighbor Embedding_](https://www.youtube.com/watch?v=RJVL80Gg3lA&list=UUtXKDgv1AVoG88PLl8nGXmw) to plot a two dimensional representation of this subgraph. The details of doing this is provided below. Earlier we noted that the user clustering tendencies were bi-modal. A review of the embedding of the sub-graph associated with the 10 most clustered users shows that there are two clusters in the data." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kHWs_A1X4c9D" - }, - "source": [ - "## Extract the sub-graph associated with the 10 most clustered users" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "IoGJKmJm4c9D" - }, - "source": [ - "t10cu = list(cu.keys())[:10]\n", - "proj_user = nx.bipartite.projected_graph(B, t10cu)" - ], - "execution_count": 165, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "qyZwFHnL4c9D", - "outputId": "2d8eaf1e-b445-430e-e675-6eb261884b11" - }, - "source": [ - "len(list(proj_user.edges()))" - ], - "execution_count": 166, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "8796" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 166 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "tLgoFfvf4c9D", - "outputId": "68dd10d8-d483-4ed8-af2c-cca5afdb845c" - }, - "source": [ - "len(proj_user.nodes())" - ], - "execution_count": 167, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "914" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 167 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Jv5XKBLfRTjd" - }, - "source": [ - "## Embed the sub-graph using Node2vec " - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 66, - "referenced_widgets": [ - "8c4c63c2ec584e8694949cde2b878278", - "6276d89c53f1452b82fed9c2af7e0236", - "e7a24632f5fb4670b7fd8945c8e64ce7", - "b9d9e6899f234dc381a947f25edd0b1f", - "7d125a00ff3046aab6c2dbd1b824ee5f", - "a61b9cb46d724bf8bdb24de5a9592017", - "9d1e1bb9a456457a87bb0dcb440f76dc", - "914e350efb3e4f4fbb1baf94fb4134a4" - ] - }, - "id": "e-fD-eNhX9Lh", - "outputId": "a2ffbdc5-860e-4e04-8e92-59ea7d3ff1e6" - }, - "source": [ - "from node2vec import Node2Vec\n", - "node2vec = Node2Vec(proj_user, dimensions=64, walk_length=10, num_walks=100, workers=4)" - ], - "execution_count": 168, - "outputs": [ - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8c4c63c2ec584e8694949cde2b878278", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='Computing transition probabilities', max=914.0, style=Pro…" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "stream", - "text": [ - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "6hu6Z0VPYDFK" - }, - "source": [ - "model = node2vec.fit(window=10, min_count=1, batch_words=4)" - ], - "execution_count": 169, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 35 - }, - "id": "kUN1zLMG4c9D", - "outputId": "fd0aaad1-155c-45a2-d6b8-6f48c14920d0" - }, - "source": [ - "t10cu[2]" - ], - "execution_count": 170, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, - "text/plain": [ - "'Users/64'" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 170 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0NMFl0dD4c9D" - }, - "source": [ - "## Apply the model\n", - "We can ask questions like \"Who is most similar to (a particular user) Users/64?\"" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "41YVYl3jYHia", - "outputId": "02c9036c-cf25-4018-c742-ca595aa91b83" - }, - "source": [ - "model.wv.most_similar(t10cu[2])" - ], - "execution_count": 171, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "[('Users/249', 0.8666249513626099),\n", - " ('Users/178', 0.8422333598136902),\n", - " ('Users/493', 0.832413911819458),\n", - " ('Users/347', 0.8107874393463135),\n", - " ('Users/301', 0.8077564835548401),\n", - " ('Users/297', 0.7933509349822998),\n", - " ('Users/533', 0.7722172737121582),\n", - " ('Users/896', 0.7490148544311523),\n", - " ('Users/598', 0.7475563287734985),\n", - " ('Users/483', 0.734812319278717)]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 171 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SEgDZqYb4c9E" - }, - "source": [ - "## Embed the graph with tSNE" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Ojg_VZVP4c9E" - }, - "source": [ - "t10cu_emb = { n: list(model.wv.get_vector(n)) for n in proj_user.nodes()}" - ], - "execution_count": 172, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 604 - }, - "id": "joYmsa3X4c9E", - "outputId": "a0e839c9-914d-4e0b-8499-37cb669f1e04" - }, - "source": [ - "import numpy as np\n", - "from matplotlib import cm\n", - "from sklearn.manifold import TSNE\n", - "fig = plt.figure(figsize=(11.7,8.27))\n", - "plt.grid(True)\n", - "plt.xlabel(\"Comp 1\")\n", - "plt.ylabel(\"Comp 2\")\n", - "plt.title(\"tSNE plot of subgraph of top 10 most clustered users\")\n", - "t10cu_embedded = TSNE(n_components=2).fit_transform(list(t10cu_emb.values()))\n", - "sns.scatterplot(t10cu_embedded[:,0], t10cu_embedded[:,1])" - ], - "execution_count": 173, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", - " FutureWarning\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 173 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs0AAAIECAYAAADiqBP9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydeXxU1d3/PzPJZJJZsk0CBAKBhsZGZUkAI8iiQFpENBWLRMTW7SmIVIvVQq0LL0Vbqo9YF0Tr1v58hELF+iioxd1HKFVQwYpQEEiAQDbCZCbbJHN/fyQzznLvzF3OXWbyfb9evl6Smbn37Odzvud7vsfEcRwHgiAIgiAIgiAEMeudAIIgCIIgCIIwOiSaCYIgCIIgCCIOJJoJgiAIgiAIIg4kmgmCIAiCIAgiDiSaCYIgCIIgCCIOJJoJgiAIgiAIIg4kmgmCEOSaa67Bpk2bNHnXyy+/jEmTJqGsrAynT59m8sxjx47hrLPOQnd3N5PnKYVlee7atQs//OEPUVZWhnfeeYfJMwl+pk+fju3bt+udDMmcddZZOHr0qN7JIIikgUQzQegI32S8adMmzJo1C2VlZZg0aRL+67/+Cx6PBwCwYsUKnHXWWdizZ0/w+0ePHsVZZ50V/Pc111yDUaNGoaysLPjf4sWLVc2HUnHq8/nw+9//Hs8//zw+//xz5OTkME5h8vHYY4/h6quvxueff46ZM2dGfa6m0Kuvr8fixYsxefJknHXWWTh27FjY511dXfjNb36D8vJyXHDBBXjhhRdUSYcU9BaQjz/+OG6//Xbd3k8QhHJS9U4AQRDf8a9//Qtr1qzBs88+i7PPPhstLS14//33w76TnZ2NRx99FM8//7zgc+655x7MmzdP7eQyo6mpCZ2dnRg5cqTeSRGku7sbqanGGTJPnDiB73//+7q822w2Y8qUKVi0aBGqq6ujPn/88cdx9OhRvP/++2hsbMRPf/pTFBcXY+rUqTqkNjkwWvsTQyKmmSBiQZZmgtCJO+64AydOnMDixYtRVlaGP/3pT9i7dy/Gjh2Ls88+G0CvQL788svhcDiCv/vxj3+M/fv341//+pfiNGzevBnV1dW47777MG7cOMyaNQs7duzg/a7f78fatWtx0UUXYeLEifj1r3+N1tZWAMDChQsBABMmTEBZWRk+//zzqN93dXXhgQcewOTJkzF58mQ88MAD6OrqwuHDhzFr1qzg73/6059G/bazsxO33347KioqMH78eFxxxRVobGwEEG1R5bPovfLKK8H3Pvfcc8G/d3R0YPny5ZgwYQIuvvhi/OlPfwoTdtOnT8czzzyDSy+9FGPHjkV3dzeeeeYZzJw5E2VlZZg9eza2bdsmqTyPHz+O6upqlJWV4frrr0dzczNveQPAxo0bUVlZifPOOw+LFy/GqVOnAAAzZ85EbW1tsO10dXWF/Y6vbQHAu+++i0suuQTjx4/HNddcg0OHDoXl9emnn8bs2bMxYcIE/OY3v0FnZydvuvLy8nD11Vdj1KhRvJ+/+uqrWLJkCbKyslBcXIx58+bh1Vdf5f1uoMwefPBBjB8/HjNmzMDu3buxefNmTJs2DRMnTgz7bWtrK37961/j/PPPx0UXXYS1a9fC7/cD6N11WbhwIcaNG4eKigr88pe/BABcffXVAICqqiqUlZVh69atguV98cUXB+v23//+d9R3VqxYgTVr1gT/vXPnzrA288wzz2DKlCkoKyvDj370I+zYsQMfffQRnn76abz55psoKyvDZZddFszLnXfeicmTJ2PKlClYs2YNenp6osqloqICjz/+OLq6urB69WpceOGFmDRpEu655x50dHQE3/3ss88G2/nf/vY33jwGiNVvYvU3qWkWqhOCSEg4giB046KLLuI++eST4L8//fRTbtSoUdwf//hH7rPPPuM6OzvDvr98+XLukUce4f785z9z1dXVHMdx3JEjR7iSkpLgdxYuXMht3LhR1PtfeeUVrrS0lHvhhRe4rq4ubsuWLVx5eTl3+vTpqGdt2rSJmzlzJldTU8N5PB7u5ptv5m6//XaO4ziutraWKykp4Xw+n+C7Hn30UW7evHlcY2Mj19TUxM2fP59bs2aNqN+vX7+eW7RoEdfW1sZ1d3dze/fu5VpbW3nL8LHHHuN+9atfhT132bJlnNfr5b755huuoqIi+P2HHnqIu/rqq7mWlhaurq6OmzNnDjdlypTgsy666CLusssu406cOMG1t7dzHMdxW7du5U6ePMn19PRwW7Zs4caMGcOdOnVKdHnOmDGD+/bbb7n29nZu4cKF3EMPPcSb5+3bt3PnnXce99VXX3GdnZ3cfffdxy1YsCAsbaH5jiTy82+//ZYbM2YM93//939cV1cX98wz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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "97aU0nWw4c9E" - }, - "source": [ - "__Using the Networkx adapter we have been able to perform a range of analysis tasks using the Networkx API. We were also able use the Networkx graph to obtain an embedding of a graph using Node2vec.__" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "dA_np4UI4c9E" - }, - "source": [ - "## Store Embeddings in ArangoDB" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "uzMUv9Ol4c9E", - "outputId": "6a171f56-f70c-4c04-dad4-85ec2d7fcd30" - }, - "source": [ - "%time\n", - "collection = db[\"Users\"]\n", - "with BulkOperation(collection, batchSize=500) as col:\n", - " #user_col = db.collections[\"Users\"]\n", - " for u, e in t10cu_emb.items():\n", - " the_key = u.split('/')[1]\n", - " the_user = collection[the_key]\n", - " the_user[\"n2v_emb\"] = e\n", - " the_user.patch()" - ], - "execution_count": 174, - "outputs": [ - { - "output_type": "stream", - "text": [ - "CPU times: user 3 µs, sys: 0 ns, total: 3 µs\n", - "Wall time: 8.11 µs\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "O81cxxoM4c9E" - }, - "source": [ - "# Store metadata about these experiments using Arangopipe" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "7VxWRZOy4c9E" - }, - "source": [ - "from arangopipe.arangopipe_storage.arangopipe_api import ArangoPipe\n", - "from arangopipe.arangopipe_storage.arangopipe_admin_api import ArangoPipeAdmin\n", - "from arangopipe.arangopipe_storage.arangopipe_config import ArangoPipeConfig\n", - "from arangopipe.arangopipe_storage.managed_service_conn_parameters import ManagedServiceConnParam\n", - "mdb_config = ArangoPipeConfig()\n", - "msc = ManagedServiceConnParam()\n", - "conn_params = { msc.DB_SERVICE_HOST : \"arangoml.arangodb.cloud\", \\\n", - " msc.DB_SERVICE_END_POINT : \"createDB\",\\\n", - " msc.DB_SERVICE_NAME : \"createDB\",\\\n", - " msc.DB_SERVICE_PORT : 8529,\\\n", - " msc.DB_CONN_PROTOCOL : 'https'}\n", - " \n", - "mdb_config = mdb_config.create_connection_config(conn_params)\n", - "admin = ArangoPipeAdmin(reuse_connection = False, config = mdb_config)\n", - "ap_config = admin.get_config()\n", - "ap = ArangoPipe(config = ap_config)\n", - "proj_info = {\"name\": \"IMDB_Movie_Reviews\"}\n", - "proj_reg = admin.register_project(proj_info)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "LH3eVkTHM6x6", - "outputId": "80cae2cd-d390-4a7d-b734-5b1b7893367a" - }, - "source": [ - "mdb_config.get_cfg()" - ], - "execution_count": 183, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'arangodb': {'DB_end_point': 'createDB',\n", - " 'DB_service_host': 'arangoml.arangodb.cloud',\n", - " 'DB_service_name': 'createDB',\n", - " 'DB_service_port': 8529,\n", - " 'arangodb_replication_factor': None,\n", - " 'conn_protocol': 'https',\n", - " 'dbName': 'MLfihnc2v7dndo1zt7hvs27p',\n", - " 'password': 'MLi4rxshzlq3c00nwx63k60jaq',\n", - " 'username': 'MLu8bpng85889qv3msheqikc'},\n", - " 'mlgraph': {'graphname': 'enterprise_ml_graph'}}" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 183 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "2vQCXknQ4c9F" - }, - "source": [ - "import io\n", - "import requests\n", - "url = ('https://raw.githubusercontent.com/arangoml/networkx-adapter/master/examples/IMDB_Networkx_Adapter.ipynb')\n", - "nbjson = requests.get(url).text\n", - "model_info = {\"name\": \"Exploratory Data Analysis IMDB\", \"task\": \"multiple\", 'notebook': nbjson}\n", - "model_reg = ap.register_model(model_info, project = \"IMDB_Movie_Reviews\")" - ], - "execution_count": 178, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "motmuZKd4c9F" - }, - "source": [ - "# Summary" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "bkhLXelI4c9F" - }, - "source": [ - "* The Networkx-Adapter makes it easy to obtain Networkx graphs from ArangoDB graphs.\n", - "* We have demonstrated that using a graph representation helped us identify facts about the data. These facts were identified by leveraging standard ideas from Network Theory.\n", - "* We have leveraged the Networkx graph to obtain a _Node2vec_ embedding of the graph associated with our data. For an example of how the Networkx-Adapter can be used with a _deep learning_ library, please view the [ITSM ArangoDB Adapter](https://github.com/arangoml/networkx-adapter/blob/master/examples/ITSM_ArangoDB_Adapter.ipynb). " - ] - } - ] -} \ No newline at end of file + "base_uri": "https://localhost:8080/" + }, + "id": "9voIoaGRS0cB", + "outputId": "441a4cd7-6eb6-4664-d97e-fc625fdb6c6f" + }, + "outputs": [], + "source": [ + "from adbnx_adapter.imdb_arangoDB_networkx_adapter import IMDBArangoDB_Networkx_Adapter\n", + "import oasis\n", + "con = oasis.getTempCredentials()\n", + "\n", + "print()\n", + "print(\"https://{}:{}\".format(con[\"hostname\"], con[\"port\"]))\n", + "print(\"Username: \" + con[\"username\"])\n", + "print(\"Password: \" + con[\"password\"])\n", + "print(\"Database: \" + con[\"dbName\"])\n", + "\n", + "\n", + "ma = IMDBArangoDB_Networkx_Adapter(conn=con)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "APNXpksoRTif" + }, + "source": [ + "## Create the Collections for the Database " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "RQAoZi3AW9ru" + }, + "outputs": [], + "source": [ + "# Connect to the temp database\n", + "conn = oasis.connect(con)\n", + "db = conn[con[\"dbName\"]]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f0nSSiRnRTit" + }, + "source": [ + "## Import the Data " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "sE_jzJHfASIR", + "outputId": "c5dd5bf3-447d-4e6a-f3d7-74ae707bd07b" + }, + "outputs": [], + "source": [ + "! ./tools/arangorestore -c none --server.endpoint http+ssl://{con[\"hostname\"]}:{con[\"port\"]} --server.username {con[\"username\"]} --server.database {con[\"dbName\"]} --server.password {con[\"password\"]} --default-replication-factor 3 --input-directory \"./IMDBdata/data/imdb_with_ratings\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tDmWTWYkW6VW", + "outputId": "490fb28d-d136-43f2-e067-dd540744c4bc" + }, + "outputs": [], + "source": [ + "import csv\n", + "import json\n", + "import requests\n", + "import sys\n", + "import oasis\n", + "from pyArango.connection import *\n", + "from pyArango.collection import Collection, Edges, Field\n", + "from pyArango.graph import Graph, EdgeDefinition\n", + "\n", + "class Users(Collection):\n", + " _fields = {\n", + " \"user_id\": Field(),\n", + " \"age\": Field(),\n", + " \"gender\": Field()\n", + " }\n", + " \n", + "class Movies(Collection):\n", + " _fields = {\n", + " \"movie_id\": Field(),\n", + " \"movie_title\": Field(),\n", + " \"release_data\": Field()\n", + " }\n", + "\n", + "class Ratings(Edges): \n", + " _fields = {\n", + " #user_id and movie_id (_key of movie) are encoded by _from, _to \n", + " \"rating\": Field(),\n", + " \"timestamp\": Field()\n", + " }\n", + "\n", + "class IMDBGraph(Graph):\n", + " _edgeDefinitions = [EdgeDefinition(\"Ratings\", fromCollections=[\"Users\"], toCollections=[\"Movies\"])]\n", + " _orphanedCollections = []\n", + "\n", + "iMDBGraph = db.createGraph(\"IMDBGraph\", replicationFactor=3)\n", + "\n", + "print(\"Collection/Graph Setup done.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5rm-ZpNQ4c87" + }, + "source": [ + "# Use the Networkx-Adapter to create a Networkx Graph" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "i0CYXcbU4c87" + }, + "source": [ + "Now that we have loaded the data into ArangoDB, we can use the __Networkx-Adapter__ to create _Networkx_ graphs from the ArangoDB graph. To do so, we'll have to provide a graph descriptor that describes the graph structure to the __Networkx-Adapter__. These steps are illustrated below. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tua4CIHYRTi0" + }, + "source": [ + "## Specify the Graph Structure " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9oKkkRxwRTi0" + }, + "source": [ + "To use the IMDB Networkx Adapter, we need to specify the structure of the graph that we want to create. This is done with a simple dictionary. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wobwe8KqXXi2" + }, + "outputs": [], + "source": [ + "imdb_attributes = {'vertexCollections': {'Users': {},\n", + " 'Movies': {}},\n", + " 'edgeCollections': {'Ratings': {'_from', '_to', 'ratings'}}}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ORqpcKl_4c87" + }, + "source": [ + "## Obtain the networkx graph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jjJZJEgvXZ0W" + }, + "outputs": [], + "source": [ + "g = ma.create_networkx_graph(\n", + " graph_name='IMDBGraph', graph_attributes=imdb_attributes)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rk-La15l4c88" + }, + "source": [ + "__Done!__, we now have a _Networkx_ graph representation that we can use for analysis!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a3dOVYck4c88" + }, + "source": [ + "# Analysis of the IMDB reviews dataset with Networkx\n", + "We just created a networkx graph for this problem. In this notebook we will use a small set of ideas from the standard body of ideas used in network analysis to extract insights from the movie review dataset. Networkx provides an implementation of these ideas. These will be discussed next.\n", + "\n", + "As mentioned earlier, one of the advantages of using a graph representation is that we can leverage the standard body of ideas used to analyze networks to extract information about this dataset. In what follows, we will call out such facts as we identify them.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Zj_ZCYrt4c88" + }, + "source": [ + "## Get the user and movie nodes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yqmOgDuN4c88" + }, + "outputs": [], + "source": [ + "user_nodes = [n for n in g.nodes() if n.startswith(\"Users\")]\n", + "movie_nodes = [n for n in g.nodes() if n.startswith(\"Movies\")]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZMA_ffth4c89" + }, + "source": [ + "## Structural Property Introspection: Number of Nodes and Edges" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1wjglzLW4c89", + "outputId": "8c39721f-3bfe-422a-a0ac-8275d037c456" + }, + "outputs": [], + "source": [ + "print(\"Number of Users are %d\" % (len(user_nodes)))\n", + "print(\"Number of Movies are %d\" % (len(movie_nodes)))\n", + "print(\"Number of Ratings are %d\" % (len(list(g.edges()))))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7YAkup5g4c89" + }, + "source": [ + "## Convert the graph obtained from the interface to a bi-partite graph " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Le8HMfU-4c89" + }, + "outputs": [], + "source": [ + "import networkx as nx\n", + "B = nx.Graph()\n", + "B.add_nodes_from(user_nodes, bipartite=0)\n", + "B.add_nodes_from(movie_nodes, bipartite=1)\n", + "B.add_edges_from(list(g.edges()))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZaBJqyZy4c89" + }, + "source": [ + "### Identified fact:\n", + "_The graph has two kinds of edges. It has 943 users and and 1682 Movies. A user may watch multiple movies. 65499 movie ratings are available. This information is obtained by simply identifying the structure of the graph._" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Ybp1eslr4c89", + "outputId": "9e307259-52a8-4172-8725-6d7cde71ea80" + }, + "outputs": [], + "source": [ + "from networkx.algorithms import bipartite\n", + "bipartite.is_bipartite(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RcV_-8Dj4c89" + }, + "source": [ + "## Is the graph connected?\n", + "If the graph is connected then there is a path between any two nodes in the graph. If not, then some nodes are not connected. In the context of this application, a disconnected graph implies that there exist users in the graph who may not have rated a movie in common. If it is true that any given pair of users have rated at least one movie in common, then there is a path connecting these users through the movie they have rated in common." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KIYLmAtj4c8-" + }, + "source": [ + "## Identified fact:\n", + "_In the user community, if we pick any two users, then it is possible that they may not have rated a movie in common._" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Dr749ocn4c8-", + "outputId": "e4e91970-7275-4e6c-d1b6-589b7cb79039" + }, + "outputs": [], + "source": [ + "nx.is_connected(B)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1nNjYdTp4c8-" + }, + "outputs": [], + "source": [ + "users = [n for n in B.nodes if B.nodes[n]['bipartite'] == 0]\n", + "movies = [n for n in B.nodes if B.nodes[n]['bipartite'] == 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pWP1Tm0Z4c8-" + }, + "source": [ + "## How many movies does a User rate?\n", + "This is a distribution. A review of the plot below will show the familiar long tailed distribution. Most viewers rate less than say 100 movies. There are some serious reviewers out there though. These are on the tail of the distribution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "nW4ztdKR4c8-" + }, + "outputs": [], + "source": [ + "degu, degm = bipartite.degrees(B, movies)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xEkEriFa4c8-" + }, + "outputs": [], + "source": [ + "du = [v for k,v in degu]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 355 + }, + "id": "iMlIdvIp4c8-", + "outputId": "40bdc0d7-afe6-4d22-b26c-a9d7b305c696" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.rcParams['figure.figsize'] = [10, 5]\n", + "ax = plt.hist(du)\n", + "plt.title(\"Histogram of the Number of Movies Viewed\")\n", + "plt.xlabel(\"Movies Viewed\")\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9ePYKt-a4c8-" + }, + "source": [ + "### Identified fact:\n", + "_Inspecting the degree distribution of vertices is an activity we commonly perform to understand some basic characteristics of the network. In this application, this activity shows that most user's rate less than a 100 movies. The graph above is an example of \"long tailed distribution\". This is commonly seen in social networks._" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TLGsHDx24c8-" + }, + "source": [ + "## How many users rate a movie?\n", + "This is also a distribution that also has the long tailed behavior. Most mvoies are rated by less than 100 users. There are some movies that are rated by many viewers though." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 355 + }, + "id": "zCdf0HX34c8_", + "outputId": "0b0a31eb-bac7-400f-da72-b72020f0bcaa" + }, + "outputs": [], + "source": [ + "dm = [v for k,v in degm]\n", + "plt.rcParams['figure.figsize'] = [10, 5]\n", + "ax = plt.hist(dm)\n", + "plt.title(\"Histogram of the Number of Viewers Rating a Movie\")\n", + "plt.xlabel(\"Number of Viewers\")\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "43HtTUpU4c8_" + }, + "source": [ + "### Identified fact:\n", + "_We can repeat the exploration of degree distribution with the movie nodes. The behavior observed with the movie nodes is similar to what is observed with the user nodes. We observe the same \"long tailed\" distribution and most movies are rated by less than a 100 users._" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mNf2j7U14c8_" + }, + "source": [ + "## Centrality Measures\n", + "\n", + "A centrality measure identifies influential nodes in a network. How do we formalize the observations about movie importance and the user's rating behavior in the given network? The notion of centrality measure is useful in this regard. Many measures of node centrality are used, see [Chapter 3 of the text book by Zafarani et.al](http://dmml.asu.edu/smm/) for details. We will use degree centraility in this example (see the [documentation](https://networkx.github.io/documentation/stable/reference/algorithms/generated/networkx.algorithms.bipartite.centrality.degree_centrality.html) for details). In the illustrations below, we will capture the top 10 users and movies in terms of importance as determined by this measure. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BsHe6G_N4c8_" + }, + "outputs": [], + "source": [ + "dc= bipartite.degree_centrality(B, users)\n", + "sdcu = {}\n", + "sdcm = {}\n", + "for k, v in sorted(dc.items(),reverse=True, key=lambda item: item[1]):\n", + " if k.startswith(\"Users\"):\n", + " sdcu[k] = v\n", + " else:\n", + " sdcm[k] = v\n", + "\n", + "del dc" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Uf4MZBHe4c8_" + }, + "source": [ + "## List the top 10 users in terms of degree centrality\n", + "These guys rate a lot of movies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "N64DiO3H4c8_", + "outputId": "3aba9db1-4cb3-4350-fe55-993786eb8f3d" + }, + "outputs": [], + "source": [ + "list(sdcu.keys())[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "caKNxjrP4c8_" + }, + "source": [ + "## List the top 10 movies in terms of degree centrality\n", + "These movies are rated by a lot of people" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Gswkyc5f4c8_", + "outputId": "af141f85-b4b4-4b24-c098-2bdfb88da4f0" + }, + "outputs": [], + "source": [ + "list(sdcm.keys())[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CeHGqYwX4c8_" + }, + "source": [ + "## How does this importance measure vary over the user community?\n", + "We can get a sense of this by viewing the distribution of this measure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 604 + }, + "id": "0pOqgjAp4c9A", + "outputId": "a3abe1e1-e275-46fa-85a0-a1b64d0ec7a6" + }, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "npvals = np.fromiter(sdcu.values(), dtype=float)\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "ax = sns.distplot(npvals, hist = False)\n", + "plt.title(\"Distribution of User Degree Centrality\")\n", + "plt.xlabel(\"User Degree Centraility\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kbzu3I_q4c9A" + }, + "source": [ + "## How does this importance measure vary over the movie community?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 604 + }, + "id": "LQ28qv9y4c9A", + "outputId": "e0b35ddc-0ce8-4ef6-ff11-b5ec7d2115db" + }, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "npvals = np.fromiter(sdcm.values(), dtype=float)\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "ax = sns.distplot(npvals, hist = False)\n", + "plt.title(\"Distribution of Movie Degree Centrality\")\n", + "plt.xlabel(\"Movie Degree Centraility\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z1GwPZIg4c9A" + }, + "source": [ + "### Identified fact:\n", + "_We have a measure to capture the importance of a movie and a user on the basis of the rating activity performed on them. We have identified important users and movies in the network on the basis of this measure. We have also have information about how this importance measure varies over the users and movies in the data._" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "x1vtgYbAXpec" + }, + "outputs": [], + "source": [ + "m4v = [t[0] for t in g.in_edges('Movies/4')]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sO21vdXv4c9A" + }, + "source": [ + "## Similarity of nodes\n", + "Just like measures exist to quantify the importance of nodes in a network, there exist measures to quantify the similarity of nodes in a network. We will pick a random node in the network and characterize the similarity of nodes connected to it." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y4W1MtL-RTjK" + }, + "source": [ + "## How similar are viewers of the movie 'Get Shorty'?\n", + "In this example, we will use the __Jaccard__ similarity as a measure of node similarity. We first get all pairs of users who have seen the movie and then compute the __Jaccard__ similarity between them. The details are shown below. Networkx provides an API for this purpose that we will use." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "z4WoMVchXtVq" + }, + "outputs": [], + "source": [ + "from itertools import combinations\n", + "m4vucmb = list(combinations(m4v, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3Z4VBUvkXyHl" + }, + "outputs": [], + "source": [ + "import networkx as nx\n", + "gp = g.to_undirected()\n", + "jcp = nx.jaccard_coefficient(gp, m4vucmb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "f2i7Puh9X14N" + }, + "outputs": [], + "source": [ + "jcpv = []\n", + "for u, v, p in jcp:\n", + " jcpv.append(p)\n", + " #print('(%s, %s) -> %.8f' % (u, v, p))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-L1O0rhe4c9B" + }, + "source": [ + "## What does the distribution of User Similarity look like?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 604 + }, + "id": "ANP7CmNj4c9B", + "outputId": "0d78641c-b03c-48ff-e3a8-76a14d6719cf" + }, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "ax = sns.distplot(jcpv, hist = False)\n", + "plt.title(\"Distribution of Jaccard Similarity between Raters of Get Shorty\")\n", + "plt.xlabel(\"Jaccard Similarity\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dRNe85k54c9B" + }, + "source": [ + "### Identified fact:\n", + "_Picking a random node in the graph, we characterized the similarity of nodes connected to it. In this dataset, we can use this idea to get a sense of how similar user's rating a movie tend to be. A review of the above figure shows that a range of similarities are observed._" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1SJKyWDe4c9B" + }, + "source": [ + "## Bipartite Clustering\n", + "The next idea that we will investigate on the graph comes from [Latapy et.al](https://arxiv.org/abs/cond-mat/0611631). In this work, the authors extend the notion of clustering coefficients associated with a node to the case of bi-partite graphs. Since our graph is a bipartite graph, we will use this metric. See section VIII of the paper for a detailed explanation of the idea. Briefly, the clustering coefficient for a pair of nodes $u, v$, is defined as follows:\n", + "$$\n", + "\\begin{equation*}\n", + "cc(u,v) = \\frac{N(u)\\cap N(v)}{N(u) \\cup N(v)},\n", + "\\end{equation*}\n", + "$$\n", + "where:\n", + "\n", + "* N(u) is the neighborhood of node $u$. These are the nodes connected to $u$. For example, the movies user $u$ rates.\n", + "* N(v) is the neighborhood of node $v$.\n", + "Reviewing the above equation, it is evident that the clustering coefficient captures the shared neighborhood for a pair of nodes. Nodes associated with high clustering coefficient have many common neighbors. In the context of this problem, a pair of users with a high clustering coefficient suggests that these users have rated many movies in common. Similarly, a pair of movies with a high clustering coefficient suggests that these movies there are many common raters(users) for these movies. Networkx provides an implementation of this idea. The details of computing the clustering coefficients for the users and movies are shown below.\n", + "To obtain the clustering coefficient for a node $u$, we simply average the clustering coefficient of $u$ with other nodes that it shares common neighbors with. It is defined as follows:\n", + "\n", + "$$\n", + "\\begin{equation*}\n", + "cc(u) = \\frac{\\sum_{v \\in N(u)} cc(u,v)}{\\left| N(N(u) \\right|},\n", + "\\end{equation*}\n", + "$$\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "u7o7oLkC4c9B" + }, + "outputs": [], + "source": [ + "cr = bipartite.clustering(B)\n", + "cu = {}\n", + "cm = {}\n", + "for k, v in sorted(cr.items(),reverse=True, key=lambda item: item[1]):\n", + " if k.startswith(\"Users\"):\n", + " cu[k] = v\n", + " else:\n", + " cm[k] = v\n", + "\n", + "del cr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ATmq_-aK4c9B" + }, + "source": [ + "## List the top 10 users in terms of clustering tendencies \n", + "These users share a high degree of common movie rating activity with other users. If rating is used as a proxy for the act of liking or disliking a movie, then user's with high clustering values share rating activity with " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HX9colNZ4c9B", + "outputId": "660accba-5da0-47ba-b479-17667dc94eb9" + }, + "outputs": [], + "source": [ + "list(cu.keys())[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gE83U_Am4c9B" + }, + "source": [ + "## List the top 10 movies in terms of clustering tendencies \n", + "These movies have a high degree of common users rating them." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Av0ToBrp4c9C", + "outputId": "c97d33bd-1940-40e6-da2e-f2386753712b" + }, + "outputs": [], + "source": [ + "list(cm.keys())[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BgGI3bv04c9C" + }, + "source": [ + "## How does user clustering tendency vary over the community?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 604 + }, + "id": "JNGtK0z84c9C", + "outputId": "46a87af3-a70f-4613-fc00-a18290bde79e" + }, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "npvals = np.fromiter(cu.values(), dtype=float)\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "ax = sns.distplot(npvals, hist = False)\n", + "plt.title(\"Distribution of User Clustering Coefficients\")\n", + "plt.xlabel(\"User Clustering Coefficients\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EjfGafPm4c9C" + }, + "source": [ + "### Note:\n", + "Note that the distribution of user clustering coefficients has two humps (bi-modal). This suggests that there are two user communities. This is borne out when we visualize a sample of the user community using a _tSNE_ plot later in this notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SPxiPAjm4c9C" + }, + "source": [ + "## How does movie clustering tendency vary over the community?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 604 + }, + "id": "enjjfIib4c9C", + "outputId": "bf997c79-d536-42e9-dd90-1263cfea1a0b" + }, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "npvals = np.fromiter(cm.values(), dtype=float)\n", + "sns.set(rc={'figure.figsize':(11.7,8.27)})\n", + "ax = sns.distplot(npvals, hist = False)\n", + "plt.title(\"Distribution of Movie Clustering Coefficients\")\n", + "plt.xlabel(\"Movie Clustering Coefficients\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0ICweEaZ4c9C" + }, + "source": [ + "### Note:\n", + "Note that the distribution of user clustering coefficients has three humps. This suggests that there are three movie clusters. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b26SbNVt4c9C" + }, + "source": [ + "### Identified fact:\n", + "_We have identified users and movies that tend to have have a lot of common rating activity. We have identified that users and movies have clustering tendencies._" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hJmuEFFx4c9C" + }, + "source": [ + "# Using Node2vec to obtain a graph embedding" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Nc-VtRGO4c9D" + }, + "source": [ + "Machine learning techniques can be applied on graphs to determine vector representations of graph elements such as nodes and edges. Such a representation is called an _embedding_. We can use the Networkx representation of the graph associated with the 10 most clustered users and determine its embedding. We can use a technique called [_t Stochastic Neighbor Embedding_](https://www.youtube.com/watch?v=RJVL80Gg3lA&list=UUtXKDgv1AVoG88PLl8nGXmw) to plot a two dimensional representation of this subgraph. The details of doing this is provided below. Earlier we noted that the user clustering tendencies were bi-modal. A review of the embedding of the sub-graph associated with the 10 most clustered users shows that there are two clusters in the data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kHWs_A1X4c9D" + }, + "source": [ + "## Extract the sub-graph associated with the 10 most clustered users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "IoGJKmJm4c9D" + }, + "outputs": [], + "source": [ + "t10cu = list(cu.keys())[:10]\n", + "proj_user = nx.bipartite.projected_graph(B, t10cu)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qyZwFHnL4c9D", + "outputId": "2d8eaf1e-b445-430e-e675-6eb261884b11" + }, + "outputs": [], + "source": [ + "len(list(proj_user.edges()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tLgoFfvf4c9D", + "outputId": "68dd10d8-d483-4ed8-af2c-cca5afdb845c" + }, + "outputs": [], + "source": [ + "len(proj_user.nodes())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Jv5XKBLfRTjd" + }, + "source": [ + "## Embed the sub-graph using Node2vec " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 66, + "referenced_widgets": [ + "8c4c63c2ec584e8694949cde2b878278", + "6276d89c53f1452b82fed9c2af7e0236", + "e7a24632f5fb4670b7fd8945c8e64ce7", + "b9d9e6899f234dc381a947f25edd0b1f", + "7d125a00ff3046aab6c2dbd1b824ee5f", + "a61b9cb46d724bf8bdb24de5a9592017", + "9d1e1bb9a456457a87bb0dcb440f76dc", + "914e350efb3e4f4fbb1baf94fb4134a4" + ] + }, + "id": "e-fD-eNhX9Lh", + "outputId": "a2ffbdc5-860e-4e04-8e92-59ea7d3ff1e6" + }, + "outputs": [], + "source": [ + "from node2vec import Node2Vec\n", + "node2vec = Node2Vec(proj_user, dimensions=64, walk_length=10, num_walks=100, workers=4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6hu6Z0VPYDFK" + }, + "outputs": [], + "source": [ + "model = node2vec.fit(window=10, min_count=1, batch_words=4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "kUN1zLMG4c9D", + "outputId": "fd0aaad1-155c-45a2-d6b8-6f48c14920d0" + }, + "outputs": [], + "source": [ + "t10cu[2]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0NMFl0dD4c9D" + }, + "source": [ + "## Apply the model\n", + "We can ask questions like \"Who is most similar to (a particular user) Users/64?\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "41YVYl3jYHia", + "outputId": "02c9036c-cf25-4018-c742-ca595aa91b83" + }, + "outputs": [], + "source": [ + "model.wv.most_similar(t10cu[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SEgDZqYb4c9E" + }, + "source": [ + "## Embed the graph with tSNE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Ojg_VZVP4c9E" + }, + "outputs": [], + "source": [ + "t10cu_emb = { n: list(model.wv.get_vector(n)) for n in proj_user.nodes()}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 604 + }, + "id": "joYmsa3X4c9E", + "outputId": "a0e839c9-914d-4e0b-8499-37cb669f1e04" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from matplotlib import cm\n", + "from sklearn.manifold import TSNE\n", + "fig = plt.figure(figsize=(11.7,8.27))\n", + "plt.grid(True)\n", + "plt.xlabel(\"Comp 1\")\n", + "plt.ylabel(\"Comp 2\")\n", + "plt.title(\"tSNE plot of subgraph of top 10 most clustered users\")\n", + "t10cu_embedded = TSNE(n_components=2).fit_transform(list(t10cu_emb.values()))\n", + "sns.scatterplot(t10cu_embedded[:,0], t10cu_embedded[:,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "97aU0nWw4c9E" + }, + "source": [ + "__Using the Networkx adapter we have been able to perform a range of analysis tasks using the Networkx API. We were also able use the Networkx graph to obtain an embedding of a graph using Node2vec.__" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dA_np4UI4c9E" + }, + "source": [ + "## Store Embeddings in ArangoDB" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uzMUv9Ol4c9E", + "outputId": "6a171f56-f70c-4c04-dad4-85ec2d7fcd30" + }, + "outputs": [], + "source": [ + "%time\n", + "collection = db[\"Users\"]\n", + "with BulkOperation(collection, batchSize=500) as col:\n", + " #user_col = db.collections[\"Users\"]\n", + " for u, e in t10cu_emb.items():\n", + " the_key = u.split('/')[1]\n", + " the_user = collection[the_key]\n", + " the_user[\"n2v_emb\"] = e\n", + " the_user.patch()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O81cxxoM4c9E" + }, + "source": [ + "# Store metadata about these experiments using Arangopipe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7VxWRZOy4c9E" + }, + "outputs": [], + "source": [ + "from arangopipe.arangopipe_storage.arangopipe_api import ArangoPipe\n", + "from arangopipe.arangopipe_storage.arangopipe_admin_api import ArangoPipeAdmin\n", + "from arangopipe.arangopipe_storage.arangopipe_config import ArangoPipeConfig\n", + "from arangopipe.arangopipe_storage.managed_service_conn_parameters import ManagedServiceConnParam\n", + "mdb_config = ArangoPipeConfig()\n", + "msc = ManagedServiceConnParam()\n", + "conn_params = { msc.DB_SERVICE_HOST : \"arangoml.arangodb.cloud\", \\\n", + " msc.DB_SERVICE_END_POINT : \"createDB\",\\\n", + " msc.DB_SERVICE_NAME : \"createDB\",\\\n", + " msc.DB_SERVICE_PORT : 8529,\\\n", + " msc.DB_CONN_PROTOCOL : 'https'}\n", + " \n", + "mdb_config = mdb_config.create_connection_config(conn_params)\n", + "admin = ArangoPipeAdmin(reuse_connection = False, config = mdb_config)\n", + "ap_config = admin.get_config()\n", + "ap = ArangoPipe(config = ap_config)\n", + "proj_info = {\"name\": \"IMDB_Movie_Reviews\"}\n", + "proj_reg = admin.register_project(proj_info)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LH3eVkTHM6x6", + "outputId": "80cae2cd-d390-4a7d-b734-5b1b7893367a" + }, + "outputs": [], + "source": [ + "mdb_config.get_cfg()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2vQCXknQ4c9F" + }, + "outputs": [], + "source": [ + "import io\n", + "import requests\n", + "url = ('https://raw.githubusercontent.com/arangoml/networkx-adapter/master/examples/IMDB_Networkx_Adapter.ipynb')\n", + "nbjson = requests.get(url).text\n", + "model_info = {\"name\": \"Exploratory Data Analysis IMDB\", \"task\": \"multiple\", 'notebook': nbjson}\n", + "model_reg = ap.register_model(model_info, project = \"IMDB_Movie_Reviews\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "motmuZKd4c9F" + }, + "source": [ + "# Summary" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bkhLXelI4c9F" + }, + "source": [ + "* The Networkx-Adapter makes it easy to obtain Networkx graphs from ArangoDB graphs.\n", + "* We have demonstrated that using a graph representation helped us identify facts about the data. These facts were identified by leveraging standard ideas from Network Theory.\n", + "* We have leveraged the Networkx graph to obtain a _Node2vec_ embedding of the graph associated with our data. For an example of how the Networkx-Adapter can be used with a _deep learning_ library, please view the [ITSM ArangoDB Adapter](https://github.com/arangoml/networkx-adapter/blob/master/examples/ITSM_ArangoDB_Adapter.ipynb). " + ] + } + ], + "metadata": { + "colab": { + "name": "IMDB_Networkx_Adapter.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/ITSM_ArangoDB_Adapter.ipynb b/examples/ITSM_ArangoDB_Adapter.ipynb index eb71f4b2..b840d7e3 100644 --- a/examples/ITSM_ArangoDB_Adapter.ipynb +++ b/examples/ITSM_ArangoDB_Adapter.ipynb @@ -3,27 +3,22 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", - "id": "view-in-github" + "id": "MjUp8oZA_0EL" }, "source": [ - "\"Open" + "# Predicting IT Service Ticket Reassingnment Using RGCN (DGL)" ] }, { "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "MjUp8oZA_0EL" - }, + "metadata": {}, "source": [ - "# Predicting IT Service Ticket Reassingnment Using RGCN (DGL)" + "\"Open" ] }, { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "e6qWopH1_0EN" }, "source": [ @@ -33,7 +28,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "K6LQVNyO_0EQ" }, "source": [ @@ -44,18 +38,18 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "FF_RsnbzZsAM" }, "outputs": [], "source": [ "%%capture cap_out --no-stderr\n", - "!git clone -b master https://github.com/arangoml/networkx-adapter.git\n", - "!rsync - av networkx-adapter/examples / . / --exclude = .git\n", + "!git clone -b oasis_connector --single-branch https://github.com/arangodb/interactive_tutorials.git\n", + "!git clone -b 0.0.0.2.5.3 --single-branch https://github.com/arangoml/networkx-adapter.git\n", + "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", + "!rsync -av interactive_tutorials/ ./ --exclude=.git\n", + "!pip3 install adbnx_adapter=0.0.0.2.5.3\n", "!pip3 install networkx\n", "!pip3 install matplotlib\n", - "!pip install --index-url https://test.pypi.org/simple/ adbnx-adapter==0.0.0.2.5.3\n", "!pip3 install pyarango\n", "!pip3 install python-arango\n", "!pip install dgl" @@ -65,8 +59,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "Ly7pC2qEAjdL" }, "outputs": [], @@ -78,7 +70,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "50Xg1Wz1_0Eb" }, "source": [ @@ -88,7 +79,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "punGc278_0Ec" }, "source": [ @@ -99,8 +89,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "NhIdp2rNaos7" }, "outputs": [], @@ -118,7 +106,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "JWWsUIV0_0Ei" }, "source": [ @@ -128,7 +115,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "_HoUDu8R_0Ej" }, "source": [ @@ -139,20 +125,17 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "o5Q1aESiatNB" }, "outputs": [], "source": [ - "\n", + "!chmod -R 755 ./tools\n", "!./tools/arangorestore -c none --server.endpoint http+ssl://{con[\"hostname\"]}:{con[\"port\"]} --server.username {con[\"username\"]} --server.database {con[\"dbName\"]} --server.password {con[\"password\"]} --default-replication-factor 3 --input-directory \"data/dgl_data_dump\"" ] }, { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "ZqwkRxVx_0Eo" }, "source": [ @@ -162,7 +145,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "b4c-5Cpl_0Ep" }, "source": [ @@ -173,8 +155,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "5C-NW4amZ815" }, "outputs": [], @@ -195,7 +175,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "R8KCUbNi_0Eu" }, "source": [ @@ -206,8 +185,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "3qACbcQBbLEx" }, "outputs": [], @@ -220,8 +197,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "yBIgn6fGbPo1" }, "outputs": [], @@ -233,7 +208,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "SvY1SS3u_0E3" }, "source": [ @@ -244,8 +218,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "5KL6fN4wbfW3" }, "outputs": [], @@ -259,7 +231,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "6uMb3qm6_0E8" }, "source": [ @@ -269,7 +240,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "iTqlOrYA_0E8" }, "source": [ @@ -280,8 +250,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "UyDWiVL8bSny" }, "outputs": [], @@ -388,8 +356,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "Mjsfj08cboEx" }, "outputs": [], @@ -415,7 +381,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "SqMjZoSO_0FE" }, "source": [ @@ -426,8 +391,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "z2YZAGfgbsSy" }, "outputs": [], @@ -443,7 +406,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "oJIloQV-_0FI" }, "source": [ @@ -454,8 +416,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "XH-d0z3ibzJ0" }, "outputs": [], @@ -497,7 +457,6 @@ { "cell_type": "markdown", "metadata": { - "colab_type": "text", "id": "_B6fTCvt_0FM" }, "source": [ @@ -509,8 +468,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "zZucEAm4_0FM" }, "outputs": [], @@ -523,8 +480,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "OsJyZCgz_0FQ" }, "outputs": [], @@ -537,8 +492,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": {}, - "colab_type": "code", "id": "Bto7Q0qa_0FT" }, "outputs": [], @@ -549,7 +502,6 @@ ], "metadata": { "colab": { - "include_colab_link": true, "name": "ITSM_ArangoDB_Adapter.ipynb", "provenance": [] }, @@ -572,5 +524,5 @@ } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 0 } diff --git a/examples/ITSM_EDA.ipynb b/examples/ITSM_EDA.ipynb index 2bdd4374..00dc7f9c 100644 --- a/examples/ITSM_EDA.ipynb +++ b/examples/ITSM_EDA.ipynb @@ -1,308 +1,275 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.6" - }, - "colab": { - "name": "ITSM_EDA.ipynb", - "provenance": [], - "include_colab_link": true - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "EdwmCDNMvacj" + }, + "source": [ + "\"Open" + ] }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "RjBZf-SVdrga", - "colab_type": "text" - }, - "source": [ - "## Install Required Libraries" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "baCrm4a-dpUq", - "colab_type": "code", - "colab": {} - }, - "source": [ - "%%capture\n", - "!git clone -b doc_updates_nx https://github.com/arangoml/networkx-adapter.git\n", - "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", - "!pip3 install networkx\n", - "!pip3 install matplotlib\n", - "!pip3 install --index-url https://test.pypi.org/simple/ adbnx-adapter==0.0.0.2.5.3\n", - "!pip3 install pyarango\n", - "!pip3 install python-arango\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jL2HuHIqdk2W", - "colab_type": "text" - }, - "source": [ - "## Data Characteristics" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BPqAGfABdk2X", - "colab_type": "text" - }, - "source": [ - "The data is an event log that was extracted from the audit system of a __ServiceNow__ platform (this is an enterprise service help desk application). The data is available from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/Incident+management+process+enriched+event+log) (please visit the link for more details). This notebook captures the salient aspects of exploratory analysis of this dataset." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-0zJY4eldk2a", - "colab_type": "text" - }, - "source": [ - "## Read the data" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "eAMWQcO3dk2b", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "fp = \"data/incident_event_log.csv\"\n", - "df = pd.read_csv(fp)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "DKTpEAXJdk2g", - "colab_type": "text" - }, - "source": [ - "## What are the main characteristics?\n", - "1. What does a sample of the dataset look like?\n", - "2. How many incidents are reported in this dataset?" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "4HT6rg9hdk2h", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df.head()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "_3onCkdsdk2m", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['number'].nunique()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QQkLOWkFdk2q", - "colab_type": "text" - }, - "source": [ - "## List the data types of the various attributes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "wspAzvw6dk2r", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df.dtypes" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Bc6SO7Jkdk2v", - "colab_type": "text" - }, - "source": [ - "## Convert the $\\texttt{sys_updated_at}$ attribute to be a timestamp" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "3HpATu15dk2w", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['sys_updated_at'] = pd.to_datetime(df['sys_updated_at'])" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yGeJtQ94dk20", - "colab_type": "text" - }, - "source": [ - "## Machine Learning Task for this Dataset " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "n3EsAxURdk20", - "colab_type": "text" - }, - "source": [ - "The contributors of this dataset have used this data to predict the time to resolution of the ticket. This data has been used for a classification task in this work. A [graph convolutional network for relational data(GCN)](https://arxiv.org/abs/1703.06103) will be the machine learning task for this work. We will be using a __GCN__ to predict the property of a particular node. What property would be useful to predict ? What are the characteristics of this property in the data? The cells below explore these questions. " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yGxcIAlIdk21", - "colab_type": "text" - }, - "source": [ - "### Explore candidate list of tags\n", - "Note: For the experiment, we will pick a tag that is fairly evenly distributed in the data. This will avoild the imbalanced classs label problem." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "ofWeKiuWdk22", - "colab_type": "code", - "colab": {} - }, - "source": [ - "dfcc = df[['made_sla', 'urgency', 'impact', 'reassignment_count']]\n", - "for c in dfcc.columns.tolist():\n", - " print(str(dfcc[c].value_counts()))" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gKV5JEUUdk28", - "colab_type": "text" - }, - "source": [ - "A review of the level counts of the categorical variables in this dataset suggest that $\\texttt{made_sla}$ and $\\texttt{urgency}$ are both highly imbalanced. The minority levels are almost anomalies. The $\\texttt{reassignment_count}$ seems promising. We can derive a new attribute $\\texttt{reassigned}$ that captures if the ticket has been reassigned, i.e., has it been assigned to someone after the initial assignment. Such an attribute captures inefficiencies in triaging the ticket and is a useful indicator to track for an organization. A $0$ for this attribute indicates that there was no reassignment and a $1$ indicates that there was a reassignment. This attribute has a nice even spread in the data, i.e., an almost even spread of $0$ and $1$. The cells below create this attribute" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CYGI6SW5dk29", - "colab_type": "text" - }, - "source": [ - "## Feature Creation (reassigned):\n", - "It looks like tracking ticket reassignment can create a variable that is somewhat evenly distributed in the data. About half the tickets have the correct assignment at first. About half are reassigned to various degrees." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "XgFfomD6dk2-", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['reassigned'] = df['reassignment_count'].apply(lambda x: 0 if x == 0 else 1)\n", - "df['reassigned'].value_counts()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "nb44FIQZdk3B", - "colab_type": "code", - "colab": {} - }, - "source": [ - "dfpp = df.loc[df.groupby(by=['number']).sys_updated_at.idxmax()]\n", - "dfpp = dfpp.reset_index()\n", - "cols = dfpp.columns.tolist()\n", - "cols.remove('index')\n", - "cols.remove('number')\n", - "dfpp = dfpp[cols]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "sFYjOPcRdk3E", - "colab_type": "text" - }, - "source": [ - "Now that we have characterized the data and identified the machine learning task to be performed. The next step is to transform the data to a form amenable for machine learning. " - ] - } - ] -} \ No newline at end of file + { + "cell_type": "markdown", + "metadata": { + "id": "RjBZf-SVdrga" + }, + "source": [ + "## Install Required Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "baCrm4a-dpUq" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!git clone -b 0.0.0.2.5.3 https://github.com/arangoml/networkx-adapter.git\n", + "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", + "!pip3 install adbnx-adapter==0.0.0.2.5.3\n", + "!pip3 install networkx\n", + "!pip3 install matplotlib\n", + "!pip3 install pyarango\n", + "!pip3 install python-arango" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jL2HuHIqdk2W" + }, + "source": [ + "## Data Characteristics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BPqAGfABdk2X" + }, + "source": [ + "The data is an event log that was extracted from the audit system of a __ServiceNow__ platform (this is an enterprise service help desk application). The data is available from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/Incident+management+process+enriched+event+log) (please visit the link for more details). This notebook captures the salient aspects of exploratory analysis of this dataset." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-0zJY4eldk2a" + }, + "source": [ + "## Read the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "eAMWQcO3dk2b" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "fp = \"data/incident_event_log.csv\"\n", + "df = pd.read_csv(fp)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DKTpEAXJdk2g" + }, + "source": [ + "## What are the main characteristics?\n", + "1. What does a sample of the dataset look like?\n", + "2. How many incidents are reported in this dataset?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4HT6rg9hdk2h" + }, + "outputs": [], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "_3onCkdsdk2m" + }, + "outputs": [], + "source": [ + "df['number'].nunique()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QQkLOWkFdk2q" + }, + "source": [ + "## List the data types of the various attributes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wspAzvw6dk2r" + }, + "outputs": [], + "source": [ + "df.dtypes" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Bc6SO7Jkdk2v" + }, + "source": [ + "## Convert the $\\texttt{sys_updated_at}$ attribute to be a timestamp" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3HpATu15dk2w" + }, + "outputs": [], + "source": [ + "df['sys_updated_at'] = pd.to_datetime(df['sys_updated_at'])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yGeJtQ94dk20" + }, + "source": [ + "## Machine Learning Task for this Dataset " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n3EsAxURdk20" + }, + "source": [ + "The contributors of this dataset have used this data to predict the time to resolution of the ticket. This data has been used for a classification task in this work. A [graph convolutional network for relational data(GCN)](https://arxiv.org/abs/1703.06103) will be the machine learning task for this work. We will be using a __GCN__ to predict the property of a particular node. What property would be useful to predict ? What are the characteristics of this property in the data? The cells below explore these questions. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yGxcIAlIdk21" + }, + "source": [ + "### Explore candidate list of tags\n", + "Note: For the experiment, we will pick a tag that is fairly evenly distributed in the data. This will avoild the imbalanced classs label problem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ofWeKiuWdk22" + }, + "outputs": [], + "source": [ + "dfcc = df[['made_sla', 'urgency', 'impact', 'reassignment_count']]\n", + "for c in dfcc.columns.tolist():\n", + " print(str(dfcc[c].value_counts()))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gKV5JEUUdk28" + }, + "source": [ + "A review of the level counts of the categorical variables in this dataset suggest that $\\texttt{made_sla}$ and $\\texttt{urgency}$ are both highly imbalanced. The minority levels are almost anomalies. The $\\texttt{reassignment_count}$ seems promising. We can derive a new attribute $\\texttt{reassigned}$ that captures if the ticket has been reassigned, i.e., has it been assigned to someone after the initial assignment. Such an attribute captures inefficiencies in triaging the ticket and is a useful indicator to track for an organization. A $0$ for this attribute indicates that there was no reassignment and a $1$ indicates that there was a reassignment. This attribute has a nice even spread in the data, i.e., an almost even spread of $0$ and $1$. The cells below create this attribute" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CYGI6SW5dk29" + }, + "source": [ + "## Feature Creation (reassigned):\n", + "It looks like tracking ticket reassignment can create a variable that is somewhat evenly distributed in the data. About half the tickets have the correct assignment at first. About half are reassigned to various degrees." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "XgFfomD6dk2-" + }, + "outputs": [], + "source": [ + "df['reassigned'] = df['reassignment_count'].apply(lambda x: 0 if x == 0 else 1)\n", + "df['reassigned'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "nb44FIQZdk3B" + }, + "outputs": [], + "source": [ + "dfpp = df.loc[df.groupby(by=['number']).sys_updated_at.idxmax()]\n", + "dfpp = dfpp.reset_index()\n", + "cols = dfpp.columns.tolist()\n", + "cols.remove('index')\n", + "cols.remove('number')\n", + "dfpp = dfpp[cols]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sFYjOPcRdk3E" + }, + "source": [ + "Now that we have characterized the data and identified the machine learning task to be performed. The next step is to transform the data to a form amenable for machine learning. " + ] + } + ], + "metadata": { + "colab": { + "name": "ITSM_EDA.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/batch_graph_pre_processing.ipynb b/examples/batch_graph_pre_processing.ipynb index 1d691cc2..f33a1ca5 100644 --- a/examples/batch_graph_pre_processing.ipynb +++ b/examples/batch_graph_pre_processing.ipynb @@ -1,474 +1,415 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.6" - }, - "colab": { - "name": "batch_graph_pre_processing.ipynb", - "provenance": [], - "include_colab_link": true - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "teHHQQILe_dS", - "colab_type": "text" - }, - "source": [ - "## Get Raw Data for Processing" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "G-oxhBfae8Ae", - "colab_type": "code", - "colab": {} - }, - "source": [ - "%%capture\n", - "!git clone -b doc_updates_nx https://github.com/arangoml/networkx-adapter.git\n", - "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", - "!pip3 install networkx\n", - "!pip3 install matplotlib" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KzKGdXzUenuM", - "colab_type": "text" - }, - "source": [ - "## Preprocessing ITSM Data\n", - "The purpose of this notebook is to prepare the data in a format suitable for machine learning. The dataset consists of a few numerical and many categorical attributes. The numerical attributes are discretized. The embedding for the categorical values is developed similar to developing embeddings for words in NLP (see https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). Each categorical value is mapped to a unique integer. The encoded data that is presented to the embedding layer is a sequence of integers, with each integer corresponding to a word, This notebook performs this mapping. It also encodes unknown values to a 'UNKNOWN' category." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "bkRP-4eBenuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "fp = \"data/incident_event_log.csv\"\n", - "df = pd.read_csv(fp)\n", - "df['reassigned'] = df['reassigned'] = df['reassignment_count'].apply(lambda x: 0 if x == 0 else 1)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YGEszr3GenuT", - "colab_type": "text" - }, - "source": [ - "## Discretize the numerical attributes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "d6mTJ90venuU", - "colab_type": "code", - "colab": {} - }, - "source": [ - "numeric = ['sys_mod_count', 'reopen_count']\n", - "dfn = df[numeric]\n", - "dcols = []\n", - "for col in numeric:\n", - " dlabel = 'D_' + col\n", - " labels = [dlabel +'_' + str(c) for c in range(5)]\n", - " dcols.append(dlabel)\n", - " dfn[dlabel] = pd.qcut(dfn[col].rank(method='first'),5, labels = labels, duplicates = 'drop')\n", - " " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "b_EF79pOenuZ", - "colab_type": "code", - "colab": {} - }, - "source": [ - "dfn.head()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "lE815N7venud", - "colab_type": "text" - }, - "source": [ - "## Isolate the attributes used for the analysis \n", - "1. Remove the timestamp attributes\n", - "2. Remove the numeric attributes. The discretized version of these attributes is added subsequently" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "cxUt-5Enenue", - "colab_type": "code", - "colab": {} - }, - "source": [ - "attributes = df.columns.tolist()\n", - "remove = [ 'made_sla', 'opened_at', 'resolved_at','sys_created_at', 'caller_id', 'closed_at',\\\n", - " 'notify', 'sys_updated_by','sys_created_by', 'number', 'sys_updated_at', 'reassigned' ]\n", - "exclude = remove + numeric\n", - "keep = list(set(attributes) - set(exclude)) \n", - "keep" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "DbVuZhgsenuk", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df_cat_vars = df[keep]\n", - "df_cat_vars = df_cat_vars.replace(to_replace = '?', value = 'UNKNOWN')\n", - "df_cat_vars = pd.concat([df_cat_vars, dfn[dcols]], axis = 1)\n", - "df['made_sla'] = df['made_sla'].map({True: 1, False: 0})\n", - "\n", - "df = df.reset_index()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Vto4QKbxenuo", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['reassigned'].value_counts()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "ogJ0oAlSenus", - "colab_type": "code", - "colab": {} - }, - "source": [ - "cols = df_cat_vars.columns.tolist()\n", - "vocab_size = 0\n", - "for c in cols:\n", - " print(\"Num unique vals for category \" + str(c) + \" = \" + str(df_cat_vars[c].nunique()))\n", - " vocab_size += df_cat_vars[c].nunique()\n", - "print(\"Vocab size: %s\" % vocab_size)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "juRDL5_lenuw", - "colab_type": "text" - }, - "source": [ - "## Recode the categorical values to integers" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "oVM1rplIenux", - "colab_type": "code", - "colab": {} - }, - "source": [ - "UNKNOWN_VAL = 1\n", - "cat_cols = df_cat_vars.columns.tolist()\n", - "cat_int_map = {col: dict() for col in cat_cols}\n", - "int_index = 2\n", - "for c in cat_cols:\n", - " unique_col_values = df_cat_vars[c].unique().tolist()\n", - " col_int_map = cat_int_map[c]\n", - " for uv in unique_col_values:\n", - " if uv == 'UNKNOWN':\n", - " col_int_map[uv] = UNKNOWN_VAL\n", - " else:\n", - " col_int_map[uv] = int_index\n", - " int_index +=1\n", - " df_cat_vars[c] = df_cat_vars[c].map(cat_int_map[c]) " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "lH6qzefOenu0", - "colab_type": "code", - "colab": {} - }, - "source": [ - "combined_cat_int_map = dict()\n", - "for col in cat_int_map.keys():\n", - " for cat_val, int_map in cat_int_map[col].items():\n", - " combined_cat_int_map[cat_val] = int_map\n", - " " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jH9uA2IVenu3", - "colab_type": "text" - }, - "source": [ - "## Write preprocessed raw data to disk" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "kWMHA7eSenu4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "fp_cat_int_map = \"data/category_to_integer_map.csv\"\n", - "df_map = pd.DataFrame(combined_cat_int_map, index = [0])\n", - "df_map = df_map.T\n", - "df_map = df_map.reset_index()\n", - "df_map.columns = [\"cat_value\", \"assigned_integer\"]\n", - "df_map.to_csv(fp_cat_int_map, index = False)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "qzbT2d08enu7", - "colab_type": "code", - "colab": {} - }, - "source": [ - "add_to_cat_vars = ['number','sys_updated_at', 'reassigned'] \n", - "df = pd.concat([df[add_to_cat_vars], df_cat_vars], axis = 1)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "wDA8_L5-enu-", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['sys_updated_at'] = pd.to_datetime(df['sys_updated_at']) " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "qN8WD2teenvB", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['sys_updated_at'].dtype" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "93OcLjSVenvE", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = df.sort_values(by = ['number', 'sys_updated_at'])" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "WK00OhfzenvH", - "colab_type": "code", - "colab": {} - }, - "source": [ - "fp = 'data/pp_batch_incident_event_log.csv'\n", - "df.to_csv(fp, index = False)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "0DcHNc36envK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df['reassigned'].value_counts()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "0GqTrpLVenvM", - "colab_type": "code", - "colab": {} - }, - "source": [ - "int_index" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0n0Jwy-OenvP", - "colab_type": "text" - }, - "source": [ - "## Generate data for learning\n", - "The data used for learning has the raw data summarized by incident, i.e. , the raw data for each incident is grouped and summarized. A sample of the data used for learning can be viewed." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "odZ5S1XienvQ", - "colab_type": "code", - "colab": {} - }, - "source": [ - "dfgb = df.groupby(by = ['number'])\n", - "df_pp = df.loc[dfgb.sys_updated_at.idxmax()]\n", - "df_pp = df_pp.reset_index()\n", - "cols = df_pp.columns.tolist()\n", - "cols.remove('index')\n", - "df_pp = df_pp[cols]\n", - "fprp = \"data/pp_recoded_incident_event_log.csv\"\n", - "df_pp.to_csv(fprp, index = False)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "jZ_27dx5envT", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df_pp['reassigned'].value_counts()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "NnNYbdqzenvX", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df_pp.head()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "1Bi1Wyaienvb", - "colab_type": "code", - "colab": {} - }, - "source": [ - "vocab_size" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "p77zo3FUenve", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - } - ] -} \ No newline at end of file + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "teHHQQILe_dS" + }, + "source": [ + "## Get Raw Data for Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "G-oxhBfae8Ae" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!git clone -b 0.0.0.2.5.3 https://github.com/arangoml/networkx-adapter.git\n", + "!rsync -av networkx-adapter/examples/ ./ --exclude=.git\n", + "!pip3 install networkx\n", + "!pip3 install matplotlib" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KzKGdXzUenuM" + }, + "source": [ + "## Preprocessing ITSM Data\n", + "The purpose of this notebook is to prepare the data in a format suitable for machine learning. The dataset consists of a few numerical and many categorical attributes. The numerical attributes are discretized. The embedding for the categorical values is developed similar to developing embeddings for words in NLP (see https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). Each categorical value is mapped to a unique integer. The encoded data that is presented to the embedding layer is a sequence of integers, with each integer corresponding to a word, This notebook performs this mapping. It also encodes unknown values to a 'UNKNOWN' category." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bkRP-4eBenuN" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "fp = \"data/incident_event_log.csv\"\n", + "df = pd.read_csv(fp)\n", + "df['reassigned'] = df['reassigned'] = df['reassignment_count'].apply(lambda x: 0 if x == 0 else 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YGEszr3GenuT" + }, + "source": [ + "## Discretize the numerical attributes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d6mTJ90venuU" + }, + "outputs": [], + "source": [ + "numeric = ['sys_mod_count', 'reopen_count']\n", + "dfn = df[numeric]\n", + "dcols = []\n", + "for col in numeric:\n", + " dlabel = 'D_' + col\n", + " labels = [dlabel +'_' + str(c) for c in range(5)]\n", + " dcols.append(dlabel)\n", + " dfn[dlabel] = pd.qcut(dfn[col].rank(method='first'),5, labels = labels, duplicates = 'drop')\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b_EF79pOenuZ" + }, + "outputs": [], + "source": [ + "dfn.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lE815N7venud" + }, + "source": [ + "## Isolate the attributes used for the analysis \n", + "1. Remove the timestamp attributes\n", + "2. Remove the numeric attributes. The discretized version of these attributes is added subsequently" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "cxUt-5Enenue" + }, + "outputs": [], + "source": [ + "attributes = df.columns.tolist()\n", + "remove = [ 'made_sla', 'opened_at', 'resolved_at','sys_created_at', 'caller_id', 'closed_at',\\\n", + " 'notify', 'sys_updated_by','sys_created_by', 'number', 'sys_updated_at', 'reassigned' ]\n", + "exclude = remove + numeric\n", + "keep = list(set(attributes) - set(exclude)) \n", + "keep" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DbVuZhgsenuk" + }, + "outputs": [], + "source": [ + "df_cat_vars = df[keep]\n", + "df_cat_vars = df_cat_vars.replace(to_replace = '?', value = 'UNKNOWN')\n", + "df_cat_vars = pd.concat([df_cat_vars, dfn[dcols]], axis = 1)\n", + "df['made_sla'] = df['made_sla'].map({True: 1, False: 0})\n", + "\n", + "df = df.reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Vto4QKbxenuo" + }, + "outputs": [], + "source": [ + "df['reassigned'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ogJ0oAlSenus" + }, + "outputs": [], + "source": [ + "cols = df_cat_vars.columns.tolist()\n", + "vocab_size = 0\n", + "for c in cols:\n", + " print(\"Num unique vals for category \" + str(c) + \" = \" + str(df_cat_vars[c].nunique()))\n", + " vocab_size += df_cat_vars[c].nunique()\n", + "print(\"Vocab size: %s\" % vocab_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "juRDL5_lenuw" + }, + "source": [ + "## Recode the categorical values to integers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "oVM1rplIenux" + }, + "outputs": [], + "source": [ + "UNKNOWN_VAL = 1\n", + "cat_cols = df_cat_vars.columns.tolist()\n", + "cat_int_map = {col: dict() for col in cat_cols}\n", + "int_index = 2\n", + "for c in cat_cols:\n", + " unique_col_values = df_cat_vars[c].unique().tolist()\n", + " col_int_map = cat_int_map[c]\n", + " for uv in unique_col_values:\n", + " if uv == 'UNKNOWN':\n", + " col_int_map[uv] = UNKNOWN_VAL\n", + " else:\n", + " col_int_map[uv] = int_index\n", + " int_index +=1\n", + " df_cat_vars[c] = df_cat_vars[c].map(cat_int_map[c]) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lH6qzefOenu0" + }, + "outputs": [], + "source": [ + "combined_cat_int_map = dict()\n", + "for col in cat_int_map.keys():\n", + " for cat_val, int_map in cat_int_map[col].items():\n", + " combined_cat_int_map[cat_val] = int_map\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jH9uA2IVenu3" + }, + "source": [ + "## Write preprocessed raw data to disk" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kWMHA7eSenu4" + }, + "outputs": [], + "source": [ + "fp_cat_int_map = \"data/category_to_integer_map.csv\"\n", + "df_map = pd.DataFrame(combined_cat_int_map, index = [0])\n", + "df_map = df_map.T\n", + "df_map = df_map.reset_index()\n", + "df_map.columns = [\"cat_value\", \"assigned_integer\"]\n", + "df_map.to_csv(fp_cat_int_map, index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qzbT2d08enu7" + }, + "outputs": [], + "source": [ + "add_to_cat_vars = ['number','sys_updated_at', 'reassigned'] \n", + "df = pd.concat([df[add_to_cat_vars], df_cat_vars], axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wDA8_L5-enu-" + }, + "outputs": [], + "source": [ + "df['sys_updated_at'] = pd.to_datetime(df['sys_updated_at']) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qN8WD2teenvB" + }, + "outputs": [], + "source": [ + "df['sys_updated_at'].dtype" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "93OcLjSVenvE" + }, + "outputs": [], + "source": [ + "df = df.sort_values(by = ['number', 'sys_updated_at'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WK00OhfzenvH" + }, + "outputs": [], + "source": [ + "fp = 'data/pp_batch_incident_event_log.csv'\n", + "df.to_csv(fp, index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0DcHNc36envK" + }, + "outputs": [], + "source": [ + "df['reassigned'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0GqTrpLVenvM" + }, + "outputs": [], + "source": [ + "int_index" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0n0Jwy-OenvP" + }, + "source": [ + "## Generate data for learning\n", + "The data used for learning has the raw data summarized by incident, i.e. , the raw data for each incident is grouped and summarized. A sample of the data used for learning can be viewed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "odZ5S1XienvQ" + }, + "outputs": [], + "source": [ + "dfgb = df.groupby(by = ['number'])\n", + "df_pp = df.loc[dfgb.sys_updated_at.idxmax()]\n", + "df_pp = df_pp.reset_index()\n", + "cols = df_pp.columns.tolist()\n", + "cols.remove('index')\n", + "df_pp = df_pp[cols]\n", + "fprp = \"data/pp_recoded_incident_event_log.csv\"\n", + "df_pp.to_csv(fprp, index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jZ_27dx5envT" + }, + "outputs": [], + "source": [ + "df_pp['reassigned'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "NnNYbdqzenvX" + }, + "outputs": [], + "source": [ + "df_pp.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1Bi1Wyaienvb" + }, + "outputs": [], + "source": [ + "vocab_size" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "p77zo3FUenve" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "name": "batch_graph_pre_processing.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}