{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "name": "python3", "display_name": "Python 3" }, "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.6.5" }, "colab": { "name": "Facebook_Friend_Recommendation.ipynb", "version": "0.3.2", "provenance": [], "collapsed_sections": [], "machine_shape": "hm", "include_colab_link": true }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "QGUBrE5C-Pt8", "colab_type": "text" }, "source": [ "

Social network Graph Link Prediction - Facebook Challenge

" ] }, { "cell_type": "markdown", "metadata": { "id": "qotXQBUD-Pt-", "colab_type": "text" }, "source": [ "### Problem statement: \n", "Given a directed social graph, have to predict missing links to recommend users (Link Prediction in graph)" ] }, { "cell_type": "markdown", "metadata": { "id": "U1VtYvxV-PuA", "colab_type": "text" }, "source": [ "### Data Overview\n", "Taken data from facebook's recruting challenge on kaggle https://www.kaggle.com/c/FacebookRecruiting \n", "data contains two columns source and destination eac edge in graph \n", " - Data columns (total 2 columns): \n", " - source_node int64 \n", " - destination_node int64 " ] }, { "cell_type": "markdown", "metadata": { "id": "JXhF2X8O-PuB", "colab_type": "text" }, "source": [ "### Mapping the problem into supervised learning problem:\n", "- Generated training samples of good and bad links from given directed graph and for each link got some features like no of followers, is he followed back, page rank, katz score, adar index, some svd fetures of adj matrix, some weight features etc. and trained ml model based on these features to predict link. \n", "- Some reference papers and videos : \n", " - https://www.cs.cornell.edu/home/kleinber/link-pred.pdf\n", " - https://www3.nd.edu/~dial/publications/lichtenwalter2010new.pdf\n", " - https://kaggle2.blob.core.windows.net/forum-message-attachments/2594/supervised_link_prediction.pdf\n", " - https://www.youtube.com/watch?v=2M77Hgy17cg" ] }, { "cell_type": "markdown", "metadata": { "id": "Zu_jGwgZ-PuD", "colab_type": "text" }, "source": [ "### Business objectives and constraints: \n", "- No low-latency requirement.\n", "- Probability of prediction is useful to recommend ighest probability links" ] }, { "cell_type": "markdown", "metadata": { "id": "Rk3d4zJJ-PuF", "colab_type": "text" }, "source": [ "### Performance metric for supervised learning: \n", "- Both precision and recall is important so F1 score is good choice\n", "- Confusion matrix" ] }, { "cell_type": "code", "metadata": { "id": "XFqwGBjI-PuH", "colab_type": "code", "colab": {} }, "source": [ "#Importing Libraries\n", "# please do go through this python notebook: \n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "import csv\n", "import pandas as pd#pandas to create small dataframes \n", "import datetime #Convert to unix time\n", "import time #Convert to unix time\n", "# if numpy is not installed already : pip3 install numpy\n", "import numpy as np#Do aritmetic operations on arrays\n", "# matplotlib: used to plot graphs\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import seaborn as sns#Plots\n", "from matplotlib import rcParams#Size of plots \n", "from sklearn.cluster import MiniBatchKMeans, KMeans#Clustering\n", "import math\n", "import pickle\n", "import os\n", "# to install xgboost: pip3 install xgboost\n", "import xgboost as xgb\n", "\n", "import warnings\n", "import networkx as nx\n", "import pdb\n", "import pickle" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4Jsq-SFM_HJO", "colab_type": "code", "outputId": "8b9b0fe8-6aeb-4936-cb0e-7776082a3165", "colab": { "base_uri": "https://localhost:8080/", "height": 125 } }, "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n", "\n", "Enter your authorization code:\n", "··········\n", "Mounted at /content/drive\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "kQkft9We-PuO", "colab_type": "code", "outputId": "9f759c26-b4e5-4789-fa5f-b3a4568278c0", "colab": { "base_uri": "https://localhost:8080/", "height": 126 } }, "source": [ "#reading graph\n", "if not os.path.isfile('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_woheader.csv'):\n", " print(\"true\")\n", " traincsv = pd.read_csv('drive/My Drive/FacebookGraphRecomm/data/data/train.csv')\n", " print(traincsv[traincsv.isna().any(1)])\n", " print(traincsv.info())\n", " print(\"Number of diplicate entries: \",sum(traincsv.duplicated()))\n", " traincsv.to_csv('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_woheader.csv',header=False,index=False)\n", " print(\"saved the graph into file\")\n", "else:\n", " g=nx.read_edgelist('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_woheader.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n", " print(nx.info(g))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Name: \n", "Type: DiGraph\n", "Number of nodes: 1862220\n", "Number of edges: 9437519\n", "Average in degree: 5.0679\n", "Average out degree: 5.0679\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "r0gjAc3m-PuZ", "colab_type": "text" }, "source": [ "> Displaying a sub graph" ] }, { "cell_type": "code", "metadata": { "id": "SIfulo_s-Pub", "colab_type": "code", "outputId": "e91300dd-3aff-430c-e596-771ef434bb66", "colab": { "base_uri": "https://localhost:8080/", "height": 428 } }, "source": [ "if not os.path.isfile('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_woheader_sample.csv'):\n", " pd.read_csv('drive/My Drive/FacebookGraphRecomm/data//data/train.csv', nrows=50).to_csv('train_woheader_sample.csv',header=False,index=False)\n", " \n", "subgraph=nx.read_edgelist('train_woheader_sample.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n", "# https://stackoverflow.com/questions/9402255/drawing-a-huge-graph-with-networkx-and-matplotlib\n", "\n", "pos=nx.spring_layout(subgraph)\n", "nx.draw(subgraph,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,edge_cmap=plt.cm.Blues,with_labels=True)\n", "plt.savefig(\"graph_sample.pdf\")\n", "print(nx.info(subgraph))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Name: \n", "Type: DiGraph\n", "Number of nodes: 66\n", "Number of edges: 50\n", "Average in degree: 0.7576\n", "Average out degree: 0.7576\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "MnXlSKiV-Pui", "colab_type": "text" }, "source": [ "# 1. Exploratory Data Analysis" ] }, { "cell_type": "code", "metadata": { "id": "eDX3QOIC-Puj", "colab_type": "code", "outputId": "eec2a3e8-2f8d-4f84-82ae-a82a5de7beca", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "# No of Unique persons \n", "print(\"The number of unique persons\",len(g.nodes()))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "The number of unique persons 1862220\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "xDuUqLla-Pur", "colab_type": "text" }, "source": [ "## 1.1 No of followers for each person" ] }, { "cell_type": "code", "metadata": { "id": "KADUEWbm-Put", "colab_type": "code", "outputId": "d040003b-b63f-4486-a72a-41a2da7d3e57", "colab": { "base_uri": "https://localhost:8080/", "height": 393 } }, "source": [ "indegree_dist = list(dict(g.in_degree()).values())\n", "indegree_dist.sort()\n", "plt.figure(figsize=(10,6))\n", "plt.plot(indegree_dist)\n", "plt.xlabel('Index No')\n", "plt.ylabel('No Of Followers')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\nIoYzSZKkivx/qgdKFJT67X4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "x3G4FCzLWPsN", "colab_type": "code", "outputId": "3a389a53-8fb6-4f2d-f6a0-e84152d28751", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "list(g.in_degree())[:5]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[(1, 3), (690569, 29), (315892, 28), (189226, 3), (2, 4)]" ] }, "metadata": { "tags": [] }, "execution_count": 15 } ] }, { "cell_type": "code", "metadata": { "id": "XHYCFB2u-Pu0", "colab_type": "code", "outputId": "13af3480-cb1a-4dab-a198-90035b81abf2", "colab": { "base_uri": "https://localhost:8080/", "height": 393 } }, "source": [ "indegree_dist = list(dict(g.in_degree()).values())\n", "indegree_dist.sort()\n", "plt.figure(figsize=(10,6))\n", "plt.plot(indegree_dist[0:1500000])\n", "plt.xlabel('Index No')\n", "plt.ylabel('No Of Followers')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAF3CAYAAACSQ46hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAHqhJREFUeJzt3Xu0ZGV55/Hv031oLg3h1qhAc2hQ\ngouBcPGE4OA4XgKiY2BUgrBEUJzprMyMo8GJA16SSVwmQ0wcdckIxxFkRYLGBgwSlChBGGfFJoBc\nmksLImgj2IBoA1Gg4Zk/ap8+1e05VXXq9Ft7n6rvZ61aXbXr8j61z+acH++733dHZiJJkqQyFtVd\ngCRJ0jAzbEmSJBVk2JIkSSrIsCVJklSQYUuSJKkgw5YkSVJBhi1JkqSCDFuSJEkFGbYkSZIKMmxJ\nkiQVNFZ3Ae2WLVuWK1asqLsMSZKkrm666aZHM3OPbq9rVNhasWIFN954Y91lSJIkdRURD/TyOocR\nJUmSCjJsSZIkFWTYkiRJKsiwJUmSVJBhS5IkqSDDliRJUkGGLUmSpIIMW5IkSQUZtiRJkgoqFrYi\n4sCIuKXttiEi3luqPUmSpCYqdrmezFwLHAYQEYuBB4HLS7UnSZLURIO6NuJrge9nZk/XEJIkSXrk\niadZ8+Ofz/l9iyL4t7/e9frQAzOosHUycMlMT0TESmAlwPj4+IDKkSRJTfeBy2/nG3f+ZM7v226b\nRdz9kdcXqKg/xcNWRCwBjgfOnun5zJwEJgEmJiaydD2SJGlheOrpjbz0RTvx528+ZE7vWxRRqKL+\nDKJn6/XAzZk592gqSZJG2k7bjXH4+K51lzEvg1j64RRmGUKUJEmaTSYEzeql6kfRsBURS4FjgMtK\ntiNJkoZPMhxnFxUdRszMp4DdS7YhSZKG2MLv2HIFeUmS1EytYcSFz7AlSZIaaTgGEQ1bkiSpwRq2\nikNfDFuSJKmZnI0oSZJUzrDMRjRsSZKkxnIYUZIkqZBMw5YkSVIxwzGIaNiSJEkN5gnykiRJhWSm\nw4iSJEmlOIwoSZKkrgxbkiSpkVqzERf+OKJhS5IkNZLDiJIkSYUt/H4tw5YkSWoqZyNKkiSV4zCi\nJElSYUPQsWXYkiRJzeRsREmSpIKStGdLkiRJnRm2JElSI7WGEeuuYv4MW5IkqZEyYRhOkTdsSZIk\nFWTYkiRJjZQ4jChJklRMprMRJUmS1IVhS5IkNZbDiJIkSYVkQgzBQKJhS5IkqSDDliRJaqQkHUaU\nJEkqxRXkJUmS1FXRsBURu0TEqoi4OyLuioiXl2xPkiQNj2Q4TpAfK/z5nwS+npknRsQSYIfC7UmS\npCGRremIC16xsBUROwOvBN4BkJnPAM+Uak+SJKmJSvZs7Qc8AlwYEYcCNwHvycynCrYpSZIG5Jq7\nfsL7V93Gc5lFPn/DL57loL12LvLZg1QybI0BRwDvzszVEfFJ4Czgw+0vioiVwEqA8fHxguVIkqSt\n6c4fb+Cxp57h7Ufty6JCw33HH7Z3mQ8eoJJhax2wLjNXV49X0Qpbm8nMSWASYGJiokw0liRJW93U\nH+3/cfy/YnGptDUEis1GzMyHgR9FxIHVptcCd5ZqT5IkDVah0cOhU3o24ruBi6uZiPcB7yzcniRJ\nGjD7tDorGrYy8xZgomQbkiSpHlkNJA7DKu8luYK8JEnqi8OIvTFsSZKkeQm7tjoybEmSpL7YsdUb\nw5YkSeqP44g9MWxJkqS+OYLYnWFLkiT1JXHZh14YtiRJUl8yPTm+F4YtSZKkggxbkiSpL0k6jNgD\nw5YkSepLaxix7iqaz7AlSZJUkGFLkiT1pTUb0a6tbgxbkiSpL+naDz0xbEmSJBVk2JIkSX1xNmJv\nDFuSJKk/zkbsiWFLkiSpIMOWJEnqi7MRe2PYkiRJfclMhxF7YNiSJEkqyLAlSZL6kukyW70wbEmS\npL4kEI4jdmXYkiRJKsiwJUmS+uIwYm8MW5IkqS+JaasXhi1JkqSCDFuSJKkvDiP2xrAlSZL65mzE\n7gxbkiRJBRm2JElSX7xcT28MW5IkqS+tC1GrG8OWJEnqS2bdFSwMhi1JktQ3T5Dvbqzkh0fE/cAT\nwHPAxsycKNmeJEkanCQdRuxB0bBVeXVmPjqAdiRJ0gA5jNgbhxElSVLfHEXsrnTPVgL/EBEJnJ+Z\nk4XbkyRp5Fxx64+5+YHHB97ujfc/jvMRuysdtl6RmQ9GxAuAb0TE3Zl5ffsLImIlsBJgfHy8cDmS\nJA2fc752N+uf+CXbb7N44G0ftf/uA29zoSkatjLzwerf9RFxOXAkcP0Wr5kEJgEmJiYc/ZUkaY6e\nez550+F78xcnHlp3KZpBsXO2ImJpROw0dR84FlhTqj1JkqQmKtmz9ULg8mr9jTHgbzLz6wXbkyRp\nJLWWYPDcqaYqFrYy8z7A/kxJkgrLdFZgk7n0gyRJUkGGLUmSFrjEnq0mM2xJkrTAtVZyN201lWFL\nkiSpIMOWJEkLXjqM2GCGLUmSFrhMBxGbzLAlSZJUkGFLkqQFztmIzWbYkiRpgct0BfkmM2xJkiQV\nZNiSJGmBcxix2QxbkiQtcM5GbDbDliRJUkGGLUmSFrjMJBxHbCzDliRJC1zWXYA6MmxJkrTQmbYa\nzbAlSdIQcBSxuQxbkiQtcAkuatpghi1Jkha4TMcRm8ywJUnSEHAYsbkMW5IkLXCtYUQ1VdewFRG/\nGxE7Vfc/FBGXRcQR5UuTJEm9cBSx2Xrp2fpwZj4REa8Afhv4HPCZsmVJkqS5cBixuXoJW89V//47\nYDIz/x5YUq4kSZI0F4kryDdZL2HrwYg4H3grcFVEbNvj+yRJ0gA4jNhsvYSmk4Crgddl5s+A3YA/\nLFqVJEmaE/u1mmus05MRsRi4OTNfOrUtMx8CHipdmCRJ6k2CaavBOvZsZeZzwNqIGB9QPZIkaa4c\nRmy0jj1blV2BOyLiBuCpqY2ZeXyxqiRJ0px4uZ7m6iVsfbh4FZIkqW+t2Yh1V6HZdA1bmXldROwL\nHJCZ34yIHYDF5UuTJEm9cDZis/Wygvx/BFYB51eb9ga+UrIoSZI0N3ZsNVcvSz/8Z+BoYANAZt4D\nvKBkUZIkqXeJK8g3WS9h6+nMfGbqQUSM4bwHSZIaIx1HbLRewtZ1EfEBYPuIOAb4MvDVXhuIiMUR\n8d2IuLLfIiVJUmfORmyuXsLWWcAjwO3A7wFXAR+aQxvvAe6ae2mSJKkXDiM2Wy9LP7wa+EJmfnau\nHx4Ry2ldwPqjwJlzfb8kSXXb+Nzz3PXQEzzX4KG6BpcmegtbpwGfiYifAv8XuB74dmY+3sN7PwG8\nH9ip/xIlSarPxat/yB9fcUfdZXS1w5Je/qSrDr2ss3U6QETsBZwInAvs1e29EfFGYH1m3hQRr+rw\nupXASoDxca8KJElqlg2/eBaAz542wdiiZo7VLVoUHLlit7rL0Cy6hq2IOBX4N8AhwKPAp2n1cHVz\nNHB8RLwB2A74tYj4Qmae2v6izJwEJgEmJibsCJUkNcrUH6ZXH7gHY4t7OdVZ2lwvfY6fAL4PnAdc\nm5n39/LBmXk2cDZA1bP137YMWpIkNd3U+VDhGejqU9eInpnLgDNo9U59NCJuiIi/Ll6ZJEnSEOhl\nGPHXgHFgX2AFsDPw/FwaycxvAd+ac3WSJNUsq4FE+7XUr16GEb/ddvt0Zq4rW5IkSc0xPYxYbx1a\nuHqZjfgbABGxY/lyJEmShkvXc7Yi4uCI+C5wB3BnRNwUEQeXL02SpPpNzUb0BHn1q5c5rJPAmZm5\nb2aOA++rtkmSNPxcnl3z1EvYWpqZ1049qE52X1qsIkmSpCHSywny90XEh4Gp5R5OBe4rV5IkSc3h\nRZ41X730bJ0B7AFcVt32qLZJkjT0Ml32QfPTy2zEx4H/OoBaJEmShs6sYSsivsr0JIxfkZnHF6lI\nkqQGSdKZiJqXTj1bfzmwKiRJaiiHETVfs4atzLxukIVIkiQNo07DiLcz8zBiADm1srwkScPM2Yia\nr07DiG8cWBWSJDVYOJCoeeg0jPjA1P2IeCHwm9XDGzJzfenCJElqAheQ13z1cm3Ek4AbgN8FTgJW\nR8SJpQuTJKkJEs+Q1/z0soL8B4HfnOrNiog9gG8Cq0oWJklSU5i1NB+9rCC/aIthw8d6fJ8kSQuf\nw4iap156tr4eEVcDl1SP3wpcVa4kSZKaw9mImq9eLtfzhxHxFuDoatNkZl5etixJkprD2Yiaj07r\nbB2Vmd8ByMxLgUsHVpUkSQ2RTkfUPHU69+p/T92JiH8aQC2SJDVOpsOImp9OYav90NqudCGSJDWV\nWUvz0emcrUURsSutQDZ1f9Pxlpk/LV2cJEl1cxBR89UpbO0M3MR0wLq57bkE9i9VlCRJTdEaRrRv\nS/3rdLmeFQOsQ5KkxjJqaT5cnFSSpA7SgUTNk2FLkqQOMrFrS/Mya9iKiP0GWYgkSU1l1tJ8dOrZ\nWgUQEdcMqBZJkhrJE+Q1H92WfvgA8OsRceaWT2bmx8uVJUlSM7iCvOarU8/WycBztALZTjPcJEka\nCXZsaT46Lf2wFjgnIm7LzK8NsCZJkhrD8+M1Xx1nI0bEwcApEXFjdbsoIg4ZUG2SJEkLXqfZiCcA\nlwPXAmdUt+uAy6rnOoqI7SLihoi4NSLuiIg/2VpFS5I0KK4gr/nqdIL8nwLHZOb9bdtui4h/BP6u\nunXyNPCazHwyIrYBvh0RX8vM78yrYkmSBihJhxE1L52GEce2CFoAVNu26fbB2fJk9XCb6uaUDkmS\nNFI69WxtjIjxzPxh+8aI2BfY2MuHR8RiWhezfglwbmau7rtSSVLjnH3ZbXznvp/WXUZRjz7xNNtu\n4wVX1L9OYeuPgW9GxJ/RCkwAE8BZwH/v5cMz8zngsIjYBbg8Ig7OzDXtr4mIlcBKgPHx8TmWL0mq\n0zV3rWf7JYs5dPkudZdS1OHjw/39VFanpR++EhE/AN4HvLvafAdwUmbeOpdGMvNnEXEtcBywZovn\nJoFJgImJCYcZJWkBSeBfv3gZf/5mJ6pLs+nUs0UVqk7r54MjYg/g2SpobQ8cA5zTz2dJkprJxdWl\n7jqGrXnaE7ioOm9rEfC3mXllwfYkSTVwVQSps2JhKzNvAw4v9fmSpCZwWQSpG6dXSJL65jCi1F3X\nsBURyyPi8oh4JCLWR8SlEbF8EMVJkprPYUSps156ti4ErqB1DtZewFerbZKkEde6SLNpS+qkl7C1\nR2ZemJkbq9vngT0K1yVJWgDScUSpq17C1mMRcWpELK5upwKPlS5MkrQwOIwoddZL2DoDOAl4GHgI\nOBF4Z8miJEkLQ2sYUVInXZd+yMwHgOMHUIskaYFxFFHqbtawFRF/1OF9mZkfKVCPJGmBCccRpY46\n9Ww9NcO2pcC7gN0Bw5YkjThPkJe663Qh6r+auh8ROwHvoXWu1heBv5rtfZKk0WHUkrrreM5WROwG\nnAm8DbgIOCIzHx9EYZKkhcFRRKmzTudsfQx4MzAJHJKZTw6sKknSwpAuaip102nph/fRWjH+Q8CP\nI2JDdXsiIjYMpjxJUpMl9mxJ3XQ6Z8uLVEuSJM2TgUqS1LfMdBBR6sKwJUnqm8OIUneGLUmSpIIM\nW5KkvmW6grzUjWFLktS3xHO2pG4MW5IkSQUZtiRJfcsEu7akzgxbkqS+tbKWaUvqxLAlSZJUkGFL\nktS/dJ0tqRvDliSpb85GlLozbEmSJBVk2JIk9S0dRpS6MmxJkvrmbESpO8OWJElSQYYtSVLfMtNh\nRKkLw5YkqW8uIC91Z9iSJEkqyLAlSepb69qI9m1JnRQLWxGxT0RcGxF3RsQdEfGeUm1Jkupj1JI6\nGyv42RuB92XmzRGxE3BTRHwjM+8s2KYkSVKjFOvZysyHMvPm6v4TwF3A3qXakyQNVmYCjiJK3ZTs\n2dokIlYAhwOrB9GepNGVmXxh9Q/56ZPP1F3K0EuqsOVAotRR8bAVETsClwLvzcwNMzy/ElgJMD4+\nXrocSUNu3eO/4MNfWVN3GSNjUcCKZTvUXYbUaEXDVkRsQytoXZyZl830msycBCYBJiYmsmQ9kobf\nxudbv0Y+ftKh/PvDPHNhEBYtsmdL6qRY2IqIAD4H3JWZHy/VjiTNZFGEIUBSI5RcZ+to4O3AayLi\nlur2hoLtSZInbUtqnGI9W5n5bVx+RdKAeS6CpKZxBXlJkqSCDFuShko1ikg4jiipIQxbkobM1NpP\nktQMhi1JkqSCDFuShsr0MGK9dUjSFMOWpKEyNRvRS8hIagrDliRJUkGGLUlDxWFESU1j2JI0VNLZ\niJIaxrAlSZJUkGFL0lBxGFFS0xi2JA2V3HRxRNOWpGYwbEmSJBVk2JI0VDadIG/HlqSGMGxJGiqb\nztmqtwxJ2sSwJUmSVJBhS9JQCscRJTWEYUvSUHEYUVLTGLYkSZIKMmxJGirORpTUNIYtSUPFFeQl\nNY1hS5IkqSDDlqShMnW1nvAUeUkNYdiSNFTS6YiSGsawJWmoZPeXSNJAGbYkDSU7tiQ1hWFL0lCZ\nno1o3JLUDIYtSUPGgURJzWLYkjSU7NeS1BSGLUlDxUVNJTWNYUvSUHEQUVLTGLYkDSUXNZXUFIYt\nSUPFYURJTWPYkjRUNq0gL0kNUSxsRcQFEbE+ItaUakOSZmPHlqSmKNmz9XnguIKfL0m/YlO/lmlL\nUkOMlfrgzLw+IlaU+nzN3c/+5Rk2/GJj3WVIRf1kwy/rLkGSNlMsbKlZNvzyWY78s2t4ZuPzdZci\nDcS2Y4vrLkGSgAaErYhYCawEGB8fr7ma4fXkLzfyzMbnOWliOb+13+51lyMVtXTbMQ7bZ5e6y5Ak\noAFhKzMngUmAiYkJpxEVMrVjX7bvrrzlZctrrUWSpFHi0g8jYmo6vAs9SpI0WCWXfrgE+CfgwIhY\nFxHvKtWWJElSU5WcjXhKqc/W3G1a59GOLUmSBsphxBFj1pIkabAMW5IkSQUZtkbE9MV57duSJGmQ\nDFsjIpmajShJkgbJsCVJklSQYWtETA8j1luHJEmjxrA1Ijat/GDYkiRpoAxbIyLTKyFJklQHw9aI\n8XI9kiQNlmFrRDiMKElSPQxbI8JRREmS6mHYkiRJKsiwNTKqRU0dR5QkaaAMWyPCYURJkuph2Box\n9mtJkjRYhq0R4WxESZLqYdgaEQ4jSpJUD8PWiHFRU0mSBsuwNSJy02zEmguRJGnEGLZGhMOIkiTV\nw7A1YuzYkiRpsAxbI2KqZ8thREmSBsuwNSISxxElSaqDYWvk2LUlSdIgGbZGhMOIkiTVw7AlSZJU\nkGFrxNixJUnSYBm2RsT0MKJxS5KkQTJsjQhnI0qSVA/D1oixX0uSpMEybI0IZyNKklQPw9aIcBBR\nkqR6GLZGjD1bkiQNVtGwFRHHRcTaiLg3Is4q2ZY6y2ocMTxrS5KkgSoWtiJiMXAu8HrgIOCUiDio\nVHvqzGFESZLqUbJn60jg3sy8LzOfAb4InFCwPfXCji1JkgZqrOBn7w38qO3xOuC3CrbX1ZlfuoUf\nPPZUnSXU5qmnNwJmLUmSBq1k2OpJRKwEVgKMj48XbWv7JYvZcdvav3Itdtx2jP2WLeXgvXeuuxRJ\nkkZKyeTxILBP2+Pl1bbNZOYkMAkwMTFR9NSij77pkJIfL0mS9CtKnrP1z8ABEbFfRCwBTgauKNie\nJElS4xTr2crMjRHxX4CrgcXABZl5R6n2JEmSmqjoCUyZeRVwVck2JEmSmswV5CVJkgoybEmSJBVk\n2JIkSSrIsCVJklSQYUuSJKkgw5YkSVJBhi1JkqSCDFuSJEkFGbYkSZIKMmxJkiQVFJlZdw2bRMQj\nwAOFm1kGPFq4jYXE/THNfbE598c098Xm3B+bc39MG7V9sW9m7tHtRY0KW4MQETdm5kTddTSF+2Oa\n+2Jz7o9p7ovNuT825/6Y5r6YmcOIkiRJBRm2JEmSChrFsDVZdwEN4/6Y5r7YnPtjmvtic+6Pzbk/\nprkvZjBy52xJkiQN0ij2bEmSJA3MyIStiDguItZGxL0RcVbd9cxXROwTEddGxJ0RcUdEvKfavltE\nfCMi7qn+3bXaHhHxqer73xYRR7R91unV6++JiNPbtr8sIm6v3vOpiIhObdQtIhZHxHcj4srq8X4R\nsbqq/0sRsaTavm31+N7q+RVtn3F2tX1tRLyubfuMx89sbdQtInaJiFURcXdE3BURLx/VYyMi/qD6\nb2RNRFwSEduN0rERERdExPqIWNO2rbZjoVMbgzDL/vhY9d/KbRFxeUTs0vbcVvm593NsDcJM+6Pt\nufdFREbEsurx0B8fxWTm0N+AxcD3gf2BJcCtwEF11zXP77QncER1fyfge8BBwF8AZ1XbzwLOqe6/\nAfgaEMBRwOpq+27AfdW/u1b3d62eu6F6bVTvfX21fcY26r4BZwJ/A1xZPf5b4OTq/nnA71f3/xNw\nXnX/ZOBL1f2DqmNjW2C/6phZ3On4ma2Num/ARcB/qO4vAXYZxWMD2Bv4AbB928/rHaN0bACvBI4A\n1rRtq+1YmK2NmvfHscBYdf+ctlq32s99rsdWnfuj2r4PcDWttS+XjcrxUWw/113AgA6mlwNXtz0+\nGzi77rq28nf8O+AYYC2wZ7VtT2Btdf984JS216+tnj8FOL9t+/nVtj2Bu9u2b3rdbG3U/P2XA9cA\nrwGurP5DfbTtF+imY6D6BfLy6v5Y9brY8riYet1sx0+nNmreFzvTChixxfaROzZoha0fVX8Exqpj\n43WjdmwAK9g8XNR2LMzWRp37Y4vn3gRc3P7z3Bo/97keW3XvD2AVcChwP9NhaySOjxK3URlGnPqF\nO2VdtW0oVN3RhwOrgRdm5kPVUw8DL6zuz7YPOm1fN8N2OrRRp08A7weerx7vDvwsMzdWj9vr3/Sd\nq+d/Xr1+rvuoUxt12g94BLgwWsOq/yciljKCx0ZmPgj8JfBD4CFaP+ubGN1jY0qdx0LTfx+fQatn\nBbbuz32ux1ZtIuIE4MHMvHWLpzw++jQqYWtoRcSOwKXAezNzQ/tz2frfgizZ/iDa6CYi3gisz8yb\n6qyjQcZoDQt8JjMPB56i1U2/yQgdG7sCJ9AKoHsBS4Hj6qypaUblWOhFRHwQ2AhcXHctdYmIHYAP\nAH80qDYXyvExH6MSth6kNf48ZXm1bUGLiG1oBa2LM/OyavNPImLP6vk9gfXV9tn2Qafty2fY3qmN\nuhwNHB8R9wNfpDWU+Elgl4gYq17TXv+m71w9vzPwGHPfR491aKNO64B1mbm6eryKVvgaxWPjt4Ef\nZOYjmfkscBmt42VUj40pdR4Ljfx9HBHvAN4IvK364w9b9+c+12OrLi+m9T8nt1a/U5cDN0fEixjh\n42O+RiVs/TNwQDVLZAmtkxOvqLmmealmdHwOuCszP9721BXA6dX902mdyzW1/bRqpsdRwM+rLtyr\ngWMjYteqF+BYWucYPARsiIijqrZO2+KzZmqjFpl5dmYuz8wVtH62/5iZbwOuBU6sXrblvpiq/8Tq\n9VltP7maNbQfcACtkztnPH6q98zWRm0y82HgRxFxYLXptcCdjOCxQWv48KiI2KGqdWpfjOSx0abO\nY2G2NmoTEcfROg3h+Mz8l7antubPfa7HVi0y8/bMfEFmrqh+p66jNRnrYUb0+Ngq6j5pbFA3WjMc\nvkdrpscH665nK3yfV9Dqdr0NuKW6vYHWOQDXAPcA3wR2q14fwLnV978dmGj7rDOAe6vbO9u2TwBr\nqvd8mulFcGdsowk34FVMz0bcn9YvrXuBLwPbVtu3qx7fWz2/f9v7P1h937VUs2Y6HT+ztVH3DTgM\nuLE6Pr5Ca4bQSB4bwJ8Ad1f1/jWtWV8jc2wAl9A6X+1ZWn8431XnsdCpjRr3x720zhOa+l163tb+\nufdzbNW1P7Z4/n6mT5Af+uOj1M0V5CVJkgoalWFESZKkWhi2JEmSCjJsSZIkFWTYkiRJKsiwJUmS\nVJBhS1JjRMSTc3z9qyLiyq3Q7qsiIiPid9q2XRkRr5rvZ0uSYUuSWtbRWu9IkrYqw5akxql6mr4V\nEasi4u6IuLhagZqIOK7adjPw5rb3LI2ICyLihmhdgPuEavsfRMQF1f1DImJNtK7/tqVbgZ9HxDEz\n1PPa6jNvr9rYtsgXlzSUDFuSmupw4L3AQbRW5T46IrYDPgv8DvAy4EVtr/8grUugHAm8GvhYRCyl\ndZ3Ml0TEm4ALgd/LzS/J0u6jwIfaN1Rtfh54a2YeQutC37+/Vb6hpJFg2JLUVDdk5rrMfJ7WJVRW\nAC+ldWHpe7J1+YsvtL3+WOCsiLgF+Baty6OMV+9/B61L9VyXmf9vtgYz83qAiHhF2+YDqza/Vz2+\nCHjl/L+epFEx1v0lklSLp9vuP0f331cBvCUz187w3AHAk8BePbQ71bu1sZciJakbe7YkLSR3Aysi\n4sXV41PanrsaeHfbuV2HV//uDHyKVm/U7hFxYqcGMvMfaF24+zeqTWurNl9SPX47cN1W+C6SRoRh\nS9KCkZm/BFYCf1+dIL++7emPANsAt0XEHdVjgP8FnFsNA74L+J8R8YIuTX0U2KetzXcCX46I24Hn\ngfO20leSNAKiddqDJEmSSrBnS5IkqSDDliRJUkGGLUmSpIIMW5IkSQUZtiRJkgoybEmSJBVk2JIk\nSSrIsCVJklTQ/weIuNNRxKp2XgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "AHNA1zsD-Pu8", "colab_type": "code", "outputId": "504f5f11-7d56-4b8e-98aa-a918715266a3", "colab": { "base_uri": "https://localhost:8080/", "height": 269 } }, "source": [ "plt.boxplot(indegree_dist)\n", "plt.ylabel('No Of Followers')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "3oLSbUqr-PvC", "colab_type": "code", "outputId": "45cbdd8a-c322-4b9a-db13-d7ef41a69ddb", "colab": { "base_uri": "https://localhost:8080/", "height": 217 } }, "source": [ "### 90-100 percentile\n", "for i in range(0,11):\n", " print(90+i,'percentile value is',np.percentile(indegree_dist,90+i))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "90 percentile value is 12.0\n", "91 percentile value is 13.0\n", "92 percentile value is 14.0\n", "93 percentile value is 15.0\n", "94 percentile value is 17.0\n", "95 percentile value is 19.0\n", "96 percentile value is 21.0\n", "97 percentile value is 24.0\n", "98 percentile value is 29.0\n", "99 percentile value is 40.0\n", "100 percentile value is 552.0\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "5QwjRCHf-PvK", "colab_type": "text" }, "source": [ "99% of data having followers of 40 only." ] }, { "cell_type": "code", "metadata": { "id": "rfD0xky7-PvM", "colab_type": "code", "outputId": "858d7b39-6552-40ef-be15-e52293881180", "colab": { "base_uri": "https://localhost:8080/", "height": 199 } }, "source": [ "### 99-100 percentile\n", "for i in range(10,110,10):\n", " print(99+(i/100),'percentile value is',np.percentile(indegree_dist,99+(i/100)))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "99.1 percentile value is 42.0\n", "99.2 percentile value is 44.0\n", "99.3 percentile value is 47.0\n", "99.4 percentile value is 50.0\n", "99.5 percentile value is 55.0\n", "99.6 percentile value is 61.0\n", "99.7 percentile value is 70.0\n", "99.8 percentile value is 84.0\n", "99.9 percentile value is 112.0\n", "100.0 percentile value is 552.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "2SThTt1L-PvT", "colab_type": "code", "outputId": "055291de-9301-4909-f6ae-e7ed4fce8974", "colab": { "base_uri": "https://localhost:8080/", "height": 515 } }, "source": [ "%matplotlib inline\n", "sns.set_style('ticks')\n", "fig, ax = plt.subplots()\n", "fig.set_size_inches(11.7, 8.27)\n", "sns.distplot(indegree_dist, color='#16A085')\n", "plt.xlabel('PDF of Indegree')\n", "sns.despine()\n", "#plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "dXwFcZWb-Pvd", "colab_type": "text" }, "source": [ "## 1.2 No of people each person is following" ] }, { "cell_type": "code", "metadata": { "id": "er8TLFsS-Pvf", "colab_type": "code", "outputId": "290dbf86-337f-41bd-bdf2-bd644d36ddcd", "colab": { "base_uri": "https://localhost:8080/", "height": 393 } }, "source": [ "outdegree_dist = list(dict(g.out_degree()).values())\n", "outdegree_dist.sort()\n", "plt.figure(figsize=(10,6))\n", "plt.plot(outdegree_dist)\n", "plt.xlabel('Index No')\n", "plt.ylabel('No Of people each person is following')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\ng9v27du1dOlSBQYGSpLMZrPOnDnj8sIAAABgz2lwa9mypUwmk2190qqqKpcXBQAAgIacXuM2dOhQ\nzZ49W5WVlVq7dq1ef/11/fSnP3VHbQAAAKjHaXAbP3683nnnHbVp00aHDx/W5MmTFRsb647aAAAA\nUM8l3VUaGxtLWAMAAM2KN65VekmLzAMAAMDzCG4AAAA+4pKC27lz53To0KGr1mllZaUmT56sIUOG\naOjQofrwww9VXl6ujIwMJSYmKiMjQxUVFZIkwzA0f/58JSQkKDk5WQcPHrxqdQAAAPgSp8EtPz9f\nI0eO1IMPPihJ+ve//62HH374ijp9+umn1a9fP23ZskUbN27UTTfdpBUrVigmJkbbtm1TTEyM7YG/\nBQUFKiws1LZt2/TUU09p7ty5V9Q3AACAr7qklRPWr1+vkJAQSdKtt96qY8eONbnDU6dO6f3339fo\n0aMlSQEBAQoJCVFeXp5SUlIkSSkpKdqxY4ck2dpNJpN69uypyspKlZSUNLl/AAAAX+U0uPn7+ys4\nOPiqdXj06FGFh4crMzNTKSkpevLJJ1VVVaXS0lJFRkZKktq1a6fS0lJJksViUVRUlO3zUVFRslgs\nV60eAACAxnjhTaXOg9vNN9+sTZs2yWq1qrCwUE899ZTuvPPOJndYW1urzz77TPfcc482bNigwMBA\n22nRb9VfqeFSZWVlKTU1VampqSorK2tyfQAAAN+63Dziak6D26xZs/TVV18pICBAU6dOVVBQkJ58\n8skmdxgVFaWoqCjdcccdkqQhQ4bos88+U0REhO0UaElJicLDwyVdWBu1uLjY9vni4mKZzeYG+01P\nT1d2drays7MVFhbW5PoAAAC8ldPgFhgYqEcffVSvv/66srOz9eijj6pVq1ZN7rBdu3aKioqy3aW6\nZ88e3XTTTYqPj9eGDRskSRs2bNDAgQMlydZuGIY++ugjBQcH206pAgAANCcOV05wdufosmXLmtzp\nrFmz9Nhjj6mmpkbR0dFauHCh6urqNGXKFK1fv17t27fXH//4R0nSgAED9PbbbyshIUGBgYFasGBB\nk/sFAADwZQ6D27hx41zW6a233qrs7OwG7atXr27QZjKZNGfOHJfVAgAA4CscBrfevXvbfq6urtah\nQ4dkMpl04403KiAgwC3FAQAAeIo3rlXqdJH5nTt3as6cObrhhhtkGIaOHj2q3/72txowYIA76gMA\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "sRY--06r-Pvr", "colab_type": "code", "outputId": "1c0b3e1f-bf6c-4131-a3f2-6a29cdf70b88", "colab": { "base_uri": "https://localhost:8080/", "height": 393 } }, "source": [ "# indegree_dist = list(dict(g.in_degree()).values())\n", "# indegree_dist.sort()\n", "plt.figure(figsize=(10,6))\n", "plt.plot(outdegree_dist[0:1500000])\n", "plt.xlabel('Index No')\n", "plt.ylabel('No Of people each person is following')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "Xxy1G_f3-Pv1", "colab_type": "code", "outputId": "43cdfa47-4fc0-4bb6-8b13-75aa1cf365fe", "colab": { "base_uri": "https://localhost:8080/", "height": 269 } }, "source": [ "plt.boxplot(outdegree_dist)\n", "plt.ylabel('No Of people each person is following')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "7K_U3PFF-Pv9", "colab_type": "code", "outputId": "3b39d134-76fb-4306-fc89-bd42e4d87e31", "colab": { "base_uri": "https://localhost:8080/", "height": 217 } }, "source": [ "### 90-100 percentile\n", "for i in range(0,11):\n", " print(90+i,'percentile value is',np.percentile(outdegree_dist,90+i))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "90 percentile value is 12.0\n", "91 percentile value is 13.0\n", "92 percentile value is 14.0\n", "93 percentile value is 15.0\n", "94 percentile value is 17.0\n", "95 percentile value is 19.0\n", "96 percentile value is 21.0\n", "97 percentile value is 24.0\n", "98 percentile value is 29.0\n", "99 percentile value is 40.0\n", "100 percentile value is 1566.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "a9Ic7-vm-PwF", "colab_type": "code", "outputId": "a71a185b-bc8b-4df1-b2ac-e05ef339d812", "colab": { "base_uri": "https://localhost:8080/", "height": 199 } }, "source": [ "### 99-100 percentile\n", "for i in range(10,110,10):\n", " print(99+(i/100),'percentile value is',np.percentile(outdegree_dist,99+(i/100)))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "99.1 percentile value is 42.0\n", "99.2 percentile value is 45.0\n", "99.3 percentile value is 48.0\n", "99.4 percentile value is 52.0\n", "99.5 percentile value is 56.0\n", "99.6 percentile value is 63.0\n", "99.7 percentile value is 73.0\n", "99.8 percentile value is 90.0\n", "99.9 percentile value is 123.0\n", "100.0 percentile value is 1566.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "heFMOu_r-PwP", "colab_type": "code", "outputId": "c87add64-6ce2-4666-f8a4-57eff4233b4d", "colab": { "base_uri": "https://localhost:8080/", "height": 515 } }, "source": [ "sns.set_style('ticks')\n", "fig, ax = plt.subplots()\n", "fig.set_size_inches(11.7, 8.27)\n", "sns.distplot(outdegree_dist, color='#16A085')\n", "plt.xlabel('PDF of Outdegree')\n", "sns.despine()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\nVt3DenUP69U9rFfXsVbdw3p1D+vVPb25XiEv3EhLS1NNTY1qa2vl8/nkdrvldDrbjHE6nVq//nTv\nl5WVaezYsbLZbHI6nXK73fL5fKqtrVVNTY1GjhzZpX0CAAAAPSnkJ8J2u12FhYWaO3euAoGAcnNz\nlZqaquXLl2vEiBFKT09XXl5mccU2AAAOnUlEQVSeCgoK5HK5NGDAAC1dulSSlJqaqptvvllTpkxR\neHi4CgsLFR5++oYSHe0TAAAA6C1dukb4xhtv1I033tjmuXvuuSf4c1RUlJ566qkOt73zzjt15513\ndmmfX1Z9fWnGVwlr1T2sV/ewXt3DenUda9U9rFf3sF7d05vrZbOsbv65KAAAAPA18OX+cjcAAACg\nhxDC5/BVvg10Tzl06JBmzZqlKVOmKDMzU7/97W8lSUePHtXs2bM1adIkzZ49W8eOHZN0+vsRFy9e\nLJfLpaysLL3//vt9Of0+EQgENH36dN1+++2SpNraWuXn58vlcmnBggXy+U7favtctyo3RUNDg+bP\nn6/Jkyfr5ptv1o4dOzi3zuE3v/mNMjMzNXXqVN17771qbm7m/DrL/fffr3Hjxmnq1KnB577I+bR+\n/XpNmjRJkyZNCv5h+NdRR+u1ZMkSTZ48WVlZWfrhD3+ohoaG4GsrV66Uy+VSRkaGtm3bFnzehPfO\njtbqjNWrV+tb3/qWjhw5IolzS+p8vZ577jlNnjxZmZmZevLJJ4PP9+q5ZaFDfr/fSk9Pt/bt22c1\nNzdbWVlZ1u7du/t6Wn3O4/FYO3futCzLshobG61JkyZZu3fvtpYsWWKtXLnSsizLWrlypfXkk09a\nlmVZW7dutebMmWO1trZaO3bssPLy8vps7n1l9erV1r333mvNmzfPsizLmj9/vrVp0ybLsizrwQcf\ntF544QXLsizr+eeftx588EHLsixr06ZN1j333NM3E+5DCxcutF566SXLsiyrubnZOnbsGOdWJ+rq\n6qyJEydaJ0+etCzr9Hm1bt06zq+zvPXWW9bOnTutzMzM4HPdPZ+8Xq/ldDotr9drHT161HI6ndbR\no0d7/2B6QUfrtW3bNqulpcWyLMt68skng+u1e/duKysry2pubrb27dtnpaenW36/35j3zo7WyrIs\n6+DBg9YPfvAD66abbrLq6+sty+LcsqyO16uqqsq69dZbrebmZsuyLOvTTz+1LKv3zy0+Ee7E2beW\njoyMDN4G2nSDBw/Wt7/9bUlSTEyMrrjiCnk8HpWXl2v69OmSpOnTp2vLli2SFHzeZrPpmmuuUUND\ngw4fPtxn8+9tdXV12rp1q/Ly8iSd/mTgL3/5izIyMiRJM2bMCJ5XFRUVmjFjhqTTtyqvqqpqc5ej\nr7vGxkb99a9/Da5VZGSk4uLiOLfOIRAI6NSpU/L7/Tp16pQGDRrE+XWW66+/XgMGDGjzXHfPp9df\nf1033HCD4uPjNWDAAN1www1tPqH6OulovcaPHy+7/fTf1V9zzTXBewCUl5crMzNTkZGRSk5OVkpK\niqqrq4157+xorSTpiSeeUEFBQZs7lXJudbxeL774oubNm6fIyEhJ0sCBAyX1/rlFCHeio1tLn7k9\nNE7bv3+/du3apVGjRqm+vl6DBw+WJA0aNEj19fWS2q9jUlKSUev4+OOPq6CgQGGf3Wvd6/UqLi4u\n+MZy9np0dqtyU+zfv1+JiYm6//77NX36dD3wwAM6ceIE51YnHA6HfvCDH2jixIkaP368YmJi9O1v\nf5vzK4Tunk+8F/yfdevWacKECZI6f480eb22bNmiwYMH66qrrmrzPOdWx2pqavT2228rPz9f//7v\n/67q6mpJvX9uEcL4Qo4fP6758+dr0aJFiomJafOazWZr82/DpnrttdeUmJioESNG9PVUvhL8fr8+\n+OAD/eu//qs2bNig6OjodteAcW79n2PHjqm8vFzl5eXatm2bTp48+bX9NKmncD513YoVKxQeHq5p\n06b19VS+lE6ePKmVK1e2+WpZnFsgENCxY8f00ksvaeHChVqwYEGf/FcqQrgTXbm1tKlaWlo0f/58\nZWVladKkSZJO/yeNM/9Z+vDhw0pMTJTUfh3r6uqMWcd33nlHFRUVcjqduvfee/WXv/xFjz32mBoa\nGuT3+yW1XY8ztyqX1OZW5aZISkpSUlKSRo0aJUmaPHmyPvjgA86tTvz5z3/WJZdcosTEREVERGjS\npEl65513OL9C6O75xHuBVFpaqq1bt6q4uDj4Lw6drYup67Vv3z7t379f2dnZcjqdqqurU05Ojj75\n5BPOrU44HA65XC7ZbDaNHDlSYWFh8nq9vX5uEcKd4DbQHbMsSw888ICuuOIKzZ49O/i80+nUhg0b\nJEkbNmxQenp6m+cty9K7776r2NjY4H+W/Lq77777VFlZqYqKCv33f/+3xo4dq1/84hf6zne+o7Ky\nMkmn/2L4zHnV2a3KTTFo0CAlJSXpn//8pySpqqpK3/zmNzm3OjF06FC99957OnnypCzLUlVVlYYN\nG8b5FUJ3z6fx48fr9ddf17Fjx3Ts2DG9/vrrGj9+fF8eQq+qrKzUs88+qxUrVig6Ojr4vNPplNvt\nls/nU21trWpqajRy5Ehj3zu/9a1vqaqqShUVFaqoqFBSUpJKS0s1aNAgzq1OfO9739Obb74pSdq7\nd69aWlqUkJDQ6+cWN9Q4hz/96U96/PHHg7eB7ugOeaZ5++239f3vf19XXnll8LrXe++9VyNHjtSC\nBQt06NAhDR06VMuWLVN8fLwsy1JRUZG2bdum6OhoPf7440pLS+vjo+h9b775plavXq2VK1eqtrZW\nP/7xj3Xs2DFdffXVKi4uVmRkpJqbm1VQUKBdu3YFb1WenJzc11PvVbt27dIDDzyglpYWJScn64kn\nnlBrayvnVieeeuop/fGPf5TdbtfVV1+txx57TB6Ph/PrM/fee6/eeusteb1eDRw4UD/60Y/0ve99\nr9vn08svv6yVK1dKku644w7l5ub25WH1mI7Wa9WqVfL5fIqPj5ckjRo1SkVFRZJOXy6xbt06hYeH\na9GiRcG7xZrw3tnRWuXn5wdfdzqdevnll5WYmMi5pY7XKzs7W4sWLdKHH36oiIgILVy4UOPGjZPU\nu+cWIQwAAAAjcWkEAAAAjEQIAwAAwEiEMAAAAIxECAMAAMBIhDAAAACMZO/rCQDAl83VV1+tK6+8\nUoFAQFdccYWWLFmi6Ojo4PN+v1/h4eGaPn26brvtNoWFhenNN9/UXXfdpUsuuUSSlJCQoN/85jdd\n+n0+n0/z5s2T1+vV7bffrilTpgRfsyxLK1as0IYNG2Sz2TR48GAVFhYqNTX1nPvcsmWLLrvsMg0b\nNqzda/v379cdd9yhTZs2dX1RAOBriBAGgM/p16+fNm7cKOn0jVF+97vfafbs2W2er6+v13333aem\npibNnz9fkjRmzJjgd4J2xwcffCBJwX2f7YUXXtCOHTu0ceNGRUdH6/XXX9edd94pt9utqKioTve5\nZcsW3XTTTR2G8IUUCAQUHh7eo78DAHoKl0YAwDmMGTNGH3/8cbvnBw4cqEcffVQvvPCCuvp17EeP\nHtVdd92lrKws3XLLLfrwww9VX1+vgoIC/e1vf1N2drb27dvXZptf/epXKiwsDN7Va/z48Ro9erR+\n//vfS5JGjx4dHPvKK6/ov/7rv4K3937yySeD+9y5c6emTZumadOm6YUXXghuEwgEtGTJEuXm5ior\nK0u/+93vJEmtra16+OGHNXnyZM2ePVv/8R//oVdeeUXS6ZsF/PznP9eMGTP0yiuvaN++fZozZ45y\ncnL0b//2b/roo48kSUeOHNGPfvQj5ebmKjc3V9u3b+/qsgNAr+ATYQDohN/vV2Vlpb773e92+Hpy\ncrICgYDq6+slnb7zYnZ2tiRp8uTJ7e569Mtf/lLDhw/XM888o6qqKv3kJz/Rxo0btXjx4uCdB8/W\n1NSkkydPtrsD3IgRI7Rnz55O533ttdfK6XTqpptu0uTJkyVJWVlZKiws1PXXX68lS5YEx7788suK\njY3VunXr5PP59C//8i+64YYb9P777+vAgQP64x//qPr6ek2ZMqXNXa/i4+ODt2y+9dZb9cgjj+iy\nyy7Te++9p0ceeUT/8z//o8cee0y33nqrxowZo4MHD2rOnDn63//933OuOQD0JkIYAD7n1KlTwaAd\nM2aM8vLyurRdqEsjtm/frl/+8peSpHHjxuno0aNqamo6/wmH0NDQoMbGRl1//fWSpOzsbG3btk2S\n9MYbb+jvf/+7ysrKJEmNjY36+OOPtX37dk2ePFlhYWEaNGiQvvOd77TZ55nrmI8fP64dO3bonnvu\nCb7m8/kkSX/+85/bBHtTU5OOHz+uiy66qOcOFgC6gRAGgM85+1rgc6mtrVV4eLgGDhwYvBzgQoqJ\niVF0dLRqa2vbfCr8/vvvB6P2bM3Nzd3+HZZl6ac//Wm7T73/9Kc/nXO7M5dqWJaluLi4DtertbVV\nL7300jmvZQaAvsQ1wgDwBRw5ckQPPfSQvv/978tms3VpmzFjxgSv7X3zzTeVkJCgmJiYc24zZ84c\nLV68WKdOnZJ0+lPW7du3KysrS5J08cUX66OPPlJra6u2bNkS3O6iiy7S8ePHJUlxcXGKjY3V22+/\nLUn6wx/+EBw3fvx4vfjii2ppaZEk7d27VydOnNC1116rV199Va2trfr000/11ltvdTi/mJgYXXLJ\nJcFLHizL0ocffhjc93PPPRccu2vXri6tEwD0Fj4RBoAuOnPJxJmvT8vOztbs2bO7vP3dd9+tRYsW\nKSsrS9HR0frZz34WcptZs2apoaFBWVlZwcsUnnnmGfXr10/S6W+1uP3225WYmKgRI0boxIkTkk5f\nuvDggw/queee01NPPaUnnnhCixYtks1m0w033BDcf35+vg4cOKCcnBxZlqWEhAQ988wzysjIUFVV\nlaZMmaIhQ4Zo+PDhio2N7XCOP//5z/Xwww9rxYoV8vv9mjJliq666io98MADKioqUlZWlgKBgMaM\nGaOioqIurxcA9DSb1dU/dwYAGOXM9bxer1f5+fl68cUXNWjQoL6eFgBcMHwiDADo0B133KGGhga1\ntLTorrvuIoIBfO3wiTAAAACMxB/LAQAAwEiEMAAAAIxECAMAAMBIhDAAAACMRAgDAADASIQwAAAA\njPT/A17SLxyDQdzpAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "-OYGCSo6-PwX", "colab_type": "code", "outputId": "50772654-43a1-4329-d592-817b44ba97dc", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "print('No of persons those are not following anyone are' ,sum(np.array(outdegree_dist)==0),'and % is',\n", " sum(np.array(outdegree_dist)==0)*100/len(outdegree_dist) )" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "No of persons those are not following anyone are 274512 and % is 14.741115442858524\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "PExOGY7H-Pwd", "colab_type": "code", "outputId": "0c14b32d-13c2-4279-8cb0-6f5f83514990", "colab": {} }, "source": [ "print('No of persons having zero followers are' ,sum(np.array(indegree_dist)==0),'and % is',\n", " sum(np.array(indegree_dist)==0)*100/len(indegree_dist) )" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "No of persons having zero followers are 188043 and % is 10.097786512871734\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "JpzuVaaF-Pwk", "colab_type": "code", "outputId": "8011f6ad-6e5c-456a-df97-54e6be8c05b5", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "count=0\n", "for i in g.nodes():\n", " if len(list(g.predecessors(i)))==0 :\n", " if len(list(g.successors(i)))==0:\n", " count+=1\n", "print('No of persons those are not not following anyone and also not having any followers are',count)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "No of persons those are not not following anyone and also not having any followers are 0\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "vKV4akBM-Pws", "colab_type": "text" }, "source": [ "## 1.3 both followers + following " ] }, { "cell_type": "code", "metadata": { "id": "IC788PR1-Pwt", "colab_type": "code", "colab": {} }, "source": [ "from collections import Counter\n", "dict_in = dict(g.in_degree())\n", "dict_out = dict(g.out_degree())\n", "d = Counter(dict_in) + Counter(dict_out)\n", "in_out_degree = np.array(list(d.values()))" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "pFlMgmC6-Pw2", "colab_type": "code", "outputId": "7e9c5d37-25b8-49be-868b-23faf0817b85", "colab": { "base_uri": "https://localhost:8080/", "height": 393 } }, "source": [ "in_out_degree_sort = sorted(in_out_degree)\n", "plt.figure(figsize=(10,6))\n", "plt.plot(in_out_degree_sort)\n", "plt.xlabel('Index No')\n", "plt.ylabel('No Of people each person is following + followers')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "N8M6dqDg-PxA", "colab_type": "code", "outputId": "d41c0188-5e68-425c-d049-91a732872a3d", "colab": {} }, "source": [ "in_out_degree_sort = sorted(in_out_degree)\n", "plt.figure(figsize=(10,6))\n", "plt.plot(in_out_degree_sort[0:1500000])\n", "plt.xlabel('Index No')\n", "plt.ylabel('No Of people each person is following + followers')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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9dWSpF/84hfauXOnwxXVjkGDBunBBx/0fh8VFaVdu3apT58+kqRrrrlG//jHP7Rt2zb17dtXERERatu2rdxut3Jzc8/53kDzxBNPKCkpSeedd54khXVfbNq0SV27dtXYsWM1ZswYXXfddWHdH/Hx8XK73fJ4PCooKFB0dHTY9UfHjh21cOFC7/d2vn9f9zrpp/0xf/58devWTVL5sTh169bVjh07dOmllyomJkYNGzZUx44dtXfv3kr/T6l4j7Vxr5N+2h95eXn605/+pNTUVO+1cOoPfwn7QFZQUKC4uDjv91FRUSorK3OwotoRGxuruLg4FRQUaNy4cRo/fryMMYqIiPD+PD8//7/ef8X1c703kKxZs0bNmjXz/ocuKWz7Qir/w3Tnzp165pln9Ic//EEPPfRQWPdHgwYNdPjwYV1//fWaMWOGUlJSwq4/Bg4cqOjo0yfp2fn+fd3rpJ/2R8Vf5P75z39q2bJluv3221VQUKCGDRt674mNjVVBQUGl6//5Hs/1Xif9Z3+43W5NmzZNqampio2N9d4TTv3hLwF/lqW/xcXFqbCw0Pu9x+Op9B9iMPvmm280duxYJScna/DgwXrqqae8PyssLFSjRo3+6/0XFhaqYcOGioyMPKd7A8nq1asVERGhLVu2aM+ePZoyZUqlv4GHU19IUpMmTdSpUyfFxMSoU6dOqlu3ro4ePer9ebj1x6uvvqq+fftq0qRJ+uabbzR69GiVlpZ6fx5u/SHpnN9TbdwbaN566y298MILWrx4sZo1a+az7orr9erVs3yP1bk3UOzatUtZWVmaNWuWiouL9dVXX2nu3Lm64oorwrI/alPYj5D16tVLGzdulCT961//UteuXR2uqHYcP35cd955px5++GENGzZMktS9e3dt3bpVkrRx40b17t1bvXr10qZNm+TxeHTkyBF5PB41a9bsnO8NJMuXL9eyZcuUnp6ubt266YknntA111wTln0hSZdddpk++ugjGWP07bff6tSpU7ryyivDtj8aNWrk/QO+cePGKisrC9v/VirY+f593RtIXn/9de+fIR06dJAk9ezZU9u2bVNxcbHy8/O1f/9+de3aVb169dKHH34oqfw9XnbZZbVyb6Do2bOn1q1bp/T0dM2fP19dunTRtGnTwrY/alPYbwzr8Xg0a9YsffnllzLGaN68eercubPTZZ2zOXPmaP369erUqZP32rRp0zRnzhyVlpaqU6dOmjNnjqKiorRw4UJt3LhRHo9HjzzyiHr37q3MzEzNmDHjnO4NRCkpKZo1a5YiIyPP+f0Fc188+eST2rp1q4wxmjBhgtq3bx+2/VFYWKjU1FTl5OSotLRUo0aNUo8ePcKuP7KzszVx4kRlZGTUyns613udVtEfK1as0JVXXqk2bdp4RzQvv/xyjRs3ThkZGXK5XDLG6N5779XAgQN1/PhxTZkyRYWFhWratKnS0tLUoEGDc77Xaf/5+8PXtXDqD38I+0AGAADgtLCfsgQAAHAagQwAAMBhBDIAAACHEcgAAAAcRiADAABwGIEMQNDIzs7WrbfeWuX7b731VmVnZ9e4rYsvvrjScWorVqyodIQMANQWAhkA+BAXF6dHHnlEJSUlTpcCIMSFxhlBAMJOSkqKLrroIu3bt08FBQV65pln1K5dOy1YsEAfffSRWrdurby8PElSfn6+pk2b5v1++vTpatSokUaPHq1ly5Zp//79WrhwoZYuXVrp6LTzzz9fvXv31oIFCzRlypRK7b/xxhtasmSJYmJidMEFF+ixxx5TnTp17OsAACGFETIAQatnz5569dVXlZCQoHXr1unLL7/Up59+qlWrVunJJ5/0noG3aNEiXXHFFUpPT9fs2bM1a9YstWnTRg8//LCmTp2qxx9/XPPnzz/jObbjx4/X5s2b9dlnn3mv5eXlaeHChVqyZIlWrFihhg0byuVy2fa+AYQeAhmAoNW9e3dJUuvWrb0HHffo0UORkZGKi4vznnn35ZdfavXq1UpJSdGMGTN04sQJSVL//v119OhR9enTR61btz5jGzExMXr88cc1ffp0nTp1SpJ06NAhdenSRXFxcZLKj9LZt2+fv98ugBBGIAMQMuLj47Vjxw55PB6dPHlSX331lSSpU6dOuv3225Wenq6nn35agwcPliS98sorSkhI0M6dO/Wvf/3L53Mvvvhi3XTTTXrppZckSe3bt9f+/ft18uRJSdInn3yi+Ph4P787AKGMNWQAQka3bt00aNAgDRs2TOedd56aN28uSRozZoymTZumjIwMFRQU6P7779cXX3yhv/3tb3K5XDp06JAeeOABuVwuNWzY8IzPHjNmjD744ANJUrNmzfTAAw9o1KhRioyMVMeOHfXQQw/Z9j4BhB4OFwcAAHAYU5YAAAAOI5ABAAA4jEAGAADgMAIZAACAwwhkAAAADiOQAQAAOIxABgAA4DACGQAAgMP+P9rQwB/p8qSKAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "GBHJvGSj-PxG", "colab_type": "code", "outputId": "0baf0387-463c-4bde-e259-ac2772527929", "colab": {} }, "source": [ "### 90-100 percentile\n", "for i in range(0,11):\n", " print(90+i,'percentile value is',np.percentile(in_out_degree_sort,90+i))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "90 percentile value is 24.0\n", "91 percentile value is 26.0\n", "92 percentile value is 28.0\n", "93 percentile value is 31.0\n", "94 percentile value is 33.0\n", "95 percentile value is 37.0\n", "96 percentile value is 41.0\n", "97 percentile value is 48.0\n", "98 percentile value is 58.0\n", "99 percentile value is 79.0\n", "100 percentile value is 1579.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "eBgyMUdT-PxN", "colab_type": "code", "outputId": "ba1b3726-35ca-40d9-92bc-d470c950d631", "colab": { "base_uri": "https://localhost:8080/", "height": 199 } }, "source": [ "### 99-100 percentile\n", "for i in range(10,110,10):\n", " print(99+(i/100),'percentile value is',np.percentile(in_out_degree_sort,99+(i/100)))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "99.1 percentile value is 83.0\n", "99.2 percentile value is 87.0\n", "99.3 percentile value is 93.0\n", "99.4 percentile value is 99.0\n", "99.5 percentile value is 108.0\n", "99.6 percentile value is 120.0\n", "99.7 percentile value is 138.0\n", "99.8 percentile value is 168.0\n", "99.9 percentile value is 221.0\n", "100.0 percentile value is 1579.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "IsFTeV42-PxS", "colab_type": "code", "outputId": "1783ce36-740b-46ac-a1c3-08fd029d2e12", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "print('Min of no of followers + following is',in_out_degree.min())\n", "print(np.sum(in_out_degree==in_out_degree.min()),' persons having minimum no of followers + following')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Min of no of followers + following is 1\n", "334291 persons having minimum no of followers + following\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "_yGgth_s-PxX", "colab_type": "code", "outputId": "ba096c27-3f49-4ee2-99ce-7f8be56a911f", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "print('Max of no of followers + following is',in_out_degree.max())\n", "print(np.sum(in_out_degree==in_out_degree.max()),' persons having maximum no of followers + following')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Max of no of followers + following is 1579\n", "1 persons having maximum no of followers + following\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "zXfepkBW-Pxc", "colab_type": "code", "outputId": "5f3677d6-3a4d-41a6-c336-b3131cee7b07", "colab": {} }, "source": [ "print('No of persons having followers + following less than 10 are',np.sum(in_out_degree<10))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "No of persons having followers + following less than 10 are 1320326\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "VwWgSZfw-Pxi", "colab_type": "code", "outputId": "15af5516-3bc7-4607-c850-2f3a901b5ec7", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "print('No of weakly connected components',len(list(nx.weakly_connected_components(g))))\n", "count=0\n", "for i in list(nx.weakly_connected_components(g)):\n", " if len(i)==2:\n", " count+=1\n", "print('weakly connected components wit 2 nodes',count)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "No of weakly connected components 45558\n", "weakly connected components wit 2 nodes 32195\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "eatIQUh5-Pxo", "colab_type": "text" }, "source": [ "# 2. Posing a problem as classification problem " ] }, { "cell_type": "code", "metadata": { "id": "80ENLzCOpEzz", "colab_type": "code", "colab": {} }, "source": [ "edges = dict()\n", "edges.get()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "GIkuhzBX-Pxq", "colab_type": "text" }, "source": [ "## 2.1 Generating some edges which are not present in graph for supervised learning \n", "Generated Bad links from graph which are not in graph and whose shortest path is greater than 2. " ] }, { "cell_type": "code", "metadata": { "id": "VkVT_SUt-Pxr", "colab_type": "code", "outputId": "37ef51e4-37d1-4762-b2f3-2b54fef567a3", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "%%time\n", "###generating bad edges from given graph\n", "import random\n", "if not os.path.isfile('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/missing_edges_final.p'):\n", " #getting all set of edges\n", " r = csv.reader(open('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_woheader.csv','r'))\n", " edges = dict()\n", " for edge in r:\n", " edges[(edge[0], edge[1])] = 1\n", " \n", " \n", " missing_edges = set([])\n", " while (len(missing_edges)<9437519):\n", " a=random.randint(1, 1862220)\n", " b=random.randint(1, 1862220)\n", " tmp = edges.get((a,b),-1)\n", " if tmp == -1 and a!=b:\n", " try:\n", " if nx.shortest_path_length(g,source=a,target=b) > 2: \n", "\n", " missing_edges.add((a,b))\n", " else:\n", " continue \n", " except: \n", " missing_edges.add((a,b)) \n", " else:\n", " continue\n", " pickle.dump(missing_edges,open('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/missing_edges_final.p','wb'))\n", "else:\n", " missing_edges = pickle.load(open('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/missing_edges_final.p','rb'))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "CPU times: user 2.4 s, sys: 991 ms, total: 3.39 s\n", "Wall time: 3.86 s\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "rIKMoUoE-Px1", "colab_type": "code", "outputId": "ebc296dd-53c4-4f1a-e827-aa03d50d4e10", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "len(missing_edges)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "9437519" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "markdown", "metadata": { "id": "0fkvOhUg-Px-", "colab_type": "text" }, "source": [ "## 2.2 Training and Test data split: \n", "Removed edges from Graph and used as test data and after removing used that graph for creating features for Train and test data" ] }, { "cell_type": "code", "metadata": { "id": "EGuUekXY-PyA", "colab_type": "code", "outputId": "3d337fa3-1fdb-4fe6-839b-cab0eb3cd623", "colab": {} }, "source": [ "from sklearn.model_selection import train_test_split\n", "if (not os.path.isfile('data/after_eda/train_pos_after_eda.csv')) and (not os.path.isfile('data/after_eda/test_pos_after_eda.csv')):\n", " #reading total data df\n", " df_pos = pd.read_csv('data/train.csv')\n", " df_neg = pd.DataFrame(list(missing_edges), columns=['source_node', 'destination_node'])\n", " \n", " print(\"Number of nodes in the graph with edges\", df_pos.shape[0])\n", " print(\"Number of nodes in the graph without edges\", df_neg.shape[0])\n", " \n", " #Trian test split \n", " #Spiltted data into 80-20 \n", " #positive links and negative links seperatly because we need positive training data only for creating graph \n", " #and for feature generation\n", " X_train_pos, X_test_pos, y_train_pos, y_test_pos = train_test_split(df_pos,np.ones(len(df_pos)),test_size=0.2, random_state=9)\n", " X_train_neg, X_test_neg, y_train_neg, y_test_neg = train_test_split(df_neg,np.zeros(len(df_neg)),test_size=0.2, random_state=9)\n", " \n", " print('='*60)\n", " print(\"Number of nodes in the train data graph with edges\", X_train_pos.shape[0],\"=\",y_train_pos.shape[0])\n", " print(\"Number of nodes in the train data graph without edges\", X_train_neg.shape[0],\"=\", y_train_neg.shape[0])\n", " print('='*60)\n", " print(\"Number of nodes in the test data graph with edges\", X_test_pos.shape[0],\"=\",y_test_pos.shape[0])\n", " print(\"Number of nodes in the test data graph without edges\", X_test_neg.shape[0],\"=\",y_test_neg.shape[0])\n", "\n", " #removing header and saving\n", " X_train_pos.to_csv('data/after_eda/train_pos_after_eda.csv',header=False, index=False)\n", " X_test_pos.to_csv('data/after_eda/test_pos_after_eda.csv',header=False, index=False)\n", " X_train_neg.to_csv('data/after_eda/train_neg_after_eda.csv',header=False, index=False)\n", " X_test_neg.to_csv('data/after_eda/test_neg_after_eda.csv',header=False, index=False)\n", "else:\n", " #Graph from Traing data only \n", " del missing_edges" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Number of nodes in the graph with edges 9437519\n", "Number of nodes in the graph without edges 9437519\n", "============================================================\n", "Number of nodes in the train data graph with edges 7550015 = 7550015\n", "Number of nodes in the train data graph without edges 7550015 = 7550015\n", "============================================================\n", "Number of nodes in the test data graph with edges 1887504 = 1887504\n", "Number of nodes in the test data graph without edges 1887504 = 1887504\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "vv6fjbHt-PyF", "colab_type": "code", "outputId": "a45e7374-2b79-48a4-d5ad-b5759b81a988", "colab": { "base_uri": "https://localhost:8080/", "height": 301 } }, "source": [ "if (os.path.isfile('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_pos_after_eda.csv')) and (os.path.isfile('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/test_pos_after_eda.csv')): \n", " train_graph=nx.read_edgelist('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_pos_after_eda.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n", " test_graph=nx.read_edgelist('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/test_pos_after_eda.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n", " print(nx.info(train_graph))\n", " print(nx.info(test_graph))\n", "\n", " # finding the unique nodes in the both train and test graphs\n", " train_nodes_pos = set(train_graph.nodes())\n", " test_nodes_pos = set(test_graph.nodes())\n", "\n", " trY_teY = len(train_nodes_pos.intersection(test_nodes_pos))\n", " trY_teN = len(train_nodes_pos - test_nodes_pos)\n", " teY_trN = len(test_nodes_pos - train_nodes_pos)\n", "\n", " print('no of people common in train and test -- ',trY_teY)\n", " print('no of people present in train but not present in test -- ',trY_teN)\n", "\n", " print('no of people present in test but not present in train -- ',teY_trN)\n", " print(' % of people not there in Train but exist in Test in total Test data are {} %'.format(teY_trN/len(test_nodes_pos)*100))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Name: \n", "Type: DiGraph\n", "Number of nodes: 1780722\n", "Number of edges: 7550015\n", "Average in degree: 4.2399\n", "Average out degree: 4.2399\n", "Name: \n", "Type: DiGraph\n", "Number of nodes: 1144623\n", "Number of edges: 1887504\n", "Average in degree: 1.6490\n", "Average out degree: 1.6490\n", "no of people common in train and test -- 1063125\n", "no of people present in train but not present in test -- 717597\n", "no of people present in test but not present in train -- 81498\n", " % of people not there in Train but exist in Test in total Test data are 7.1200735962845405 %\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "dp1eT_aR-iFW", "colab_type": "code", "colab": {} }, "source": [ "test_new_nodes = test_nodes_pos - train_nodes_pos" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "UsUzIsyQ0VI0", "colab_type": "code", "outputId": "ecab1194-597e-4066-8720-81c79e8691be", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "list(test_new_nodes)[:5]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[262144, 1572864, 1703936, 1572871, 1441800]" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { "id": "y5BFP-UF0iu_", "colab_type": "code", "colab": {} }, "source": [ "del test_graph" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "_oE3Zy8l-PyM", "colab_type": "text" }, "source": [ "> we have a cold start problem here" ] }, { "cell_type": "code", "metadata": { "id": "TVvncm8C-PyP", "colab_type": "code", "outputId": "e9e34351-b8aa-4011-c437-80ae7f80fdb9", "colab": {} }, "source": [ "#final train and test data sets\n", "if (not os.path.isfile('data/after_eda/train_after_eda.csv')) and \\\n", "(not os.path.isfile('data/after_eda/test_after_eda.csv')) and \\\n", "(not os.path.isfile('data/train_y.csv')) and \\\n", "(not os.path.isfile('data/test_y.csv')) and \\\n", "(os.path.isfile('data/after_eda/train_pos_after_eda.csv')) and \\\n", "(os.path.isfile('data/after_eda/test_pos_after_eda.csv')) and \\\n", "(os.path.isfile('data/after_eda/train_neg_after_eda.csv')) and \\\n", "(os.path.isfile('data/after_eda/test_neg_after_eda.csv')):\n", " \n", " X_train_pos = pd.read_csv('data/after_eda/train_pos_after_eda.csv', names=['source_node', 'destination_node'])\n", " X_test_pos = pd.read_csv('data/after_eda/test_pos_after_eda.csv', names=['source_node', 'destination_node'])\n", " X_train_neg = pd.read_csv('data/after_eda/train_neg_after_eda.csv', names=['source_node', 'destination_node'])\n", " X_test_neg = pd.read_csv('data/after_eda/test_neg_after_eda.csv', names=['source_node', 'destination_node'])\n", "\n", " print('='*60)\n", " print(\"Number of nodes in the train data graph with edges\", X_train_pos.shape[0])\n", " print(\"Number of nodes in the train data graph without edges\", X_train_neg.shape[0])\n", " print('='*60)\n", " print(\"Number of nodes in the test data graph with edges\", X_test_pos.shape[0])\n", " print(\"Number of nodes in the test data graph without edges\", X_test_neg.shape[0])\n", "\n", " X_train = X_train_pos.append(X_train_neg,ignore_index=True)\n", " y_train = np.concatenate((y_train_pos,y_train_neg))\n", " X_test = X_test_pos.append(X_test_neg,ignore_index=True)\n", " y_test = np.concatenate((y_test_pos,y_test_neg)) \n", " \n", " X_train.to_csv('data/after_eda/train_after_eda.csv',header=False,index=False)\n", " X_test.to_csv('data/after_eda/test_after_eda.csv',header=False,index=False)\n", " pd.DataFrame(y_train.astype(int)).to_csv('data/train_y.csv',header=False,index=False)\n", " pd.DataFrame(y_test.astype(int)).to_csv('data/test_y.csv',header=False,index=False)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "============================================================\n", "Number of nodes in the train data graph with edges 7550015\n", "Number of nodes in the train data graph without edges 7550015\n", "============================================================\n", "Number of nodes in the test data graph with edges 1887504\n", "Number of nodes in the test data graph without edges 1887504\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "cGGp71f5-PyW", "colab_type": "code", "outputId": "d067f192-138e-4f88-ee0d-b971f3e4b659", "colab": {} }, "source": [ "print(\"Data points in train data\",X_train.shape)\n", "print(\"Data points in test data\",X_test.shape)\n", "print(\"Shape of traget variable in train\",y_train.shape)\n", "print(\"Shape of traget variable in test\", y_test.shape)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Data points in train data (15100030, 2)\n", "Data points in test data (3775008, 2)\n", "Shape of traget variable in train (15100030,)\n", "Shape of traget variable in test (3775008,)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "ApcEsrsv0-Md", "colab_type": "code", "outputId": "30e6d10d-b108-4311-eeb2-8408dcb61971", "colab": { "base_uri": "https://localhost:8080/", "height": 318 } }, "source": [ "import sys\n", "\n", "# These are the usual ipython objects, including this one you are creating\n", "ipython_vars = ['In', 'Out', 'exit', 'quit', 'get_ipython', 'ipython_vars']\n", "\n", "# Get a sorted list of the objects and their sizes\n", "sorted([(x, sys.getsizeof(globals().get(x))) for x in dir() if not x.startswith('_') and x not in sys.modules and x not in ipython_vars], key=lambda x: x[1], reverse=True)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[('train_nodes_pos', 67109088),\n", " ('test_nodes_pos', 33554656),\n", " ('test_new_nodes', 2097376),\n", " ('rcParams', 9336),\n", " ('KMeans', 1056),\n", " ('MiniBatchKMeans', 1056),\n", " ('drive', 80),\n", " ('np', 80),\n", " ('nx', 80),\n", " ('pd', 80),\n", " ('plt', 80),\n", " ('sns', 80),\n", " ('xgb', 80),\n", " ('train_graph', 56),\n", " ('teY_trN', 28),\n", " ('trY_teN', 28),\n", " ('trY_teY', 28)]" ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "code", "metadata": { "id": "C5Op4pGX-Pyn", "colab_type": "code", "colab": {} }, "source": [ "# computed and store the data for featurization\n", "# please check out FB_featurization.ipynb" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "168QPRizVFFg", "colab_type": "text" }, "source": [ "

Social network Graph Link Prediction - Facebook Challenge

" ] }, { "cell_type": "code", "metadata": { "id": "Q8lS7fVyVFFl", "colab_type": "code", "colab": {} }, "source": [ "#Importing Libraries\n", "# please do go through this python notebook: \n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "import csv\n", "import pandas as pd#pandas to create small dataframes \n", "import datetime #Convert to unix time\n", "import time #Convert to unix time\n", "# if numpy is not installed already : pip3 install numpy\n", "import numpy as np#Do aritmetic operations on arrays\n", "# matplotlib: used to plot graphs\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import seaborn as sns#Plots\n", "from matplotlib import rcParams#Size of plots \n", "from sklearn.cluster import MiniBatchKMeans, KMeans#Clustering\n", "import math\n", "import pickle\n", "import os\n", "# to install xgboost: pip3 install xgboost\n", "import xgboost as xgb\n", "\n", "import warnings\n", "import networkx as nx\n", "import pdb\n", "import pickle\n", "from pandas import HDFStore,DataFrame\n", "from pandas import read_hdf\n", "from scipy.sparse.linalg import svds, eigs\n", "import gc\n", "from tqdm import tqdm" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "1znHayNeVFFt", "colab_type": "text" }, "source": [ "# 1. Reading Data" ] }, { "cell_type": "code", "metadata": { "id": "ksalPoq0Evpo", "colab_type": "code", "outputId": "0bd4022d-44dc-4cd7-f4c8-b646f7f0eae9", "colab": { "base_uri": "https://localhost:8080/", "height": 128 } }, "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n", "\n", "Enter your authorization code:\n", "··········\n", "Mounted at /content/drive\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "Uq9HbHwEVFFv", "colab_type": "code", "outputId": "4fb7ed10-db4c-43c7-9c87-6244109787dc", "colab": { "base_uri": "https://localhost:8080/", "height": 126 } }, "source": [ "if os.path.isfile('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_pos_after_eda.csv'):\n", " train_graph=nx.read_edgelist('drive/My Drive/FacebookGraphRecomm/data/data/after_eda/train_pos_after_eda.csv',delimiter=',',create_using=nx.DiGraph(),nodetype=int)\n", " print(nx.info(train_graph))\n", "else:\n", " print(\"please run the FB_EDA.ipynb or download the files from drive\")" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Name: \n", "Type: DiGraph\n", "Number of nodes: 1780722\n", "Number of edges: 7550015\n", "Average in degree: 4.2399\n", "Average out degree: 4.2399\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "HmlUa64tVFF7", "colab_type": "text" }, "source": [ "# 2. Similarity measures" ] }, { "cell_type": "markdown", "metadata": { "id": "ivVMUMiWVFF9", "colab_type": "text" }, "source": [ "## 2.1 Jaccard Distance:\n", "http://www.statisticshowto.com/jaccard-index/" ] }, { "cell_type": "markdown", "metadata": { "id": "NoWCYuRBVFF_", "colab_type": "text" }, "source": [ "\\begin{equation}\n", "j = \\frac{|X\\cap Y|}{|X \\cup Y|} \n", "\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "Seo4z5SnVFGB", "colab_type": "code", "colab": {} }, "source": [ "#for followees\n", "def jaccard_for_followees(a,b):\n", " try:\n", " if len(set(train_graph.successors(a))) == 0 | len(set(train_graph.successors(b))) == 0:\n", " return 0\n", " sim = (len(set(train_graph.successors(a)).intersection(set(train_graph.successors(b)))))/\\\n", " (len(set(train_graph.successors(a)).union(set(train_graph.successors(b)))))\n", " except:\n", " return 0\n", " return sim" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Oa9FMlS8VFGF", "colab_type": "code", "outputId": "426a6833-1631-4024-c24a-d21ae7686472", "colab": {} }, "source": [ "#one test case\n", "print(jaccard_for_followees(273084,1505602))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "Gf8njOv6VFGK", "colab_type": "code", "outputId": "8ba07727-a0ab-498e-819f-0d310876191c", "colab": {} }, "source": [ "#node 1635354 not in graph \n", "print(jaccard_for_followees(273084,1505602))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "LO-a5ZkKVFGO", "colab_type": "code", "colab": {} }, "source": [ "#for followers\n", "def jaccard_for_followers(a,b):\n", " try:\n", " if len(set(train_graph.predecessors(a))) == 0 | len(set(g.predecessors(b))) == 0:\n", " return 0\n", " sim = (len(set(train_graph.predecessors(a)).intersection(set(train_graph.predecessors(b)))))/\\\n", " (len(set(train_graph.predecessors(a)).union(set(train_graph.predecessors(b)))))\n", " return sim\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "DlbX2t0jVFGQ", "colab_type": "code", "outputId": "7e4b4536-442a-4b0c-ae02-fb442c1955db", "colab": {} }, "source": [ "print(jaccard_for_followers(273084,470294))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "OgeBW2LMVFGU", "colab_type": "code", "outputId": "1e12fabe-d990-4506-bb6b-c86b01d1b0af", "colab": {} }, "source": [ "#node 1635354 not in graph \n", "print(jaccard_for_followees(669354,1635354))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "MnH2my2UVFGX", "colab_type": "text" }, "source": [ "## 2.2 Cosine distance" ] }, { "cell_type": "markdown", "metadata": { "id": "XNvdBGS2VFGY", "colab_type": "text" }, "source": [ "\\begin{equation}\n", "CosineDistance = \\frac{|X\\cap Y|}{|X|\\cdot|Y|} \n", "\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "Iznz67EdVFGZ", "colab_type": "code", "colab": {} }, "source": [ "#for followees\n", "def cosine_for_followees(a,b):\n", " try:\n", " if len(set(train_graph.successors(a))) == 0 | len(set(train_graph.successors(b))) == 0:\n", " return 0\n", " sim = (len(set(train_graph.successors(a)).intersection(set(train_graph.successors(b)))))/\\\n", " (math.sqrt(len(set(train_graph.successors(a)))*len((set(train_graph.successors(b))))))\n", " return sim\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "H55ALjkMVFGc", "colab_type": "code", "outputId": "531fceba-60f4-4e6b-97f4-f37733dc468f", "colab": {} }, "source": [ "print(cosine_for_followees(273084,1505602))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "q0RGKgJFVFGf", "colab_type": "code", "outputId": "41202fc6-f4aa-4a1d-d8f6-84f960a3fbba", "colab": {} }, "source": [ "print(cosine_for_followees(273084,1635354))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "KJ_yGxA0VFGj", "colab_type": "code", "colab": {} }, "source": [ "def cosine_for_followers(a,b):\n", " try:\n", " \n", " if len(set(train_graph.predecessors(a))) == 0 | len(set(train_graph.predecessors(b))) == 0:\n", " return 0\n", " sim = (len(set(train_graph.predecessors(a)).intersection(set(train_graph.predecessors(b)))))/\\\n", " (math.sqrt(len(set(train_graph.predecessors(a))))*(len(set(train_graph.predecessors(b)))))\n", " return sim\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "75QrFJb6VFGm", "colab_type": "code", "outputId": "f01e0558-f1e3-465f-ab14-0e4ca764f4aa", "colab": {} }, "source": [ "print(cosine_for_followers(2,470294))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0.02886751345948129\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "-ut4k_F0VFGq", "colab_type": "code", "outputId": "8bc9607a-7262-43e2-9de8-f71d276762fc", "colab": {} }, "source": [ "print(cosine_for_followers(669354,1635354))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "DaIHhWh6VFGv", "colab_type": "text" }, "source": [ "## 3. Ranking Measures" ] }, { "cell_type": "markdown", "metadata": { "id": "6nfV1SprVFGx", "colab_type": "text" }, "source": [ "https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.algorithms.link_analysis.pagerank_alg.pagerank.html\n", "\n", "PageRank computes a ranking of the nodes in the graph G based on the structure of the incoming links.\n", "\n", "\n", "\n", "Mathematical PageRanks for a simple network, expressed as percentages. (Google uses a logarithmic scale.) Page C has a higher PageRank than Page E, even though there are fewer links to C; the one link to C comes from an important page and hence is of high value. If web surfers who start on a random page have an 85% likelihood of choosing a random link from the page they are currently visiting, and a 15% likelihood of jumping to a page chosen at random from the entire web, they will reach Page E 8.1% of the time. (The 15% likelihood of jumping to an arbitrary page corresponds to a damping factor of 85%.) Without damping, all web surfers would eventually end up on Pages A, B, or C, and all other pages would have PageRank zero. In the presence of damping, Page A effectively links to all pages in the web, even though it has no outgoing links of its own." ] }, { "cell_type": "markdown", "metadata": { "id": "GkkfYYZ6VFGy", "colab_type": "text" }, "source": [ "## 3.1 Page Ranking\n", "\n", "https://en.wikipedia.org/wiki/PageRank\n" ] }, { "cell_type": "code", "metadata": { "id": "AtvqwZ34VFGy", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/page_rank.p'):\n", " pr = nx.pagerank(train_graph, alpha=0.85)\n", " pickle.dump(pr,open('data/fea_sample/page_rank.p','wb'))\n", "else:\n", " pr = pickle.load(open('data/fea_sample/page_rank.p','rb'))" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "lXGKYYf6VFG2", "colab_type": "code", "outputId": "bb3d1b7a-81f9-44ab-dbe7-3214ccd47179", "colab": {} }, "source": [ "print('min',pr[min(pr, key=pr.get)])\n", "print('max',pr[max(pr, key=pr.get)])\n", "print('mean',float(sum(pr.values())) / len(pr))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "min 1.6556497245737814e-07\n", "max 2.7098251341935827e-05\n", "mean 5.615699699389075e-07\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "5xwlah4oVFG4", "colab_type": "code", "outputId": "992fdfad-7ff6-4626-c9ee-d9bce220a680", "colab": {} }, "source": [ "#for imputing to nodes which are not there in Train data\n", "mean_pr = float(sum(pr.values())) / len(pr)\n", "print(mean_pr)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "5.615699699389075e-07\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "HhPbSL1tVFG7", "colab_type": "text" }, "source": [ "# 4. Other Graph Features" ] }, { "cell_type": "markdown", "metadata": { "id": "AgsorCl7VFG8", "colab_type": "text" }, "source": [ "## 4.1 Shortest path:" ] }, { "cell_type": "markdown", "metadata": { "id": "E7teH2LCVFG9", "colab_type": "text" }, "source": [ "Getting Shortest path between twoo nodes, if nodes have direct path i.e directly connected then we are removing that edge and calculating path. " ] }, { "cell_type": "code", "metadata": { "id": "RA076ovzVFG9", "colab_type": "code", "colab": {} }, "source": [ "#if has direct edge then deleting that edge and calculating shortest path\n", "def compute_shortest_path_length(a,b):\n", " p=-1\n", " try:\n", " if train_graph.has_edge(a,b):\n", " train_graph.remove_edge(a,b)\n", " p= nx.shortest_path_length(train_graph,source=a,target=b)\n", " train_graph.add_edge(a,b)\n", " else:\n", " p= nx.shortest_path_length(train_graph,source=a,target=b)\n", " return p\n", " except:\n", " return -1" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "AxnKId11VFG_", "colab_type": "code", "outputId": "15ca223a-6a04-4549-d010-54619b472a9e", "colab": {} }, "source": [ "#testing\n", "compute_shortest_path_length(77697, 826021)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "10" ] }, "metadata": { "tags": [] }, "execution_count": 21 } ] }, { "cell_type": "code", "metadata": { "id": "0huWCNtRVFHC", "colab_type": "code", "outputId": "6debfa4f-2067-48bc-84b3-ab86e2d9dea6", "colab": {} }, "source": [ "#testing\n", "compute_shortest_path_length(669354,1635354)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "-1" ] }, "metadata": { "tags": [] }, "execution_count": 22 } ] }, { "cell_type": "markdown", "metadata": { "id": "baE_95bzVFHF", "colab_type": "text" }, "source": [ "## 4.2 Checking for same community" ] }, { "cell_type": "code", "metadata": { "id": "15CIQqAbVFHG", "colab_type": "code", "colab": {} }, "source": [ "#getting weekly connected edges from graph \n", "wcc=list(nx.weakly_connected_components(train_graph))\n", "def belongs_to_same_wcc(a,b):\n", " '''\n", " Input two nodes : a , b .\n", " Output : Boolean (1 : They belong to same community (Weakly connected components), 0 They do not belong to same Weakly connected components)\n", " '''\n", " index = []\n", " if train_graph.has_edge(b,a):\n", " return 1\n", " if train_graph.has_edge(a,b):\n", " for i in wcc:\n", " if a in i:\n", " index= i\n", " break\n", " if (b in index):\n", " train_graph.remove_edge(a,b)\n", " if compute_shortest_path_length(a,b)==-1:\n", " train_graph.add_edge(a,b)\n", " return 0\n", " else:\n", " train_graph.add_edge(a,b)\n", " return 1\n", " else:\n", " return 0\n", " else:\n", " for i in wcc:\n", " if a in i:\n", " index= i\n", " break\n", " if(b in index):\n", " return 1\n", " else:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "fAzOHtCFVFHI", "colab_type": "code", "outputId": "ef76d4b2-514a-4042-af5d-c667f8b6b935", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "belongs_to_same_wcc(861, 1659750)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1" ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "code", "metadata": { "id": "9jLC1oRHWUmM", "colab_type": "code", "outputId": "1957035a-efe7-4849-c40f-c2ddbd4274cf", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "train_graph.has_edge(861, 1659750)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "False" ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "code", "metadata": { "id": "HMdYpPuGVFHK", "colab_type": "code", "outputId": "2005e22c-b60f-48d7-839b-650bf97cae35", "colab": {} }, "source": [ "belongs_to_same_wcc(669354,1635354)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, "metadata": { "tags": [] }, "execution_count": 25 } ] }, { "cell_type": "markdown", "metadata": { "id": "q74nth0OVFHN", "colab_type": "text" }, "source": [ "## 4.3 Adamic/Adar Index:\n", "Adamic/Adar measures is defined as inverted sum of degrees of common neighbours for given two vertices.\n", "$$A(x,y)=\\sum_{u \\in N(x) \\cap N(y)}\\frac{1}{log(|N(u)|)}$$" ] }, { "cell_type": "code", "metadata": { "id": "CeS98LI5VFHO", "colab_type": "code", "colab": {} }, "source": [ "#adar index\n", "def calc_adar_in(a,b):\n", " sum=0\n", " try:\n", " n=list(set(train_graph.successors(a)).intersection(set(train_graph.successors(b))))\n", " if len(n)!=0:\n", " for i in n:\n", " sum=sum+(1/np.log10(len(list(train_graph.predecessors(i)))))\n", " return sum\n", " else:\n", " return 0\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "KezFeRmyVFHQ", "colab_type": "code", "outputId": "2f9c0e11-02d9-4f28-d67a-65e3d4943e99", "colab": {} }, "source": [ "calc_adar_in(1,189226)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, "metadata": { "tags": [] }, "execution_count": 27 } ] }, { "cell_type": "code", "metadata": { "id": "vj_m89bBVFHV", "colab_type": "code", "outputId": "68a0a099-2954-402f-c80f-6d436ffa1aba", "colab": {} }, "source": [ "calc_adar_in(669354,1635354)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, "metadata": { "tags": [] }, "execution_count": 28 } ] }, { "cell_type": "markdown", "metadata": { "id": "pBUudhFAVFHY", "colab_type": "text" }, "source": [ "## 4.4 Is persion was following back:" ] }, { "cell_type": "code", "metadata": { "id": "j_mwmopLVFHZ", "colab_type": "code", "colab": {} }, "source": [ "def follows_back(a,b):\n", " if train_graph.has_edge(b,a):\n", " return 1\n", " else:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "LdjUXIfbVFHb", "colab_type": "code", "outputId": "ed3d8640-9834-4a95-e712-804292da70e9", "colab": {} }, "source": [ "follows_back(1,189226)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1" ] }, "metadata": { "tags": [] }, "execution_count": 30 } ] }, { "cell_type": "code", "metadata": { "id": "PmZtL65YVFHf", "colab_type": "code", "outputId": "18ea6fe2-3f96-42c0-d116-ecb76ddba4b5", "colab": {} }, "source": [ "follows_back(669354,1635354)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, "metadata": { "tags": [] }, "execution_count": 31 } ] }, { "cell_type": "markdown", "metadata": { "id": "29Vrq2EXVFHi", "colab_type": "text" }, "source": [ "## 4.5 Katz Centrality:\n", "https://en.wikipedia.org/wiki/Katz_centrality\n", "\n", "https://www.geeksforgeeks.org/katz-centrality-centrality-measure/\n", " Katz centrality computes the centrality for a node \n", " based on the centrality of its neighbors. It is a \n", " generalization of the eigenvector centrality. The\n", " Katz centrality for node `i` is\n", " \n", "$$x_i = \\alpha \\sum_{j} A_{ij} x_j + \\beta,$$\n", "where `A` is the adjacency matrix of the graph G \n", "with eigenvalues $$\\lambda$$.\n", "\n", "The parameter $$\\beta$$ controls the initial centrality and \n", "\n", "$$\\alpha < \\frac{1}{\\lambda_{max}}.$$" ] }, { "cell_type": "code", "metadata": { "id": "CN5OSqrkVFHj", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/katz.p'):\n", " katz = nx.katz.katz_centrality(train_graph,alpha=0.005,beta=1)\n", " pickle.dump(katz,open('data/fea_sample/katz.p','wb'))\n", "else:\n", " katz = pickle.load(open('data/fea_sample/katz.p','rb'))" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "gcU83vw7VFHm", "colab_type": "code", "outputId": "05f49ad4-46fe-4cf6-f32a-2fe4846b0714", "colab": {} }, "source": [ "print('min',katz[min(katz, key=katz.get)])\n", "print('max',katz[max(katz, key=katz.get)])\n", "print('mean',float(sum(katz.values())) / len(katz))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "min 0.0007313532484065916\n", "max 0.003394554981699122\n", "mean 0.0007483800935562018\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "qcboIksiVFHt", "colab_type": "code", "outputId": "99f52422-9edb-479a-d5d9-e33401160da7", "colab": {} }, "source": [ "mean_katz = float(sum(katz.values())) / len(katz)\n", "print(mean_katz)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0.0007483800935562018\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "SRZqGFgYVFHx", "colab_type": "text" }, "source": [ "## 4.6 Hits Score\n", "The HITS algorithm computes two numbers for a node. Authorities estimates the node value based on the incoming links. Hubs estimates the node value based on outgoing links.\n", "\n", "https://en.wikipedia.org/wiki/HITS_algorithm" ] }, { "cell_type": "code", "metadata": { "id": "WXNHRdzUVFHz", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/hits.p'):\n", " hits = nx.hits(train_graph, max_iter=100, tol=1e-08, nstart=None, normalized=True)\n", " pickle.dump(hits,open('data/fea_sample/hits.p','wb'))\n", "else:\n", " hits = pickle.load(open('data/fea_sample/hits.p','rb'))" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "PSUwSZBVVFH3", "colab_type": "code", "outputId": "77448253-5409-4229-f0be-b8dbc14d7f46", "colab": {} }, "source": [ "print('min',hits[0][min(hits[0], key=hits[0].get)])\n", "print('max',hits[0][max(hits[0], key=hits[0].get)])\n", "print('mean',float(sum(hits[0].values())) / len(hits[0]))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "min 0.0\n", "max 0.004868653378780953\n", "mean 5.615699699344123e-07\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "4Jb0MRmKWck5", "colab_type": "text" }, "source": [ "## 4.7 Calculating Preferential Attachment" ] }, { "cell_type": "code", "metadata": { "id": "w0PnvOMZWvC4", "colab_type": "code", "colab": {} }, "source": [ "#Preferential Attachment\n", "def calc_pref_att(a,b):\n", " try:\n", " return len(set(train_graph.predecessors(a))) * len(set(train_graph.predecessors(b)))\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "D4oHR6j8X6yR", "colab_type": "code", "outputId": "53d86888-33a5-440b-c41d-314632ba807d", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "#testing\n", "calc_pref_att(1,189226)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "9" ] }, "metadata": { "tags": [] }, "execution_count": 25 } ] }, { "cell_type": "markdown", "metadata": { "id": "oUfVqysq2d3j", "colab_type": "text" }, "source": [ "## 4.8 SVD Dot Features\n" ] }, { "cell_type": "code", "metadata": { "id": "lgU1195IJvqE", "colab_type": "code", "colab": {} }, "source": [ "#svd_dot_u\n", "def svd_dot_u(node):\n", " try:\n", " s_node = node[['svd_u_s_1', 'svd_u_s_2','svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6']]\n", " d_node = node[['svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5','svd_u_d_6']]\n", " return np.dot(s_node,d_node)\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "udb4I1ILEEjK", "colab_type": "code", "colab": {} }, "source": [ "#svd_dot_v\n", "def svd_dot_v(node):\n", " try:\n", " s_node = node[['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]]\n", " d_node = node[['svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5','svd_v_d_6']]\n", " return np.dot(s_node,d_node)\n", " except:\n", " return 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "AfB8x3vRJcGh", "colab_type": "code", "outputId": "7ff375e2-f350-44a5-f3d7-835c20100ffe", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "svd_dot_v(df_final_train.iloc[1])" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.0009068718965871744" ] }, "metadata": { "tags": [] }, "execution_count": 47 } ] }, { "cell_type": "markdown", "metadata": { "id": "ZZtowOLZVFH6", "colab_type": "text" }, "source": [ "# 5. Featurization" ] }, { "cell_type": "markdown", "metadata": { "id": "o6NnRWmLVFH6", "colab_type": "text" }, "source": [ "## 5. 1 Reading a sample of Data from both train and test" ] }, { "cell_type": "code", "metadata": { "id": "wgHje1UVVFH8", "colab_type": "code", "colab": {} }, "source": [ "import random\n", "if os.path.isfile('data/after_eda/train_after_eda.csv'):\n", " filename = \"data/after_eda/train_after_eda.csv\"\n", " # you uncomment this line, if you dont know the lentgh of the file name\n", " # here we have hardcoded the number of lines as 15100030\n", " # n_train = sum(1 for line in open(filename)) #number of records in file (excludes header)\n", " n_train = 15100028\n", " s = 100000 #desired sample size\n", " skip_train = sorted(random.sample(range(1,n_train+1),n_train-s))\n", " #https://stackoverflow.com/a/22259008/4084039" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "zOzuRFFlVFH-", "colab_type": "code", "colab": {} }, "source": [ "if os.path.isfile('data/after_eda/train_after_eda.csv'):\n", " filename = \"data/after_eda/test_after_eda.csv\"\n", " # you uncomment this line, if you dont know the lentgh of the file name\n", " # here we have hardcoded the number of lines as 3775008\n", " # n_test = sum(1 for line in open(filename)) #number of records in file (excludes header)\n", " n_test = 3775006\n", " s = 50000 #desired sample size\n", " skip_test = sorted(random.sample(range(1,n_test+1),n_test-s))\n", " #https://stackoverflow.com/a/22259008/4084039" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "3D_SeUCOVFH_", "colab_type": "code", "outputId": "322902a4-0420-4b99-8606-5fd0de4bbea4", "colab": {} }, "source": [ "print(\"Number of rows in the train data file:\", n_train)\n", "print(\"Number of rows we are going to elimiate in train data are\",len(skip_train))\n", "print(\"Number of rows in the test data file:\", n_test)\n", "print(\"Number of rows we are going to elimiate in test data are\",len(skip_test))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Number of rows in the train data file: 15100028\n", "Number of rows we are going to elimiate in train data are 15000028\n", "Number of rows in the test data file: 3775006\n", "Number of rows we are going to elimiate in test data are 3725006\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "pCisf6PpVFID", "colab_type": "code", "outputId": "daf2af43-3f98-4466-ad99-03bc54464714", "colab": {} }, "source": [ "df_final_train = pd.read_csv('data/after_eda/train_after_eda.csv', skiprows=skip_train, names=['source_node', 'destination_node'])\n", "df_final_train['indicator_link'] = pd.read_csv('data/train_y.csv', skiprows=skip_train, names=['indicator_link'])\n", "print(\"Our train matrix size \",df_final_train.shape)\n", "df_final_train.head(2)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Our train matrix size (100002, 3)\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
source_nodedestination_nodeindicator_link
027308415056021
183201615434151
\n", "
" ], "text/plain": [ " source_node destination_node indicator_link\n", "0 273084 1505602 1\n", "1 832016 1543415 1" ] }, "metadata": { "tags": [] }, "execution_count": 49 } ] }, { "cell_type": "code", "metadata": { "id": "tFn1RkdyVFIH", "colab_type": "code", "outputId": "1ca99e70-6d2a-45f2-f51c-fd3b1211ad20", "colab": {} }, "source": [ "df_final_test = pd.read_csv('data/after_eda/test_after_eda.csv', skiprows=skip_test, names=['source_node', 'destination_node'])\n", "df_final_test['indicator_link'] = pd.read_csv('data/test_y.csv', skiprows=skip_test, names=['indicator_link'])\n", "print(\"Our test matrix size \",df_final_test.shape)\n", "df_final_test.head(2)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Our test matrix size (50002, 3)\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
source_nodedestination_nodeindicator_link
08484247846901
148329412555321
\n", "
" ], "text/plain": [ " source_node destination_node indicator_link\n", "0 848424 784690 1\n", "1 483294 1255532 1" ] }, "metadata": { "tags": [] }, "execution_count": 50 } ] }, { "cell_type": "markdown", "metadata": { "id": "gIaOWDaDVFIJ", "colab_type": "text" }, "source": [ "## 5.2 Adding a set of features\n", "\n", "__we will create these each of these features for both train and test data points__\n", "
    \n", "
  1. jaccard_followers
  2. \n", "
  3. jaccard_followees
  4. \n", "
  5. cosine_followers
  6. \n", "
  7. cosine_followees
  8. \n", "
  9. num_followers_s
  10. \n", "
  11. num_followees_s
  12. \n", "
  13. num_followers_d
  14. \n", "
  15. num_followees_d
  16. \n", "
  17. inter_followers
  18. \n", "
  19. inter_followees
  20. \n", "
" ] }, { "cell_type": "code", "metadata": { "id": "2qTkOiBcVFIJ", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/storage_sample_stage1.h5'):\n", " #mapping jaccrd followers to train and test data\n", " df_final_train['jaccard_followers'] = df_final_train.apply(lambda row:\n", " jaccard_for_followers(row['source_node'],row['destination_node']),axis=1)\n", " df_final_test['jaccard_followers'] = df_final_test.apply(lambda row:\n", " jaccard_for_followers(row['source_node'],row['destination_node']),axis=1)\n", "\n", " #mapping jaccrd followees to train and test data\n", " df_final_train['jaccard_followees'] = df_final_train.apply(lambda row:\n", " jaccard_for_followees(row['source_node'],row['destination_node']),axis=1)\n", " df_final_test['jaccard_followees'] = df_final_test.apply(lambda row:\n", " jaccard_for_followees(row['source_node'],row['destination_node']),axis=1)\n", " \n", "\n", " #mapping jaccrd followers to train and test data\n", " df_final_train['cosine_followers'] = df_final_train.apply(lambda row:\n", " cosine_for_followers(row['source_node'],row['destination_node']),axis=1)\n", " df_final_test['cosine_followers'] = df_final_test.apply(lambda row:\n", " cosine_for_followers(row['source_node'],row['destination_node']),axis=1)\n", "\n", " #mapping jaccrd followees to train and test data\n", " df_final_train['cosine_followees'] = df_final_train.apply(lambda row:\n", " cosine_for_followees(row['source_node'],row['destination_node']),axis=1)\n", " df_final_test['cosine_followees'] = df_final_test.apply(lambda row:\n", " cosine_for_followees(row['source_node'],row['destination_node']),axis=1)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "fz2eZpSnVFIL", "colab_type": "code", "colab": {} }, "source": [ "def compute_features_stage1(df_final):\n", " #calculating no of followers followees for source and destination\n", " #calculating intersection of followers and followees for source and destination\n", " num_followers_s=[]\n", " num_followees_s=[]\n", " num_followers_d=[]\n", " num_followees_d=[]\n", " inter_followers=[]\n", " inter_followees=[]\n", " for i,row in df_final.iterrows():\n", " try:\n", " s1=set(train_graph.predecessors(row['source_node']))\n", " s2=set(train_graph.successors(row['source_node']))\n", " except:\n", " s1 = set()\n", " s2 = set()\n", " try:\n", " d1=set(train_graph.predecessors(row['destination_node']))\n", " d2=set(train_graph.successors(row['destination_node']))\n", " except:\n", " d1 = set()\n", " d2 = set()\n", " num_followers_s.append(len(s1))\n", " num_followees_s.append(len(s2))\n", "\n", " num_followers_d.append(len(d1))\n", " num_followees_d.append(len(d2))\n", "\n", " inter_followers.append(len(s1.intersection(d1)))\n", " inter_followees.append(len(s2.intersection(d2)))\n", " \n", " return num_followers_s, num_followers_d, num_followees_s, num_followees_d, inter_followers, inter_followees" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "VFc60kcRVFIN", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/storage_sample_stage1.h5'):\n", " df_final_train['num_followers_s'], df_final_train['num_followers_d'], \\\n", " df_final_train['num_followees_s'], df_final_train['num_followees_d'], \\\n", " df_final_train['inter_followers'], df_final_train['inter_followees']= compute_features_stage1(df_final_train)\n", " \n", " df_final_test['num_followers_s'], df_final_test['num_followers_d'], \\\n", " df_final_test['num_followees_s'], df_final_test['num_followees_d'], \\\n", " df_final_test['inter_followers'], df_final_test['inter_followees']= compute_features_stage1(df_final_test)\n", " \n", " hdf = HDFStore('data/fea_sample/storage_sample_stage1.h5')\n", " hdf.put('train_df',df_final_train, format='table', data_columns=True)\n", " hdf.put('test_df',df_final_test, format='table', data_columns=True)\n", " hdf.close()\n", "else:\n", " df_final_train = read_hdf('data/fea_sample/storage_sample_stage1.h5', 'train_df',mode='r')\n", " df_final_test = read_hdf('data/fea_sample/storage_sample_stage1.h5', 'test_df',mode='r')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "go_e8hxxVFIO", "colab_type": "text" }, "source": [ "## 5.3 Adding new set of features\n", "\n", "__we will create these each of these features for both train and test data points__\n", "
    \n", "
  1. adar index
  2. \n", "
  3. is following back
  4. \n", "
  5. belongs to same weakly connect components
  6. \n", "
  7. shortest path between source and destination
  8. \n", "
" ] }, { "cell_type": "code", "metadata": { "id": "LqB0Peg0VFIP", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/storage_sample_stage2.h5'):\n", " #mapping adar index on train\n", " df_final_train['adar_index'] = df_final_train.apply(lambda row: calc_adar_in(row['source_node'],row['destination_node']),axis=1)\n", " #mapping adar index on test\n", " df_final_test['adar_index'] = df_final_test.apply(lambda row: calc_adar_in(row['source_node'],row['destination_node']),axis=1)\n", "\n", " #--------------------------------------------------------------------------------------------------------\n", " #mapping followback or not on train\n", " df_final_train['follows_back'] = df_final_train.apply(lambda row: follows_back(row['source_node'],row['destination_node']),axis=1)\n", "\n", " #mapping followback or not on test\n", " df_final_test['follows_back'] = df_final_test.apply(lambda row: follows_back(row['source_node'],row['destination_node']),axis=1)\n", "\n", " #--------------------------------------------------------------------------------------------------------\n", " #mapping same component of wcc or not on train\n", " df_final_train['same_comp'] = df_final_train.apply(lambda row: belongs_to_same_wcc(row['source_node'],row['destination_node']),axis=1)\n", "\n", " ##mapping same component of wcc or not on train\n", " df_final_test['same_comp'] = df_final_test.apply(lambda row: belongs_to_same_wcc(row['source_node'],row['destination_node']),axis=1)\n", " \n", " #--------------------------------------------------------------------------------------------------------\n", " #mapping shortest path on train \n", " df_final_train['shortest_path'] = df_final_train.apply(lambda row: compute_shortest_path_length(row['source_node'],row['destination_node']),axis=1)\n", " #mapping shortest path on test\n", " df_final_test['shortest_path'] = df_final_test.apply(lambda row: compute_shortest_path_length(row['source_node'],row['destination_node']),axis=1)\n", "\n", " hdf = HDFStore('data/fea_sample/storage_sample_stage2.h5')\n", " hdf.put('train_df',df_final_train, format='table', data_columns=True)\n", " hdf.put('test_df',df_final_test, format='table', data_columns=True)\n", " hdf.close()\n", "else:\n", " df_final_train = read_hdf('data/fea_sample/storage_sample_stage2.h5', 'train_df',mode='r')\n", " df_final_test = read_hdf('data/fea_sample/storage_sample_stage2.h5', 'test_df',mode='r')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "HJ8Dbma_VFIR", "colab_type": "text" }, "source": [ "## 5.4 Adding new set of features\n", "\n", "__we will create these each of these features for both train and test data points__\n", "
    \n", "
  1. Weight Features\n", "
      \n", "
    • weight of incoming edges
    • \n", "
    • weight of outgoing edges
    • \n", "
    • weight of incoming edges + weight of outgoing edges
    • \n", "
    • weight of incoming edges * weight of outgoing edges
    • \n", "
    • 2*weight of incoming edges + weight of outgoing edges
    • \n", "
    • weight of incoming edges + 2*weight of outgoing edges
    • \n", "
    \n", "
  2. \n", "
  3. Page Ranking of source
  4. \n", "
  5. Page Ranking of dest
  6. \n", "
  7. katz of source
  8. \n", "
  9. katz of dest
  10. \n", "
  11. hubs of source
  12. \n", "
  13. hubs of dest
  14. \n", "
  15. authorities_s of source
  16. \n", "
  17. authorities_s of dest
  18. \n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "iVHI2jtNVFIS", "colab_type": "text" }, "source": [ "#### Weight Features" ] }, { "cell_type": "markdown", "metadata": { "id": "rXmUYF9FVFIT", "colab_type": "text" }, "source": [ "In order to determine the similarity of nodes, an edge weight value was calculated between nodes. Edge weight decreases as the neighbor count goes up. Intuitively, consider one million people following a celebrity on a social network then chances are most of them never met each other or the celebrity. On the other hand, if a user has 30 contacts in his/her social network, the chances are higher that many of them know each other. \n", "`credit` - Graph-based Features for Supervised Link Prediction\n", "William Cukierski, Benjamin Hamner, Bo Yang" ] }, { "cell_type": "markdown", "metadata": { "id": "Qzbs2no7VFIV", "colab_type": "text" }, "source": [ "\\begin{equation}\n", "W = \\frac{1}{\\sqrt{1+|X|}}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": { "id": "kkzUPrWaVFIV", "colab_type": "text" }, "source": [ "it is directed graph so calculated Weighted in and Weighted out differently" ] }, { "cell_type": "code", "metadata": { "id": "FgNMzzTbVFIW", "colab_type": "code", "outputId": "7e8e6d88-8bd6-45f6-f80e-82b093c18974", "colab": {} }, "source": [ "#weight for source and destination of each link\n", "Weight_in = {}\n", "Weight_out = {}\n", "for i in tqdm(train_graph.nodes()):\n", " s1=set(train_graph.predecessors(i))\n", " w_in = 1.0/(np.sqrt(1+len(s1)))\n", " Weight_in[i]=w_in\n", " \n", " s2=set(train_graph.successors(i))\n", " w_out = 1.0/(np.sqrt(1+len(s2)))\n", " Weight_out[i]=w_out\n", " \n", "#for imputing with mean\n", "mean_weight_in = np.mean(list(Weight_in.values()))\n", "mean_weight_out = np.mean(list(Weight_out.values()))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████| 1780722/1780722 [00:11<00:00, 152682.24it/s]\n" ], "name": "stderr" } ] }, { "cell_type": "code", "metadata": { "id": "AF4yPhIOVFIY", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/storage_sample_stage3.h5'):\n", " #mapping to pandas train\n", " df_final_train['weight_in'] = df_final_train.destination_node.apply(lambda x: Weight_in.get(x,mean_weight_in))\n", " df_final_train['weight_out'] = df_final_train.source_node.apply(lambda x: Weight_out.get(x,mean_weight_out))\n", "\n", " #mapping to pandas test\n", " df_final_test['weight_in'] = df_final_test.destination_node.apply(lambda x: Weight_in.get(x,mean_weight_in))\n", " df_final_test['weight_out'] = df_final_test.source_node.apply(lambda x: Weight_out.get(x,mean_weight_out))\n", "\n", "\n", " #some features engineerings on the in and out weights\n", " df_final_train['weight_f1'] = df_final_train.weight_in + df_final_train.weight_out\n", " df_final_train['weight_f2'] = df_final_train.weight_in * df_final_train.weight_out\n", " df_final_train['weight_f3'] = (2*df_final_train.weight_in + 1*df_final_train.weight_out)\n", " df_final_train['weight_f4'] = (1*df_final_train.weight_in + 2*df_final_train.weight_out)\n", "\n", " #some features engineerings on the in and out weights\n", " df_final_test['weight_f1'] = df_final_test.weight_in + df_final_test.weight_out\n", " df_final_test['weight_f2'] = df_final_test.weight_in * df_final_test.weight_out\n", " df_final_test['weight_f3'] = (2*df_final_test.weight_in + 1*df_final_test.weight_out)\n", " df_final_test['weight_f4'] = (1*df_final_test.weight_in + 2*df_final_test.weight_out)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "uhxzhQ9aVFIa", "colab_type": "code", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/storage_sample_stage3.h5'):\n", " \n", " #page rank for source and destination in Train and Test\n", " #if anything not there in train graph then adding mean page rank \n", " df_final_train['page_rank_s'] = df_final_train.source_node.apply(lambda x:pr.get(x,mean_pr))\n", " df_final_train['page_rank_d'] = df_final_train.destination_node.apply(lambda x:pr.get(x,mean_pr))\n", "\n", " df_final_test['page_rank_s'] = df_final_test.source_node.apply(lambda x:pr.get(x,mean_pr))\n", " df_final_test['page_rank_d'] = df_final_test.destination_node.apply(lambda x:pr.get(x,mean_pr))\n", " #================================================================================\n", "\n", " #Katz centrality score for source and destination in Train and test\n", " #if anything not there in train graph then adding mean katz score\n", " df_final_train['katz_s'] = df_final_train.source_node.apply(lambda x: katz.get(x,mean_katz))\n", " df_final_train['katz_d'] = df_final_train.destination_node.apply(lambda x: katz.get(x,mean_katz))\n", "\n", " df_final_test['katz_s'] = df_final_test.source_node.apply(lambda x: katz.get(x,mean_katz))\n", " df_final_test['katz_d'] = df_final_test.destination_node.apply(lambda x: katz.get(x,mean_katz))\n", " #================================================================================\n", "\n", " #Hits algorithm score for source and destination in Train and test\n", " #if anything not there in train graph then adding 0\n", " df_final_train['hubs_s'] = df_final_train.source_node.apply(lambda x: hits[0].get(x,0))\n", " df_final_train['hubs_d'] = df_final_train.destination_node.apply(lambda x: hits[0].get(x,0))\n", "\n", " df_final_test['hubs_s'] = df_final_test.source_node.apply(lambda x: hits[0].get(x,0))\n", " df_final_test['hubs_d'] = df_final_test.destination_node.apply(lambda x: hits[0].get(x,0))\n", " #================================================================================\n", "\n", " #Hits algorithm score for source and destination in Train and Test\n", " #if anything not there in train graph then adding 0\n", " df_final_train['authorities_s'] = df_final_train.source_node.apply(lambda x: hits[1].get(x,0))\n", " df_final_train['authorities_d'] = df_final_train.destination_node.apply(lambda x: hits[1].get(x,0))\n", "\n", " df_final_test['authorities_s'] = df_final_test.source_node.apply(lambda x: hits[1].get(x,0))\n", " df_final_test['authorities_d'] = df_final_test.destination_node.apply(lambda x: hits[1].get(x,0))\n", " #================================================================================\n", "\n", " hdf = HDFStore('data/fea_sample/storage_sample_stage3.h5')\n", " hdf.put('train_df',df_final_train, format='table', data_columns=True)\n", " hdf.put('test_df',df_final_test, format='table', data_columns=True)\n", " hdf.close()\n", "else:\n", " df_final_train = read_hdf('data/fea_sample/storage_sample_stage3.h5', 'train_df',mode='r')\n", " df_final_test = read_hdf('data/fea_sample/storage_sample_stage3.h5', 'test_df',mode='r')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "p6xkDfD-VFIb", "colab_type": "text" }, "source": [ "## 5.5 Adding new set of features\n", "\n", "__we will create these each of these features for both train and test data points__\n", "
    \n", "
  1. SVD features for both source and destination
  2. \n", "
" ] }, { "cell_type": "code", "metadata": { "id": "WQO6E65eVFIc", "colab_type": "code", "colab": {} }, "source": [ "def svd(x, S):\n", " try:\n", " z = sadj_dict[x]\n", " return S[z]\n", " except:\n", " return [0,0,0,0,0,0]" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "9sOyLwvNVFId", "colab_type": "code", "colab": {} }, "source": [ "#for svd features to get feature vector creating a dict node val and inedx in svd vector\n", "sadj_col = sorted(train_graph.nodes())\n", "sadj_dict = { val:idx for idx,val in enumerate(sadj_col)}" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "zLSt8fGVVFIg", "colab_type": "code", "colab": {} }, "source": [ "Adj = nx.adjacency_matrix(train_graph,nodelist=sorted(train_graph.nodes())).asfptype()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "soq-VAHlVFIh", "colab_type": "code", "outputId": "3f9bfb32-004f-4698-e415-469243250130", "colab": {} }, "source": [ "U, s, V = svds(Adj, k = 6)\n", "print('Adjacency matrix Shape',Adj.shape)\n", "print('U Shape',U.shape)\n", "print('V Shape',V.shape)\n", "print('s Shape',s.shape)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Adjacency matrix Shape (1780722, 1780722)\n", "U Shape (1780722, 6)\n", "V Shape (6, 1780722)\n", "s Shape (6,)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "-sjIcnncsOq7", "colab_type": "code", "colab": {} }, "source": [ "type(df_final_train)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "odXAKd5mqLan", "colab": {} }, "source": [ "if not os.path.isfile('data/fea_sample/storage_sample_stage4.h5'):\n", " #===================================================================================================\n", " \n", " df_final_train[['svd_u_s_1', 'svd_u_s_2','svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6']] = \\\n", " df_final_train.source_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n", " \n", " df_final_train[['svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5','svd_u_d_6']] = \\\n", " df_final_train.destination_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n", " #===================================================================================================\n", " \n", " df_final_train[['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]] = \\\n", " df_final_train.source_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n", "\n", " df_final_train[['svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5','svd_v_d_6']] = \\\n", " df_final_train.destination_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n", " #===================================================================================================\n", " \n", " df_final_test[['svd_u_s_1', 'svd_u_s_2','svd_u_s_3', 'svd_u_s_4', 'svd_u_s_5', 'svd_u_s_6']] = \\\n", " df_final_test.source_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n", " \n", " df_final_test[['svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3', 'svd_u_d_4', 'svd_u_d_5','svd_u_d_6']] = \\\n", " df_final_test.destination_node.apply(lambda x: svd(x, U)).apply(pd.Series)\n", "\n", " #===================================================================================================\n", " \n", " df_final_test[['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]] = \\\n", " df_final_test.source_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n", "\n", " df_final_test[['svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5','svd_v_d_6']] = \\\n", " df_final_test.destination_node.apply(lambda x: svd(x, V.T)).apply(pd.Series)\n", " #===================================================================================================\n", "\n", " hdf = HDFStore('data/fea_sample/storage_sample_stage4.h5')\n", " hdf.put('train_df',df_final_train, format='table', data_columns=True)\n", " hdf.put('test_df',df_final_test, format='table', data_columns=True)\n", " hdf.close()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "0-hBtlkzVFIn", "colab_type": "code", "colab": {} }, "source": [ "# prepared and stored the data from machine learning models\n", "# pelase check the FB_Models.ipynb" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "a79lx8xGHD4q", "colab_type": "code", "outputId": "a177b3f3-84f7-479c-e3e6-28f277c72e97", "colab": { "base_uri": "https://localhost:8080/", "height": 254 } }, "source": [ "df_final_train.columns" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['source_node', 'destination_node', 'indicator_link',\n", " 'jaccard_followers', 'jaccard_followees', 'cosine_followers',\n", " 'cosine_followees', 'num_followers_s', 'num_followees_s',\n", " 'num_followees_d', 'inter_followers', 'inter_followees', 'adar_index',\n", " 'follows_back', 'same_comp', 'shortest_path', 'weight_in', 'weight_out',\n", " 'weight_f1', 'weight_f2', 'weight_f3', 'weight_f4', 'page_rank_s',\n", " 'page_rank_d', 'katz_s', 'katz_d', 'hubs_s', 'hubs_d', 'authorities_s',\n", " 'authorities_d', 'svd_u_s_1', 'svd_u_s_2', 'svd_u_s_3', 'svd_u_s_4',\n", " 'svd_u_s_5', 'svd_u_s_6', 'svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3',\n", " 'svd_u_d_4', 'svd_u_d_5', 'svd_u_d_6', 'svd_v_s_1', 'svd_v_s_2',\n", " 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6', 'svd_v_d_1',\n", " 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5', 'svd_v_d_6'],\n", " dtype='object')" ] }, "metadata": { "tags": [] }, "execution_count": 44 } ] }, { "cell_type": "markdown", "metadata": { "id": "6egNulruz9sS", "colab_type": "text" }, "source": [ "" ] }, { "cell_type": "code", "metadata": { "id": "r5A3JmDVyRmr", "colab_type": "code", "outputId": "83c116c3-ac90-49c2-fcef-54a75ace6a87", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "%%time\n", "s_node = df_final_train.loc[1][['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]]" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "CPU times: user 2.51 ms, sys: 0 ns, total: 2.51 ms\n", "Wall time: 2.44 ms\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "t7ZjLVqKy_a-", "colab_type": "code", "colab": {} }, "source": [ "d_node = df_final_train.iloc[182][['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]]" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "lrMNt_7QyfM2", "colab_type": "code", "outputId": "9190882a-3628-4472-89eb-000028afdaba", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "type(s_node)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "pandas.core.series.Series" ] }, "metadata": { "tags": [] }, "execution_count": 10 } ] }, { "cell_type": "code", "metadata": { "id": "oSRA_LIPyNhE", "colab_type": "code", "outputId": "035c77c2-b9c0-47d1-bd87-cf0c848e0bfc", "colab": { "base_uri": "https://localhost:8080/", "height": 145 } }, "source": [ "s_node[['svd_v_s_1','svd_v_s_2', 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6',]]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "svd_v_s_1 2.685878e-13\n", "svd_v_s_2 -3.316849e-11\n", "svd_v_s_3 -6.236048e-11\n", "svd_v_s_4 1.345726e-02\n", "svd_v_s_5 3.703479e-12\n", "svd_v_s_6 2.251737e-10\n", "Name: 1, dtype: float64" ] }, "metadata": { "tags": [] }, "execution_count": 8 } ] }, { "cell_type": "code", "metadata": { "id": "r87Q9PdrzHAK", "colab_type": "code", "outputId": "56fe9076-3489-423e-8eea-da3b0bd6d089", "colab": { "base_uri": "https://localhost:8080/", "height": 145 } }, "source": [ "d_node[['svd_v_d_1', 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5','svd_v_d_6']]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "svd_v_s_1 -3.926204e-12\n", "svd_v_s_2 2.422447e-10\n", "svd_v_s_3 9.394619e-11\n", "svd_v_s_4 8.798935e-10\n", "svd_v_s_5 5.739577e-10\n", "svd_v_s_6 5.685045e-13\n", "Name: 182, dtype: float64" ] }, "metadata": { "tags": [] }, "execution_count": 12 } ] }, { "cell_type": "code", "metadata": { "id": "k8aRszX_zNnK", "colab_type": "code", "outputId": "952775d7-4585-4430-da0a-614abc786f64", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "%%time\n", "sum_x = 0.0\n", "for i in range(6):\n", " sum_x += s_node[i]*d_node[i]" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "CPU times: user 340 µs, sys: 39 µs, total: 379 µs\n", "Wall time: 384 µs\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "X1qQhUgr0WWK", "colab_type": "code", "outputId": "f66baa5a-91b1-4dc6-94df-b260ae530e52", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "print(sum_x)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "1.1840959020021693e-11\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "mml1wTXS0ffQ", "colab_type": "code", "outputId": "58958c40-0082-4b38-cc36-a5651374b8ab", "colab": { "base_uri": "https://localhost:8080/", "height": 72 } }, "source": [ "%%time\n", "np.dot(np.array(s_node),np.array(d_node))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "CPU times: user 371 µs, sys: 42 µs, total: 413 µs\n", "Wall time: 445 µs\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "1.1840959020021693e-11" ] }, "metadata": { "tags": [] }, "execution_count": 28 } ] }, { "cell_type": "code", "metadata": { "id": "Wwxs-XLf1d9B", "colab_type": "code", "outputId": "888dc7b0-f64f-4bcd-9c2e-ec91aae36fa7", "colab": { "base_uri": "https://localhost:8080/", "height": 72 } }, "source": [ "%%time\n", "np.dot(s_node,d_node)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "CPU times: user 287 µs, sys: 33 µs, total: 320 µs\n", "Wall time: 325 µs\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "1.1840959020021693e-11" ] }, "metadata": { "tags": [] }, "execution_count": 29 } ] }, { "cell_type": "code", "metadata": { "id": "yglnXyqH6K6F", "colab_type": "code", "outputId": "257415cf-f368-43e3-8e2f-c1b783787672", "colab": { "base_uri": "https://localhost:8080/", "height": 72 } }, "source": [ "df_final_test.iloc[1][['source_node','destination_node']]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "source_node 483294.0\n", "destination_node 1255532.0\n", "Name: 1, dtype: float64" ] }, "metadata": { "tags": [] }, "execution_count": 34 } ] }, { "cell_type": "code", "metadata": { "id": "fbcAY2jn3d3k", "colab_type": "code", "outputId": "2132b525-9847-48b6-a980-be07b5388786", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "%%time\n", "df_final_train['svd_dot_u'] = df_final_train.apply(lambda row:svd_dot_u(row),axis=1)\n", "df_final_train['svd_dot_v'] = df_final_train.apply(lambda row:svd_dot_v(row),axis=1)\n", "\n", "\n", "df_final_test['svd_dot_u'] = df_final_test.apply(lambda row:svd_dot_u(row),axis=1)\n", "df_final_test['svd_dot_v'] = df_final_test.apply(lambda row:svd_dot_v(row),axis=1)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "CPU times: user 7min 8s, sys: 7.32 s, total: 7min 16s\n", "Wall time: 7min 14s\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "m6UYFA1241Is", "colab_type": "code", "colab": {} }, "source": [ "df_final_train['pref_att'] = df_final_train.apply(lambda row:\n", " calc_pref_att(row['source_node'],row['destination_node']),axis=1)\n", "df_final_test['pref_att'] = df_final_test.apply(lambda row:\n", " calc_pref_att(row['source_node'],row['destination_node']),axis=1)\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "6hpzWQ4m9GiE", "colab_type": "code", "outputId": "eb83a2e0-d833-4588-98b9-0f04c8c45e3d", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "df_final_train.shape" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(100002, 57)" ] }, "metadata": { "tags": [] }, "execution_count": 25 } ] }, { "cell_type": "code", "metadata": { "id": "Xepiqcy_9pnV", "colab_type": "code", "outputId": "8db347e5-d488-474a-c1c8-01c8931e4de8", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "df_final_test.shape" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(50002, 57)" ] }, "metadata": { "tags": [] }, "execution_count": 26 } ] }, { "cell_type": "code", "metadata": { "id": "9A3E0UYi4Zzs", "colab_type": "code", "outputId": "7d0694f9-c3ee-464b-a2a6-a88ccafb8299", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "df_final_train.iloc[1]['svd_dot_u']" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.003192812249669553" ] }, "metadata": { "tags": [] }, "execution_count": 19 } ] }, { "cell_type": "code", "metadata": { "id": "w9RMKD9b6cq5", "colab_type": "code", "outputId": "0d7b5621-127e-41f8-b081-661ec87bdabf", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "svd_dot_u(df_final_train.iloc[1])" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.003192812249669553" ] }, "metadata": { "tags": [] }, "execution_count": 20 } ] }, { "cell_type": "markdown", "metadata": { "id": "naWvqMEMHglO", "colab_type": "text" }, "source": [ "

Social network Graph Link Prediction - Facebook Challenge

" ] }, { "cell_type": "code", "metadata": { "id": "9wb9N5RzHglP", "colab_type": "code", "colab": {} }, "source": [ "#Importing Libraries\n", "# please do go through this python notebook: \n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "import csv\n", "import pandas as pd#pandas to create small dataframes \n", "import datetime #Convert to unix time\n", "import time #Convert to unix time\n", "# if numpy is not installed already : pip3 install numpy\n", "import numpy as np#Do aritmetic operations on arrays\n", "# matplotlib: used to plot graphs\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import seaborn as sns#Plots\n", "from matplotlib import rcParams#Size of plots \n", "from sklearn.cluster import MiniBatchKMeans, KMeans#Clustering\n", "import math\n", "import pickle\n", "import os\n", "# to install xgboost: pip3 install xgboost\n", "import xgboost as xgb\n", "\n", "import warnings\n", "import networkx as nx\n", "import pdb\n", "import pickle\n", "from pandas import HDFStore,DataFrame\n", "from pandas import read_hdf\n", "from scipy.sparse.linalg import svds, eigs\n", "import gc\n", "from tqdm import tqdm\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.metrics import f1_score" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "XC4OJFKkHglU", "colab_type": "code", "colab": {} }, "source": [ "#reading\n", "from pandas import read_hdf\n", "df_final_train = read_hdf('drive/My Drive/FacebookGraphRecomm/data/data/fea_sample/storage_sample_stage4.h5', 'train_df',mode='r')\n", "df_final_test = read_hdf('drive/My Drive/FacebookGraphRecomm/data/data/fea_sample/storage_sample_stage4.h5', 'test_df',mode='r')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "_w-HZuVUTzis", "colab_type": "code", "outputId": "b1ffc812-4561-4f8f-89c0-91d931386f84", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "type(df_final_train)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "code", "metadata": { "id": "5Gm-BHRkHglW", "colab_type": "code", "outputId": "8d9a1d29-5973-49f6-98bf-89d8b66ca0e7", "colab": { "base_uri": "https://localhost:8080/", "height": 265 } }, "source": [ "df_final_train.columns" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['source_node', 'destination_node', 'indicator_link',\n", " 'jaccard_followers', 'jaccard_followees', 'cosine_followers',\n", " 'cosine_followees', 'num_followers_s', 'num_followees_s',\n", " 'num_followees_d', 'inter_followers', 'inter_followees', 'adar_index',\n", " 'follows_back', 'same_comp', 'shortest_path', 'weight_in', 'weight_out',\n", " 'weight_f1', 'weight_f2', 'weight_f3', 'weight_f4', 'page_rank_s',\n", " 'page_rank_d', 'katz_s', 'katz_d', 'hubs_s', 'hubs_d', 'authorities_s',\n", " 'authorities_d', 'svd_u_s_1', 'svd_u_s_2', 'svd_u_s_3', 'svd_u_s_4',\n", " 'svd_u_s_5', 'svd_u_s_6', 'svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3',\n", " 'svd_u_d_4', 'svd_u_d_5', 'svd_u_d_6', 'svd_v_s_1', 'svd_v_s_2',\n", " 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6', 'svd_v_d_1',\n", " 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5', 'svd_v_d_6',\n", " 'svd_dot_u', 'svd_dot_v', 'pref_att'],\n", " dtype='object')" ] }, "metadata": { "tags": [] }, "execution_count": 28 } ] }, { "cell_type": "code", "metadata": { "id": "XRW7VZ4AHglc", "colab_type": "code", "colab": {} }, "source": [ "y_train = df_final_train.indicator_link\n", "y_test = df_final_test.indicator_link" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4lj9M_qtHglf", "colab_type": "code", "colab": {} }, "source": [ "df_final_train.drop(['source_node', 'destination_node','indicator_link'],axis=1,inplace=True)\n", "df_final_test.drop(['source_node', 'destination_node','indicator_link'],axis=1,inplace=True)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "lIEc91uVHgli", "colab_type": "code", "outputId": "31f04b72-ebe5-4b13-ccca-a5ae3bc4f09c", "colab": {} }, "source": [ "estimators = [10,50,100,250,450]\n", "train_scores = []\n", "test_scores = []\n", "for i in estimators:\n", " clf = RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=5, max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=52, min_samples_split=120,\n", " min_weight_fraction_leaf=0.0, n_estimators=i, n_jobs=-1,random_state=25,verbose=0,warm_start=False)\n", " clf.fit(df_final_train,y_train)\n", " train_sc = f1_score(y_train,clf.predict(df_final_train))\n", " test_sc = f1_score(y_test,clf.predict(df_final_test))\n", " test_scores.append(test_sc)\n", " train_scores.append(train_sc)\n", " print('Estimators = ',i,'Train Score',train_sc,'test Score',test_sc)\n", "plt.plot(estimators,train_scores,label='Train Score')\n", "plt.plot(estimators,test_scores,label='Test Score')\n", "plt.xlabel('Estimators')\n", "plt.ylabel('Score')\n", "plt.title('Estimators vs score at depth of 5')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Estimators = 10 Train Score 0.9063252121775113 test Score 0.8745605278006858\n", "Estimators = 50 Train Score 0.9205725512208812 test Score 0.9125653355634538\n", "Estimators = 100 Train Score 0.9238690848446947 test Score 0.9141199714153599\n", "Estimators = 250 Train Score 0.9239789348046863 test Score 0.9188007232664732\n", "Estimators = 450 Train Score 0.9237190618658074 test Score 0.9161507685828595\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "Text(0.5,1,'Estimators vs score at depth of 5')" ] }, "metadata": { "tags": [] }, "execution_count": 6 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "nZxhrTdQHglm", "colab_type": "code", "outputId": "53382b8e-148d-4c22-8066-d9807fb27012", "colab": {} }, "source": [ "depths = [3,9,11,15,20,35,50,70,130]\n", "train_scores = []\n", "test_scores = []\n", "for i in depths:\n", " clf = RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=i, max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=52, min_samples_split=120,\n", " min_weight_fraction_leaf=0.0, n_estimators=115, n_jobs=-1,random_state=25,verbose=0,warm_start=False)\n", " clf.fit(df_final_train,y_train)\n", " train_sc = f1_score(y_train,clf.predict(df_final_train))\n", " test_sc = f1_score(y_test,clf.predict(df_final_test))\n", " test_scores.append(test_sc)\n", " train_scores.append(train_sc)\n", " print('depth = ',i,'Train Score',train_sc,'test Score',test_sc)\n", "plt.plot(depths,train_scores,label='Train Score')\n", "plt.plot(depths,test_scores,label='Test Score')\n", "plt.xlabel('Depth')\n", "plt.ylabel('Score')\n", "plt.title('Depth vs score at depth of 5 at estimators = 115')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "depth = 3 Train Score 0.8916120853581238 test Score 0.8687934859875491\n", "depth = 9 Train Score 0.9572226298198419 test Score 0.9222953031452904\n", "depth = 11 Train Score 0.9623451340902863 test Score 0.9252318758281279\n", "depth = 15 Train Score 0.9634267621927706 test Score 0.9231288356496615\n", "depth = 20 Train Score 0.9631629153051491 test Score 0.9235051024711141\n", "depth = 35 Train Score 0.9634333127085721 test Score 0.9235601652753184\n", "depth = 50 Train Score 0.9634333127085721 test Score 0.9235601652753184\n", "depth = 70 Train Score 0.9634333127085721 test Score 0.9235601652753184\n", "depth = 130 Train Score 0.9634333127085721 test Score 0.9235601652753184\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "MrG1Lfl3Hglq", "colab_type": "code", "outputId": "7b6e3c97-8d66-455d-cd79-213f824719cc", "colab": {} }, "source": [ "from sklearn.metrics import f1_score\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.metrics import f1_score\n", "from sklearn.model_selection import RandomizedSearchCV\n", "from scipy.stats import randint as sp_randint\n", "from scipy.stats import uniform\n", "\n", "param_dist = {\"n_estimators\":sp_randint(105,125),\n", " \"max_depth\": sp_randint(10,15),\n", " \"min_samples_split\": sp_randint(110,190),\n", " \"min_samples_leaf\": sp_randint(25,65)}\n", "\n", "clf = RandomForestClassifier(random_state=25,n_jobs=-1)\n", "\n", "rf_random = RandomizedSearchCV(clf, param_distributions=param_dist,\n", " n_iter=5,cv=10,scoring='f1',random_state=25)\n", "\n", "rf_random.fit(df_final_train,y_train)\n", "print('mean test scores',rf_random.cv_results_['mean_test_score'])\n", "print('mean train scores',rf_random.cv_results_['mean_train_score'])" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "mean test scores [0.96225043 0.96215493 0.96057081 0.96194015 0.96330005]\n", "mean train scores [0.96294922 0.96266735 0.96115674 0.96263457 0.96430539]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "hme3j_diHglu", "colab_type": "code", "outputId": "581ccc02-7770-4a94-d003-257af4e81570", "colab": {} }, "source": [ "print(rf_random.best_estimator_)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=14, max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=28, min_samples_split=111,\n", " min_weight_fraction_leaf=0.0, n_estimators=121, n_jobs=-1,\n", " oob_score=False, random_state=25, verbose=0, warm_start=False)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "qu4KIEweHglx", "colab_type": "code", "colab": {} }, "source": [ "clf = RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=14, max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=28, min_samples_split=111,\n", " min_weight_fraction_leaf=0.0, n_estimators=121, n_jobs=-1,\n", " oob_score=False, random_state=25, verbose=0, warm_start=False)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Dax83GfLHgl1", "colab_type": "code", "colab": {} }, "source": [ "clf.fit(df_final_train,y_train)\n", "y_train_pred = clf.predict(df_final_train)\n", "y_test_pred = clf.predict(df_final_test)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "PTtAp1iTHgl4", "colab_type": "code", "outputId": "e2e3d725-3c4d-4374-d303-8f294b570977", "colab": {} }, "source": [ "from sklearn.metrics import f1_score\n", "print('Train f1 score',f1_score(y_train,y_train_pred))\n", "print('Test f1 score',f1_score(y_test,y_test_pred))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Train f1 score 0.9652533106548414\n", "Test f1 score 0.9241678239279553\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "5XfUkZYQHgl7", "colab_type": "code", "colab": {} }, "source": [ "from sklearn.metrics import confusion_matrix\n", "def plot_confusion_matrix(test_y, predict_y):\n", " C = confusion_matrix(test_y, predict_y)\n", " \n", " A =(((C.T)/(C.sum(axis=1))).T)\n", " \n", " B =(C/C.sum(axis=0))\n", " plt.figure(figsize=(20,4))\n", " \n", " labels = [0,1]\n", " # representing A in heatmap format\n", " cmap=sns.light_palette(\"blue\")\n", " plt.subplot(1, 3, 1)\n", " sns.heatmap(C, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n", " plt.xlabel('Predicted Class')\n", " plt.ylabel('Original Class')\n", " plt.title(\"Confusion matrix\")\n", " \n", " plt.subplot(1, 3, 2)\n", " sns.heatmap(B, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n", " plt.xlabel('Predicted Class')\n", " plt.ylabel('Original Class')\n", " plt.title(\"Precision matrix\")\n", " \n", " plt.subplot(1, 3, 3)\n", " # representing B in heatmap format\n", " sns.heatmap(A, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n", " plt.xlabel('Predicted Class')\n", " plt.ylabel('Original Class')\n", " plt.title(\"Recall matrix\")\n", " \n", " plt.show()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "s6t11dhTHgl-", "colab_type": "code", "outputId": "189de3be-1c99-4653-f56f-12b18b0f4db7", "colab": {} }, "source": [ "print('Train confusion_matrix')\n", "plot_confusion_matrix(y_train,y_train_pred)\n", "print('Test confusion_matrix')\n", "plot_confusion_matrix(y_test,y_test_pred)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Train confusion_matrix\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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IiI5aCSPiEgRufs17t7I3ZsSJk6eTZgzp7qZtYiqtSd7UuapwIBouScw2909Ku8dvX2rGdAcmAfMB5qbWTMzqxSdY2oKLk1ERERERMohjeQRESlB0Vw75wPPmNnPwAbgvGjzQ8CjZraEMIKnd7TPIjN7ElgM7AQucvddAGZ2MTADyADGufuilF6QiIiIiIiUGxZ+RC57zDTvhATLlpV2C6QsadAg7jw1hbYnfYt78c4lyaU4IVkUJySW4oRkUZyQLIoTEivd44Qe1xIRERERERERSQNK8oiIiIiIiIiIpAEleURERERERERE0oCSPCIiIiIiIiIiaUBJHhERERERERGRNKAkj4iIiIiIiIhIGlCSR0REREREREQkDSjJIyIiIiIiIiKSBpTkERERERERERFJA0ryiIiIiIiIiIikASV5RERERERERETSgJI8IiIiIiIiIiJpQEkeEREREREREZE0oCSPiIiIiIiIiEgaUJJHRERERERERCQNKMkjIiIiIiIiIpIGlOQREREREREREUkDSvKIiIiIiIiIiKQBJXlERERERERERNKAkjwiIiIiIiIiImlASR4RERERERERkTSgJI+IiIiIiIiISBpQkkdEREREREREJA0oySMiIiIiIiIikgaU5BERERERERERSQNK8oiIiIiIiIiIpAEleURERERERERE0kDF0m6AiEgqHX10abdARETKMsUJERFJpKzHCY3kEREpJjPLMLP3zezFaL2Zmb1rZl+a2RNmVikq3zdaXxJtbxpzjGui8s/NrGNMeaeobImZXZ3qaxMRkeIpqB83s8Zm9moURz4yszNKo50iIpJ6yYgRSvKIiBTfpcCnMeu3AXe7e3NgAzA4Kh8MbHD3Q4G7o3qYWUugN3AE0AkYFSWOMoD7gc5AS6BPVFdERMqBQvbj/wCedPdWhFgwKrWtFBGR0pCsGKEkj4hIMZhZI6ALMDZaN+A04Omoynige7TcLVon2n56VL8bMNndf3L3r4ElQJvos8Tdv3L37cDkqK6IiJQPhenHHagWLVcHlqewfSIiUnqSEiOU5BERyYeZDTWzBTGfoXGqjQSuAn6O1msD37v7zmg9E2gYLTcElgJE2zdG9XeX59onv3IRESkDChEnCtOP3wD0M7NMYBrwl6Q1WEREUqqAOJGUGKGJl0VE8uHuY4Ax+W03szOB1e7+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K5KiatMGliyBr7+GHTtg8uScN+EQbupnRf/zePXVvNsBevaE6dPDzTyAe4gHEH5wWL48edcgIiUvGXECQvLop59+ZNeunfz004/Url0vNRckRVZScSK36dOzl+fNg0aNSq7NkjpK8pSwlSszWbLkUw4//BgAxo69m7PPbsd///sCgwaFZ2969OjLd9/9j549f8N553Xl4ov/ToUKFVi7dhX16tXffay6dQ/c/YhXrPXr1+3ufGvXrseGDesB8uxfp0591q5dVejjStGNHAlXXQU//5x3W48eoYPdvDmst2gRRt28+iosWADnnpt3n9694fHHs9cPPBBWrgzLK1dCvTixt2HD7MQRQGZmKGvYMCznLi/scUUkNQrTV4c6BwGQkVGRAw6oyqZNG9i27Qcef/w/DBhwcY76K1YspUaNWtx22zWcf3537rjj72zb9kPyL0aKJb/+PNaHH8If/hCWe/QIyZtatXLWyR1LhgyBadPCsc89F269NTntF5HkSEacqFv3QM4++zzOOee3/OEPv2b//Q/g+ON/nfyLkWIpbpyoXBnmzw9PG8RL/lSsGOLEyy8np/2SXClP8pjZoATbhprZAjNbMHFi3mdMy7pt27YyfPglXHTRtbtH8QwZchlPPjmH3/3uLJ57biIA8+e/yaGHHs7TT7/B2LHPc++9I9i6dcvuLHusrNE/hRFvf7BiH1cS69IFVq8O8/HE06dPzpvsihXD41hduoTRN9ddFx6hyrLPPuFRrqee2rN2xPtP6p5/uUhZlc5xIpHC9NX59fOPPPJvevYcQJUq++fYsmvXTr74YjFdu/bhP/95nsqVq/D44+n175aOCtNvX3llmN9t4cLwNzMzzLGQpX79MNx+xozssssugzPOgIMPhocfhrvuSk77RZJNcSJbcePE5s0beeutWTz++CyefvoNfvxxG6+8MiXOMaQsKW6caNwYjj8+PGEwciQcckjOfUeNCvOLvvlmctovyVUaUyndCDwcb4O7jwHGACxfTrn6Grpz5w6GD7+E3/3uLE45pUOe7aeffibXXPMnBg26hOnTn+WPfxyKmdGwYRMOOqgR3333FXXr1ueDD+bt3mfNmlUce2ybPMeqVas269atpnbteqxbt5qaNUNKtm7d+qxevXJ3vbVrV1KnTr1CH1eK5uSTQ1LmjDNCVrxaNXj00ZD9rlUrDKfs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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Test confusion_matrix\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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7i3dvSUhUdPR3ZcBk4C+0VO2jgTWunsuMBU40czqRhMunwhMjZatN7Mjo331BSam/UBFRERERKRC0O1aIiIldxRwLvC5mX0alV3r7lOKqD8FOAnIBn4Czgdw9x/M7Bbgo6jeze7+Q/R+IDAO2BN4LXqJiIiIiIjswMIDW8ofM807IcGSJWXdAilPGjeOO09N0namb3HftX1JailOSD7FCYmlOCH5FCckn+KExMr0OKHbtUREREREREREMoCSPCIiIiIiIiIiGUBJHhERERERERGRDKAkj4iIiIiIiIhIBlCSR0REREREREQkAyjJIyIiIiIiIiKSAZTkERERERERERHJAEryiIiIiIiIiIhkACV5REREREREREQygJI8IiIiIiIiIiIZQEkeEREREREREZEMoCSPiIiIiIiIiEgGUJJHRERERERERCQDKMkjIiIiIiIiIpIBlOQREREREREREckASvKIiIiIiIiIiGQAJXlERERERERERDKAkjwiIiIiIiIiIhlASR4RERERERERkQygJI+IiIiIiIiISAZQkkdEREREREREJAMoySMiIiIiIiIikgGU5BERERERERERyQBK8oiIiIiIiIiIZAAleUREREREREREMoCSPCIiIiIiIiIiGUBJHhERERERERGRDFC5rBsgIpJO7duXdQtERKQ8K+04YWbdgZFAFjDa3e8stLw58ARQJ6oz1N2nlG4rRESktJRmnEhFjNBIHhGREjKzZmb2lpnNN7O5ZvaXqHxvM3vTzL6O/taNys3M7jOzbDP7zMw6xmzrvKj+12Z2Xkx5JzP7PFrnPjOz9B+piIiUhJllAQ8CPYB2QG8za1eo2l+B5929A9ALeCi9rRQRkbKQqhihJI+ISMltAa5w97bAkcCgqGMeCkxz9zbAtOgzhA68TfQaADwMISkE3AgcAXQGbsxPDEV1BsSs1z0NxyUiIqWjM5Dt7t+4+yZgAtCzUB0HakXvawNL09g+EREpOymJEUryiIiUkLvnuvvs6P16YD7QhNA5PxFVewI4NXrfExjvwftAHTPbF+gGvOnuP7j7auBNoHu0rJa7v+fuDoyP2ZaIiJQxMxtgZrNiXgMKVWkCLI75nBOVxboJ6GNmOcAU4JKUNVhERMqTlMQIJXlERIqQxMl7bN2WQAfgA2Afd8+FkAgCGkbViurIE5XnxCkXEZFy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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "61TF-VLeHgmD", "colab_type": "code", "outputId": "795f1b39-61c7-470f-e2d0-1fe6dc7ac5fd", "colab": {} }, "source": [ "from sklearn.metrics import roc_curve, auc\n", "fpr,tpr,ths = roc_curve(y_test,y_test_pred)\n", "auc_sc = auc(fpr, tpr)\n", "plt.plot(fpr, tpr, color='navy',label='ROC curve (area = %0.2f)' % auc_sc)\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('Receiver operating characteristic with test data')\n", "plt.legend()\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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5ec//3n84lRXV8evfvWrBts98sgjueuuu+LTseqj3XffnSVLlsSrh9IxM0466SSuuOIKhg4dGs+VJ293wYIFDd47dOhQli1bFp9ev349vXv3BmDKlClp93nUUUdx3333xds8PvzwQ1atWsX69evZddddKSkp4c0332TOnDkp33/77bezYMGCBn/JAQHg+OOPZ+rUqWzevJl3332XpUuXMm7cuAbrrVq1CoDNmzfzi1/8ggsuuACAZcuWxUsb//rXv9iyZUv8M3r77bfrVZ81l1zekjoOWObuy919CzAVOCFpnROAP0avHwEOtxw97aOSghS6MWPGMGrUKKZOnUpxcTHTp0/nxhtvZPDgwey3334ccMABXHzxxQCMHDmSO+64g9NOO42hQ4cyYsQIPv744wbbvPbaa1m7di0jRoxg1KhR8Rz0zTffzLHHHsthhx3GHnvskTFdEydO5M9//nO86gjgzjvvZN68eYwcOZJhw4Zx9913N3jfkCFDWL9+PRs2bADge9/7HldffTUHHXQQtbW1afd35JFHcvrppzN+/Hj2228/TjnlFDZs2MCECRPYunUrI0eO5LrrrqvXFrC9hg8fzqmnnsqwYcOYMGECkydPjledHXPMMfHqn1tvvZWhQ4cycuRIjjvuOA477DAAHn30UUaMGMHo0aO56KKLeOihh+KlsGeffZavfOUrO5zGZJaqzqtZNmx2CjDB3c+Lps8EPu/uFyes80a0zspo+p1ondVJ2zofOB+gb9++Y99///0mp2f69De5//6FTJ16Mh06FG3vYYlkbcmSJQwdOrSlk9Gm3X777ZSWlu70zyrkwsEHH8z06dNTtuOkOvfM7FV3L29su7ksKaTK8SdHoGzWwd3vcfdydy9PbFhqihNOGMKjj56qgCDShlx44YV06tSppZORdxUVFVxxxRVZNew3VS6Dwkpgr4TpPkByU3l8HTNrD3QHPs1hmkSkDencuTNnnnlmSycj73r16sWJJ56Yk23nMii8Agwys/5m1hGYBMxIWmcGcFb0+hTgGc9VfZZIC9DpLPm2o+dczoKCu28FLgZmAkuAh919kZldb2bHR6v9HuhpZsuAK4CGzfcirVTnzp1Zs2aNAoPkjUfjKXTu3Hm7t5GzhuZcKS8v93nz5rV0MkQapZHXpCWkG3kt24bmgnmiWSTfOnTosN2jX4m0lILp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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "scrolled": false, "id": "HEZ7uvN6HgmK", "colab_type": "code", "outputId": "6f762256-54fc-4e2f-865b-22342033eb2c", "colab": {} }, "source": [ "features = df_final_train.columns\n", "importances = clf.feature_importances_\n", "indices = (np.argsort(importances))[-25:]\n", "plt.figure(figsize=(10,12))\n", "plt.title('Feature Importances')\n", "plt.barh(range(len(indices)), importances[indices], color='r', align='center')\n", "plt.yticks(range(len(indices)), [features[i] for i in indices])\n", "plt.xlabel('Relative Importance')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "xdHW32hcHgmN", "colab_type": "text" }, "source": [ "# Assignments:\n", "\n", "1. Add another feature called Preferential Attachment with followers and followees data of vertex. you can check about Preferential Attachment in below link\n", "http://be.amazd.com/link-prediction/
\n", "2. Add feature called svd_dot. you can calculate svd_dot as Dot product between sourse node svd and destination node svd features. you can read about this in below pdf \n", "https://storage.googleapis.com/kaggle-forum-message-attachments/2594/supervised_link_prediction.pdf
\n", "3. Tune hyperparameters for XG boost with all these features and check the error metric." ] }, { "cell_type": "code", "metadata": { "id": "of-rXv1pOG7t", "colab_type": "code", "outputId": "ed77749e-d1c0-4d25-b92a-057ada65dd9e", "colab": { "base_uri": "https://localhost:8080/", "height": 254 } }, "source": [ "df_final_train.columns" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['jaccard_followers', 'jaccard_followees', 'cosine_followers',\n", " 'cosine_followees', 'num_followers_s', 'num_followees_s',\n", " 'num_followees_d', 'inter_followers', 'inter_followees', 'adar_index',\n", " 'follows_back', 'same_comp', 'shortest_path', 'weight_in', 'weight_out',\n", " 'weight_f1', 'weight_f2', 'weight_f3', 'weight_f4', 'page_rank_s',\n", " 'page_rank_d', 'katz_s', 'katz_d', 'hubs_s', 'hubs_d', 'authorities_s',\n", " 'authorities_d', 'svd_u_s_1', 'svd_u_s_2', 'svd_u_s_3', 'svd_u_s_4',\n", " 'svd_u_s_5', 'svd_u_s_6', 'svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3',\n", " 'svd_u_d_4', 'svd_u_d_5', 'svd_u_d_6', 'svd_v_s_1', 'svd_v_s_2',\n", " 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6', 'svd_v_d_1',\n", " 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5', 'svd_v_d_6',\n", " 'pref_att', 'svd_dot_u', 'svd_dot_v'],\n", " dtype='object')" ] }, "metadata": { "tags": [] }, "execution_count": 45 } ] }, { "cell_type": "code", "metadata": { "id": "vwje49qIONFo", "colab_type": "code", "outputId": "1b30a831-44ae-43d5-93ba-dc7b312ac55d", "colab": { "base_uri": "https://localhost:8080/", "height": 254 } }, "source": [ "df_final_test.columns" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['jaccard_followers', 'jaccard_followees', 'cosine_followers',\n", " 'cosine_followees', 'num_followers_s', 'num_followees_s',\n", " 'num_followees_d', 'inter_followers', 'inter_followees', 'adar_index',\n", " 'follows_back', 'same_comp', 'shortest_path', 'weight_in', 'weight_out',\n", " 'weight_f1', 'weight_f2', 'weight_f3', 'weight_f4', 'page_rank_s',\n", " 'page_rank_d', 'katz_s', 'katz_d', 'hubs_s', 'hubs_d', 'authorities_s',\n", " 'authorities_d', 'svd_u_s_1', 'svd_u_s_2', 'svd_u_s_3', 'svd_u_s_4',\n", " 'svd_u_s_5', 'svd_u_s_6', 'svd_u_d_1', 'svd_u_d_2', 'svd_u_d_3',\n", " 'svd_u_d_4', 'svd_u_d_5', 'svd_u_d_6', 'svd_v_s_1', 'svd_v_s_2',\n", " 'svd_v_s_3', 'svd_v_s_4', 'svd_v_s_5', 'svd_v_s_6', 'svd_v_d_1',\n", " 'svd_v_d_2', 'svd_v_d_3', 'svd_v_d_4', 'svd_v_d_5', 'svd_v_d_6',\n", " 'pref_att', 'svd_dot_u', 'svd_dot_v'],\n", " dtype='object')" ] }, "metadata": { "tags": [] }, "execution_count": 46 } ] }, { "cell_type": "code", "metadata": { "id": "yfbJkIYSANiN", "colab_type": "code", "colab": {} }, "source": [ "from sklearn.metrics import f1_score\n", "from sklearn.metrics import f1_score\n", "from sklearn.model_selection import RandomizedSearchCV\n", "from scipy.stats import randint as sp_randint\n", "from scipy.stats import uniform\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "BRDpIo74mItS", "colab_type": "text" }, "source": [ "### Applying XGBOOST " ] }, { "cell_type": "code", "metadata": { "id": "I4r8zv41mItT", "colab_type": "code", "outputId": "484ad5a1-7e7a-482a-f65a-1171d96e20f2", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "import xgboost as xgb\n", "clf = xgb.XGBClassifier()\n", "param_dist = {\"n_estimators\":sp_randint(105,125),\n", " \"max_depth\": sp_randint(2,10)\n", " }\n", "model = RandomizedSearchCV(clf, param_distributions=param_dist,n_jobs=4,\n", " n_iter=5,cv=3,scoring='f1',random_state=25,return_train_score = True)\n", "\n", "\n", "model.fit(df_final_train,y_train)\n", "print('mean test scores',model.cv_results_['mean_test_score'])\n", "print('mean train scores',model.cv_results_['mean_train_score'])\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "mean test scores [0.97733454 0.97857076 0.97472341 0.97688816 0.97343447]\n", "mean train scores [0.98205251 0.98481463 0.97567005 0.98081855 0.97401205]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "outputId": "e68f7def-0026-4f16-d6b6-485dbdb69a20", "id": "Usd_mDMqatuM", "colab": { "base_uri": "https://localhost:8080/", "height": 545 } }, "source": [ "model.cv_results_" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "{'mean_fit_time': array([87.6152962 , 97.08580335, 57.57064112, 78.61985683, 38.2883834 ]),\n", " 'mean_score_time': array([0.31834634, 0.33429201, 0.22994995, 0.27532268, 0.1514922 ]),\n", " 'mean_test_score': array([0.97733454, 0.97857076, 0.97472341, 0.97688816, 0.97343447]),\n", " 'mean_train_score': array([0.98205251, 0.98481463, 0.97567005, 0.98081855, 0.97401205]),\n", " 'param_max_depth': masked_array(data=[6, 7, 4, 6, 3],\n", " mask=[False, False, False, False, False],\n", " fill_value='?',\n", " dtype=object),\n", " 'param_n_estimators': masked_array(data=[120, 117, 113, 109, 110],\n", " mask=[False, False, False, False, False],\n", " fill_value='?',\n", " dtype=object),\n", " 'params': [{'max_depth': 6, 'n_estimators': 120},\n", " {'max_depth': 7, 'n_estimators': 117},\n", " {'max_depth': 4, 'n_estimators': 113},\n", " {'max_depth': 6, 'n_estimators': 109},\n", " {'max_depth': 3, 'n_estimators': 110}],\n", " 'rank_test_score': array([2, 1, 4, 3, 5], dtype=int32),\n", " 'split0_test_score': array([0.97818127, 0.97974362, 0.97558309, 0.97771048, 0.97411593]),\n", " 'split0_train_score': array([0.98147139, 0.98458283, 0.97527844, 0.98000182, 0.97391066]),\n", " 'split1_test_score': array([0.97684006, 0.97820427, 0.97482615, 0.97637891, 0.97332604]),\n", " 'split1_train_score': array([0.98247844, 0.98500023, 0.97593688, 0.98125379, 0.9741005 ]),\n", " 'split2_test_score': array([0.97698225, 0.97776433, 0.97376093, 0.97657505, 0.97286139]),\n", " 'split2_train_score': array([0.9822077 , 0.98486085, 0.97579483, 0.98120005, 0.97402499]),\n", " 'std_fit_time': array([0.27311092, 0.12469321, 0.2664486 , 0.44076381, 4.2638462 ]),\n", " 'std_score_time': array([0.00236454, 0.00509446, 0.00642514, 0.00188464, 0.02783407]),\n", " 'std_test_score': array([0.00060155, 0.00084858, 0.00074743, 0.00058697, 0.00051787]),\n", " 'std_train_score': array([4.25518989e-04, 1.73506527e-04, 2.82917577e-04, 5.77933735e-04,\n", " 7.80387488e-05])}" ] }, "metadata": { "tags": [] }, "execution_count": 58 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "outputId": "0d4e1115-f466-4d5a-be82-05025d707fea", "id": "I2ZdRmokao3N", "colab": { "base_uri": "https://localhost:8080/", "height": 477 } }, "source": [ "\n", "results = pd.DataFrame.from_dict(model.cv_results_)\n", "results = results.sort_values(['param_max_depth','param_n_estimators'])\n", "\n", "train_auc =results['mean_train_score']\n", "train_auc_std= results['std_train_score']\n", "cv_auc = results['mean_test_score'] \n", "cv_auc_std= results['std_test_score']\n", "\n", "results_score_sorted = results.sort_values(by=['mean_test_score'],ascending=False)\n", "results_score_sorted.head()" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mean_fit_timestd_fit_timemean_score_timestd_score_timeparam_max_depthparam_n_estimatorsparamssplit0_test_scoresplit1_test_scoresplit2_test_scoremean_test_scorestd_test_scorerank_test_scoresplit0_train_scoresplit1_train_scoresplit2_train_scoremean_train_scorestd_train_score
197.0858030.1246930.3342920.0050947117{'max_depth': 7, 'n_estimators': 117}0.9797440.9782040.9777640.9785710.00084910.9845830.9850000.9848610.9848150.000174
087.6152960.2731110.3183460.0023656120{'max_depth': 6, 'n_estimators': 120}0.9781810.9768400.9769820.9773350.00060220.9814710.9824780.9822080.9820530.000426
378.6198570.4407640.2753230.0018856109{'max_depth': 6, 'n_estimators': 109}0.9777100.9763790.9765750.9768880.00058730.9800020.9812540.9812000.9808190.000578
257.5706410.2664490.2299500.0064254113{'max_depth': 4, 'n_estimators': 113}0.9755830.9748260.9737610.9747230.00074740.9752780.9759370.9757950.9756700.000283
438.2883834.2638460.1514920.0278343110{'max_depth': 3, 'n_estimators': 110}0.9741160.9733260.9728610.9734340.00051850.9739110.9741010.9740250.9740120.000078
\n", "
" ], "text/plain": [ " mean_fit_time std_fit_time ... mean_train_score std_train_score\n", "1 97.085803 0.124693 ... 0.984815 0.000174\n", "0 87.615296 0.273111 ... 0.982053 0.000426\n", "3 78.619857 0.440764 ... 0.980819 0.000578\n", "2 57.570641 0.266449 ... 0.975670 0.000283\n", "4 38.288383 4.263846 ... 0.974012 0.000078\n", "\n", "[5 rows x 18 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 59 } ] }, { "cell_type": "code", "metadata": { "id": "JUAMo-JkmIte", "colab_type": "code", "outputId": "5edaa1ec-a6e9-4e60-fe22-54b2bb911db9", "colab": { "base_uri": "https://localhost:8080/", "height": 141 } }, "source": [ "print(model.best_estimator_)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", " colsample_bynode=1, colsample_bytree=1, gamma=0,\n", " learning_rate=0.1, max_delta_step=0, max_depth=7,\n", " min_child_weight=1, missing=None, n_estimators=117, n_jobs=1,\n", " nthread=None, objective='binary:logistic', random_state=0,\n", " reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n", " silent=None, subsample=1, verbosity=1)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "6SC5mEHpmIth", "colab_type": "code", "colab": {} }, "source": [ "clf=xgb.XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", " colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n", " max_depth=7, min_child_weight=1, missing=None, n_estimators=117,\n", " n_jobs=4, nthread=None, objective='binary:logistic', random_state=0,\n", " reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n", " silent=True, subsample=1)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "CoQ_LoqcmItk", "colab_type": "code", "colab": {} }, "source": [ "clf.fit(df_final_train,y_train)\n", "y_train_pred = clf.predict(df_final_train)\n", "y_test_pred = clf.predict(df_final_test)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "AooBuRvYmItm", "colab_type": "code", "outputId": "3e05ab18-b7a8-408f-b4ef-ef8e02d605be", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "from sklearn.metrics import f1_score\n", "print('Train f1 score',f1_score(y_train,y_train_pred))\n", "print('Test f1 score',f1_score(y_test,y_test_pred))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Train f1 score 0.9838631693460654\n", "Test f1 score 0.9303379351232319\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "jvM6goqjmItq", "colab_type": "code", "outputId": "afc72f4b-b51d-45f9-abbc-1457dbc47f18", "colab": { "base_uri": "https://localhost:8080/", "height": 607 } }, "source": [ "print('Train confusion_matrix')\n", "plot_confusion_matrix(y_train,y_train_pred)\n", "print('Test confusion_matrix')\n", "plot_confusion_matrix(y_test,y_test_pred)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Train confusion_matrix\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\nDxo08zDITTfNI3pefRV++cv6pE+dPn3gb39ruA1duuRj1hk1KpeVKx81avZySS2jsX589jorAdCu\nXXsWX3wJJk4cP1OdoUMH061bdzp06ADAVVedz557HsCiiy5a4TNQc2ms3y718svw05/m97vtlpP2\nyyyTy3v3ziN1ll0Wttkm35Ut1b59jksPzD5gWFIrZpxQnfmJE6Vm/W2x5prw85/Dc8/l3ylrrVWZ\n9quyqp7kiYj9y2wbEBHDI2L4DTfMPse0Lbrhhotp164d//u/Ozep/tlnX8k//vEEU6dO4cUXn6lw\n69QcdtwRxo7Na+yUOvLIPGx+lVXg6qvhL3/J5XvtBddck8t32AGuvx6iGLQ1bBj84Ad5fZ7jj4dF\nSgZ8Lbww7Lwz3HprVU5LajELWpxoTu+88xaXXXYORx2V13wbOfLffPDBf/mf/9muhVum5nb00bDV\nVjn2bLVVvsCfPj2P1hw0CJ56Kl+4P/307DcMLrooj/Z54omWabs0v4wT8844seBoLE7UWXHFPH13\n8OD6skUWga++yr9FLr8crrqq+u3W/GuJkTynNLYhpXRZSmnjlNLGe+89oJptqogHHridp59+lBNO\nOIeI2adeNaZDh0XYcsttZxt+CdC58wqMHTtmxudPPhlD584rzFb+8ccfzSivmyqWy8fMGKqp5rHl\nljn58s47eahkjx5w7715/uuwYbnO3/8OW2yR3/fvn9fkAXjmmTw1q3PnmY/5+usweXJO+NTZfvvc\nSY8d23A7Ro+e+W5t1665rFx56VD9unKpFVhg4kSpxvrx2et8COSpvZMnT6JTp6WL+mM48cTDOO64\ns+jSZVUAXnvtRd5441/06dODX/3qF4wa9S5HHLFPlc5I86qxfrvUhx/Cz36W19854YRcNiEvxccZ\nZ+S1Fnr2zDcR3nyzfr8TT4TlloOjjqrsOUgVZpzAOLEgm984AXlh/jvugGnT6stGjYLbb8/v77gD\n1l23Mu1XZVUkyRMRrzTyehVYIDIMw4YN5eabr+CPf7yYRRftOMf6X375OePG5V/v06dP45lnHmXV\nVb89W70ttujBgw/eSUqJESNeYrHFlmDZZZdnk01+xPDhTzBp0gQmTZrA8OFPsMkmP2LZZZdnscUW\nZ8SIl0gp8eCDd7Lllts2+/kuyH73u9zJrrFGHvI4ZEie87rkknkxY4DttqtflPm//81r60Be1GzR\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Test confusion_matrix\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\n+bbzzrn9pJPg/vth7bXzz7rJfODAOX2HDs2Pl9Q6Zs2axYUXnsk551zJ1Vffyf33/5U33hg3V5+e\nPVfmxBPPZvvtvzNXe0Pz/6xZM/n97/+X88+/hquuuoM11vgKt912fTVflpphscXg4ovzHN2/P+y3\nX86VUg3lwte/DltvnTNm/fXha1+b82VCQxkjqX1YmJxYfPEunHzyuVx99Z2ce+6VXHzxL5k2bSoA\nl112HvvsczDXX38fSy3VnZEjb63aa1LzNCUnfvYzuPnm/CXwoEFwySW5fZ99YPHFc05suin813/B\nqqs2bZ9qHyzytIDll1+RtddeD4AllliSVVZZg/fee5fx499gww2/BsBmm23NI4/cC0BE8PnnnzFr\n1kz+85/P6dSpE0ssseRc+3zmmX/Qq1dfVlpp/kM2HnvsfnbccU8igv79N2L69Km8//5knnrqUTbd\ndGu6d1+GpZZamk033Zonn/w7778/menTp9G//0ZEBDvuuCePPnp/hf8qi45Jk+DZZ/P9adPyt6O9\ne+cq+D//OX///v1zVR1gyhT46CPYbLP8+6GHznmjnhK8//78j3nwQdhjj/n3u9JK0L07PPFE/n34\ncNhzz3x/jz3gmnyAGddcM3f78OH5/hNP5CN8VlqpeX8HSQvnlVdeoFevVenVqy+dOnVmwIBdeeyx\nuefqlVbqw5prrsNii80d3w3N/yklUkp89tlnpJT49NNpLL/8itV8WWqGzTeHcePg3/+GGTPgppvm\nn/cbyoWUoEsX6Nw5v4nv1AnefTdvayhjJLUPC5MTffuuTp8+qwHQo0dPlllmOT766ANSSjz77Ci2\n3XYnAHbaaS8/J7QDTcmJlPJnA4Cll4Z33pnT3q0bdOgAXbvCF1/A1KlN26faB4s8LWzSpPGMG/cy\n6667Iaut1u/Lifehh+5m8uSJAGy77U506dKV731vGwYN+hb77nso3bsvM9d+Hnjgzvkq8HXee+9d\nVlxxzifxHj1W4r333p2vfYUVen7ZvsIKpe25v1reqqvmU57qCi31ef552H33PLGutlquoPftmydf\ngLPOgqefzpX3FVec85i6w+r32itP2MstN/d+e/eG8ePn/D5+/JzD93v2zMUoyD979pzzmLffrv8x\nkqqroTl8YR7bsWMnjj32dIYM2Y299/4Gb775L3bZZe8WH7taVlPm5oZyYdSoXPSZODHf7rknf+lQ\nLmMktQ8LkxOlXn75BWbOnEGvXqswdeqHLLlkdzp06Fjs088J7UFTcuL002H//XO/kSPhhz/M7bfe\nCtOn54x46618ZOiHH/q5oJZUvcgTEYeU2TY0IkZHxOjrrpv/HNO27rPPpnPqqUdz5JGn0K3bkpxw\nwv9y++03MHTod/nss+l06tQZyBPrYostxq23/p0bbrifW24ZxjvvzPk/asaML3j88QfYdtudW+ul\nqBm6dYM//QmOOQY++aThfsOG5Ulz9Gi44AJ4/PG8bk/HjrnY8/jjufDzj3/kSRfgxz/Oh9s/80z+\nOX58fkxzuSST2rJazolqmzlzBrfffiOXX/4Xbr3176yxxle44YbLWntYagEN5cKaa+bD6/v0yW/O\nBwyAbbYpnzFSe2NONN/770/m7LN/woknnj3f0T6qLfvtl9fe6dsXdtkFrr02LxGx+eY5L3r1gtVX\nz8tOrL56a49WLaljKzznGcAf6tuQUrocuBzgnXdoVx9DZ86cwamnHs23v70b3/zmjgCsssqa/PrX\nwwB4++1/M2rUQ0BeBHPzzb9Bx46dWHbZ5VlvvU149dUX6dWrL5DX3Fl77fVYbrke9T5Xjx49mTx5\n0pe/v/feJHr06EmPHj157rknv2yfMuVdNtpoc3r06MmUKZNK2nN/tZyOHXOB5/rr4bbbyvedNQuO\nO27O7489lk/rev/9XFX/859z+y23wJAh+f7EifC97+X73brl+x9/PPd+J0zIb+rr9OmT2yAfqr/S\nSvkonpVWymsy1D2mb9/6HyO1oprMicbMO7dPmfJuk+fqhub/ceNeBqB371UA2G67gdx4ox962rqm\nzM0N5cLhh+ejeaZPz9vuuiuv0/Poow1njNQOmRMsWE4ATJ8+jZNP/i+GDDmW/v03AqB792WZNm0q\ns2bNpEOHjn5OaCeakhNDhsxZn3PUqHwqb48e8IMfwN1353VFp0zJn0U22ywfxePngtpQkfJtRLzQ\nwO1FoOZmjZQSv/rVT1l11TXYd985Xyx8+GE+2X327Nlce+2l7LbbICAviPbss/l8ns8++5SXX36e\nVVZZ48vHPfDAnQwYsGuDz7fVVgO4996/kFJi7Njn6NZtKZZffkW+9rVtGD36UT755GM++eRjRo9+\nlK99bRuWX35FunVbkrFjnyOlxL33/oWtt96+En+KRdZVV+W1eM4/v/G+XbvCEkvk+9/+dp5gX86f\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "adHNvZhQmIvB", "colab_type": "code", "outputId": "a58ba9f9-605d-409d-aba8-e563b4240b86", "colab": { "base_uri": "https://localhost:8080/", "height": 294 } }, "source": [ "from sklearn.metrics import roc_curve, auc\n", "fpr,tpr,ths = roc_curve(y_test,y_test_pred)\n", "auc_sc = auc(fpr, tpr)\n", "plt.plot(fpr, tpr, color='navy',label='ROC curve (area = %0.2f)' % auc_sc)\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('Receiver operating characteristic with test data')\n", "plt.legend()\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\ntmzJs88+y/e//30ef/xxAN544w1mz55N165deeaZZ5g/fz4zZszA3Rk9ejRTp07l0EMP5b777qNr\n166sX7+e/fffn5NPPplu3brVWe/ll1/OCy+8UG+7xo4dy1VXXVVn3JIlSzjooINSwz179mTJkiV1\n5qmoqKC6upqZM2dSWVnJY489xqJFi1LTJ06cyNVXX83SpUt5+umnU+MrKyu59tprG9zfjVUySUFd\nUqUpNeaMfmtav349w4YNY8mSJQwYMICRI0du1eU/++yzTJgwITW8ww47NPier371q5SVRd/DMWPG\ncMMNN3DOOecwYcIExowZk1ru3LlzU+/57LPPWLt2bZ0z508++YTu3bunhlevXs1ZZ53F/PnzMTMS\niURq2siRI+natSsAzzzzDM888wzDhw8Hoqud+fPnc+ihh3LnnXcyceJEABYtWsT8+fPrJYXbb7+9\nsJ1TIDNjwoQJXH755WzcuJGjjjoqtX8ATjrpJE466SSmTp3Kddddx7PPPgvAjjvuyL///e+tGgvE\nnBTMbBTwS6AMuNfdb8mY3ga4H9gPWAGMcfcP44hFXVKlFLVr145Zs2axbt06jj76aMaNG8ell17K\nwIEDmTp1ap15Fy5cSIcOHejUqRODBg3i9ddfT1XNNFZ6NUdmn/n27dunXo8YMYIFCxawbNky/vKX\nv6TOfGtra5k+fTpt27bNu23py77uuus4/PDDmThxIh9++CGHHXZY1nW6O1dffTXf/OY36yzvxRdf\n5Nlnn+WVV16hvLycww47LGt//8ZcKfTo0aPOWf/ixYvp0aNHvfeOGDGCl19+GYiS1nvvvVdvnkMP\nPZSFCxeyfPlyKioqUtVkW1tsdSlmVgaMA44BBgKnmdnAjNnOBVa6e1/gduDWuOJRl1QpZeXl5dx5\n5538/Oc/p7q6mjPOOINp06alzjrXr1/PpZdeyne/+10AvvOd7/CTn/wkVTjV1tZy991311vuyJEj\nGTduXGo4WX200047MW/ePGpra1Nn3tmYGSeddBJXXHEFAwYMSJ2VH3XUUfzqV79KzTdr1qx67x0w\nYAALFixIDa9evTpV4I4fPz7nOo8++mjuu+++VJvHkiVLWLp0KatXr2aHHXagvLycf/3rX0yfPj3r\n+2+//XZmzZpV7y8zIQCMHj2aCRMmsHHjRj744APmz5/PAQccUG++pUuXArBx40ZuvfVWLrjgAgAW\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "scrolled": false, "colab_type": "code", "outputId": "239ad703-f667-498a-cedb-14bd46a0dad5", "id": "TfY1PGzgAVFK", "colab": { "base_uri": "https://localhost:8080/", "height": 730 } }, "source": [ "features = df_final_train.columns\n", "importances = clf.feature_importances_\n", "indices = (np.argsort(importances))[-25:]\n", "plt.figure(figsize=(10,12))\n", "plt.title('Feature Importances')\n", "plt.barh(range(len(indices)), importances[indices], color='r', align='center')\n", "plt.yticks(range(len(indices)), [features[i] for i in indices])\n", "plt.xlabel('Relative Importance')\n", "plt.show()" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "zGzAfQwOUK16", "colab_type": "code", "outputId": "3195eda8-311f-4449-abb7-5da4478d6e90", "colab": { "base_uri": "https://localhost:8080/", "height": 123 } }, "source": [ "# Please compare all your models using Prettytable library\n", "# http://zetcode.com/python/prettytable/\n", "\n", "from prettytable import PrettyTable\n", "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=14, max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=28, min_samples_split=111,\n", " min_weight_fraction_leaf=0.0, n_estimators=121, n_jobs=-1,\n", " oob_score=False, random_state=25, verbose=0, warm_start=False)\n", "\n", "#If you get a ModuleNotFoundError error , install prettytable using: pip3 install prettytable\n", "\n", "x = PrettyTable()\n", "x.field_names = [\"Vectorizer\", \"Model\", \"Hyper Parameter\", \"F1-Score\"]\n", "\n", "x.add_row([\"Previous Graph Based features\", \"Random Forest\", \"Max Depth:14 , Estimators : 111, min_samples_leaf:28, min_samples_split:111\", 0.92])\n", "x.add_row([\"Previous Graph Based features + Two new features\", \"XGBoost\", \"Max Depth:7 , Estimators : 117\", 0.93])\n", "\n", "print(x)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "+--------------------------------------------------+---------------+----------------------------------------------------------------------------+----------+\n", "| Vectorizer | Model | Hyper Parameter | F1-Score |\n", "+--------------------------------------------------+---------------+----------------------------------------------------------------------------+----------+\n", "| Previous Graph Based features | Random Forest | Max Depth:14 , Estimators : 111,min_samples_leaf:28, min_samples_split:111 | 0.92 |\n", "| Previous Graph Based features + Two new features | XGBoost | Max Depth:7 , Estimators : 117 | 0.93 |\n", "+--------------------------------------------------+---------------+----------------------------------------------------------------------------+----------+\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "yOJAfQ6DTLd3", "colab_type": "text" }, "source": [ "## Observations:\n", "\n", "1. XGBoost also performs very similar to Random Forest .\n", "2. Two new added features Preferntial attachment and svd_dot are also not very important as per XGBoost model , hence not much improvement in results ." ] } ] }