{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "When it comes to consuming real-time content, Twitter is the place to be; Be it sending out 'Tweets' real-time, or discovering latest online 'Trends' anywhere, or ability to begin a 'conversation' with anyone, Twitter does it all. In fact, Twitter Management wrote this in their [letter to shareholders][1] last year. \n", "[1]: http://files.shareholder.com/downloads/AMDA-2F526X/106725176x0x874459/8A4D1A1D-D184-4AFE-9AC1-F880C5EA06F1/Q415_Shareholder_Letter.pdf\n", "\n", "> _We’re focused now on what Twitter does best: live. Twitter is live: live commentary, live connections, live conversations. Whether it’s breaking news, entertainment, sports, or everyday topics, hearing about and watching a live event unfold is the fastest way to understand the power of Twitter._ \n", "\n", "> _Twitter has always been considered a “second screen” for what’s happening in the world and we believe we can become the first screen for everything that’s happening now. And by doing so, we believe we can build the planet’s largest daily connected audience. A connected audience is one that watches together, and can talk with one another in real-time. It’s what Twitter has provided for close to 10 years, and it’s what we will continue to drive in the future_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Embedded in a Twitter User's Social-graph* is a wealth of information on User's likes and interests. Unlike Facebook or LinkedIn, the magic of Twitter is in its 'Follow' structure - where any can follow any without they knowing each other. This directed social-graph, when methodologically summarized, can reveal interesting information on the most influential/central friends in the network and also help personalize/enrich one's Twitter experience by unearthing implicit-clusters in the network.\n", "\n", "_*Social-graph: [User, 1st degree Connections, and the links between]_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook, we'll look into these: \n", "1. Extract the ego-network of 'self' using Twitter API \n", "+ Identify the influential nodes using 'Page Rank' formulation \n", "+ Identify implicit clusters formed\n", "+ Recommend new friends to follow on the basis of cluster of interest " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note: This study is limited to Ego network: the focal node (\"ego\": here the self-node) and the nodes to whom ego is directly connected to (\"alters\") plus the ties, if any, among the alters. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Extract social-graph strucutre using Twitter API " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from collections import Counter, defaultdict\n", "from datetime import datetime\n", "from sklearn.decomposition import PCA\n", "\n", "import csv\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import os.path\n", "import pandas as pd\n", "import re\n", "import seaborn as sns; sns.set()\n", "import time\n", "import twitter\n", "\n", "% matplotlib inline\n", "plt.rcParams['figure.figsize'] = (10,7)\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "#print twitter.__path__ \n", "\n", "import random\n", "random.seed(1000)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Pandas data-frame print formatting\n", "from IPython.core.display import HTML\n", "css = open('style-table.css').read() + open('style-notebook.css').read()\n", "HTML(''.format(css))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "self_screen_name = 'bala_io' # Self\n", "\n", "# Keep appending data\n", "fof_filename = \"edges.csv\" # 'Alters' and their Source->Sink Edges. \n", "cache_filename = \"cache.csv\" # local cache of (TwitterId, FullName, UserName)\n", "\n", "# One-time-use files\n", "binaryMap_filename = \"binaryMap.csv\" # Directed Graph. Adjacencies as 0/1.RowFollowCol\n", "cluster_filename = \"results.csv\"" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Twitter auth. https://dev.twitter.com/oauth/overview/application-owner-access-tokens\n", "\n", "with open(\"../../passwd/credentials.txt\", \"r\") as f:\n", " reader = csv.reader(f )\n", " login_dict = {line[0]: line[1] \n", " for line in reader} \n", "\n", "api = twitter.Api(consumer_key=login_dict.get('consumer_key') ,\n", " consumer_secret=login_dict.get('consumer_secret'),\n", " access_token_key=login_dict.get('access_token_key'),\n", " access_token_secret=login_dict.get('access_token_secret'))\n", "api" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 'Self' and Friends of Self\n", "\n", "self_node = api.GetUser(screen_name = self_screen_name) \n", "self_node_id = str(self_node.id) # Twitter Id of Self\n", "\n", "friends_of_self = api.GetFriendIDs(user_id = self_node_id, \n", " screen_name = self_screen_name , \n", " stringify_ids = True)\n", "index = [self_node_id] + friends_of_self" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# GetFriendIDs() API call is rate-limited at 15 req / 15 min \n", "# https://dev.twitter.com/rest/public/rate-limiting\n", "\n", "# For each of the list of nodes, fetch the list of nodes it follows, append to file\n", "\n", "def update_FoF_File(fileName, to_fetch_list):\n", " \n", " with open(fileName, 'a') as f:\n", " apiReqCount = 0\n", " \n", " for node in to_fetch_list:\n", " friends_of_node = api.GetFriendIDs(user_id = node, stringify_ids = True) \n", " row = ','.join([str(i) for i in [node] + friends_of_node ]) + \"\\n\"\n", " f.write(row) \n", " \n", " apiReqCount += 1\n", " \n", " if (apiReqCount == 15): \n", " apiReqCount = 0\n", " \n", " print(\"Off to Sleep :)\")\n", " time.sleep(15*60 + 10) " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# parse FoF file and return list of nodes, for whom source->sink Edges are already there.\n", "\n", "def getFinishList(fileName):\n", " \n", " if not os.path.isfile(fileName):\n", " return [] \n", " with open(fileName, 'r') as f:\n", " return [ row.strip().split(',')[0] for row in f ] # 1st entry is a user" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Ego-network as adjacency-matrix\n", "# Parses FoF file in order of index, create list of adjacencies as 0 | 1\n", "# Writes to File. Adjacency-matrix in Row_follows_Column format\n", "\n", "def updateBinaryMapFile(fof_filename, binaryMap_filename, index):\n", " \n", " with open(fof_filename, \"r\") as f:\n", " stripped_f = (line.replace('\\r', '') for line in f)\n", " reader = csv.reader(stripped_f)\n", " fof_dict = {line[0]: line[1:] for line in reader \n", " if line[0] in index} # dict of node:his_followers\n", " if self_node_id not in fof_dict:\n", " fof_dict[self_node_id] = index[1:] # dict of Self\n", " \n", " bool_list = []\n", " \n", " for user in index:\n", " user_friends = set( fof_dict[user] ) \n", " bool_row = [item in user_friends for item in index] # for each, fill T/F \n", " bool_list.append(bool_row)\n", " \n", " int_nparray = np.array(bool_list) + 0 # Bool to int\n", "\n", " binaryMap_rfc = pd.DataFrame(data = int_nparray, columns= index, index = index)\n", " binaryMap_rfc.to_csv(binaryMap_filename)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# For list of Ids, fetch Profile details. If not in Offline file, make an API call\n", "# Returns ['UserName', 'FullName', 'Followers_count', 'Friends_count', 'Location', 'Created_at']\n", "# UsersLookup API 100 Ids/request\n", "\n", "def lookup_in_cache(friendsIdsList):\n", "\n", " cache, delta_cache = pd.DataFrame(), pd.DataFrame()\n", " UserNameList, namesList = [], []\n", " followers_count, friends_count = [], []\n", " location, created_at = [], []\n", " \n", " if os.path.isfile(cache_filename):\n", " cache = pd.read_csv(cache_filename, skip_blank_lines=True,\n", " dtype={'Ids':str, 'Friends_count':int, 'Followers_count':int})\n", " cache.set_index('Ids', inplace=True)\n", " to_fetch_list = list ( set (friendsIdsList) - set(cache.index) )\n", " else : \n", " to_fetch_list = friendsIdsList \n", " \n", " i = 0\n", " while (i < len(to_fetch_list) * 1./100): \n", " print(\"... Cache-Miss for \" + str(len(to_fetch_list)) + \" nodes. Updating Cache...\")\n", " low, high = i * 100, min( len(to_fetch_list), (i+1)*100 ) # UsersLookup api\n", " twitterObjectsList = api.UsersLookup(user_id = to_fetch_list[low:high]) \n", " \n", " temp = zip(*[( tempObject.screen_name, #ScreenName\n", " tempObject.name, #Name\n", " tempObject.followers_count, #Followers\n", " tempObject.friends_count, #Friends\n", " tempObject.location, #Location\n", " tempObject.created_at #CreatedAt\n", " ) for tempObject in twitterObjectsList])\n", " temp = list(temp)\n", " \n", " UserNameList += list(temp[0])\n", " namesList += list(temp[1])\n", " followers_count += list(temp[2])\n", " friends_count += list(temp[3])\n", " location += list(temp[4])\n", " created_at += list(temp[5])\n", " \n", " i = i + 1 \n", " \n", " if len(to_fetch_list) > 0:\n", " delta_cache = pd.DataFrame({'UserName':UserNameList,\n", " 'FullName':namesList,\n", " 'Ids': to_fetch_list,\n", " 'Followers':followers_count,\n", " 'Friends': friends_count,\n", " 'Location':location,\n", " 'Created':created_at})\n", " \n", " delta_cache['Created'] = delta_cache['Created'].apply(lambda x: \n", " datetime.strptime(\n", " re.sub(r\"\\+[0-9]* \", \"\",x),'%c').\n", " strftime(\"%b-%Y\"))\n", " \n", " delta_cache.set_index('Ids', inplace=True, drop = True)\n", " cache = cache.append(delta_cache)\n", " cache.to_csv(cache_filename) \n", "\n", " return cache.loc[friendsIdsList]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Display cluster-wise most-influential users, for the given clustering algo\n", "\n", "def top_nodes_in_cluster(df, cluster_algo, n_clusters):\n", " dummy_df = pd.DataFrame()\n", "\n", " for i in range(n_clusters):\n", " nodes_in_cluster = list( df [df[cluster_algo] == i ]['FullName'] ) \n", " if len(nodes_in_cluster) >= 10: # show only clusters of size > 10 \n", " col_name = str(i) + \" : \" + str(len(nodes_in_cluster)) + \" Ids\"\n", " dummy_df[col_name] = nodes_in_cluster[:10] \n", " \n", " return dummy_df " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# identify 20 friends to follow after aggregating friends followed by top 50% in list\n", "\n", "def discover_Friends_toFollow(ids_of_interest, friend_list, prop = .5, count = 20): \n", " \n", " ids_of_interest = ids_of_interest[:int(len(ids_of_interest) * prop)]\n", " \n", " if self_node_id in ids_of_interest:\n", " ids_of_interest.remove(self_node_id)\n", "\n", " print(\"'Who-To-Follow' reco after looking at %3d friends' friends:\" %(len(ids_of_interest)))\n", " \n", " with open(fof_filename) as f:\n", " reader = csv.reader(f)\n", " fof_dict = {row[0]:row[0:] for row in reader} # dict of node:her_followers\n", "\n", " friendsToFollow = []\n", " for id in ids_of_interest:\n", " friendsToFollow += list (set(fof_dict[str(id)]) - set(friend_list) ) \n", " \n", "\n", " friendsToFollow = Counter(friendsToFollow).most_common(count) \n", " tuples_list = list(zip(*friendsToFollow) )\n", " \n", " topFriendsToFollowDF = pd.DataFrame()\n", " topFriendsToFollowDF['Ids'] = list(tuples_list[0])\n", " topFriendsToFollowDF['Freq'] = list(tuples_list[1])\n", " topFriendsToFollowDF.set_index('Ids', drop = True, inplace = True) \n", " index = topFriendsToFollowDF.index\n", " \n", " topFriendsToFollowDF = topFriendsToFollowDF.merge(lookup_in_cache(index), copy = False,\n", " left_index = True, right_index = True)\n", " \n", " return topFriendsToFollowDF " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 out of 376 Friends details to be fetched\n" ] } ], "source": [ "# For the list of nodes I follow, fetch their friends-list\n", "\n", "fof_finish_list = getFinishList(fof_filename ) # Completed nodes\n", "fof_to_fetch_list = list ( set(friends_of_self) - set(fof_finish_list) ) # Pending nodes\n", "\n", "print( str(len(fof_to_fetch_list)) + \" out of \" + str(len(index) - 1) + \n", " \" Friends details to be fetched\")" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# For the remaining nodes, populate their details in fof_file\n", "update_FoF_File(fof_filename, fof_to_fetch_list) \n", "\n", "# Build the adjacency matrix in terms of 0 and 1 (if there is an edge)\n", "updateBinaryMapFile(fof_filename, binaryMap_filename, index)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(377, 377)\n" ] } ], "source": [ "# Read adj-matrix into df. Cell MxN is 1 iff node in Mth row follows node in Nth column \n", "binaryMap_rfc = pd.read_csv(binaryMap_filename, skip_blank_lines=True, index_col = 0)\n", "print(binaryMap_rfc.shape)\n", "\n", "\n", "outlinks_count = binaryMap_rfc.sum(axis = 1) # horizontal-sum to count outlinks\n", "inlinks_count = binaryMap_rfc.sum(axis = 0) # vertical-sum to count inlinks" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Histogram of number of OutLinks per node, within ego-network\n", "sns.distplot(outlinks_count, bins = len(index)//10, kde=False);" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nS4C6mORpW57/tWEaAMCBtpe78P4gyU2ttZ/KZnB6aZJ/NJGqAADm2Ng9UFV1JcmvJ/n9JA8mubuq\n/vekCgMAmFdjf4kcAOCw8iVyAIBOAhQAQKc9/SmX/XbY/nRMa+1pSd6f5MYkG0neXVXvaK29Mcmr\nk6wOi95eVZ+YTZXT1Vq7kGQ9yWNJrlTVs1prT0ny4SSnklxIcmtVrc2oxKlprbVstvOqpyf5V0mu\nzwHd/6219yV5UZKHq+rmYdrI/d1ae0OSV2Xz+PjnVfX7Myh7Yka0/98k+eUkf57kj5O8oqq+21o7\nlc3vn9bw8s9V1a/uf9WTM6L9b8yI4/2g7f9k5Hvw4SRtWOT6JN+tqtMH7Ri4xmfeXJ4DFqYH6pD+\n6ZgrSV5XVc9I8pwkv7alzW+vqtPDvwPx4XkNPz+081nD89cnub+qbkpy//D8wKlNp6vqdJK/leSR\nJPcMsw/q/r8zydknTNt2fw//F16a5G8Mr/n3w3likd2Zv9j+TyW5uar+ZpL/k+QNW+b98ZbjYGE/\nOLe4M3+x/ck2x/sB3f/JNu9BVf3DLeeCjyT56JbZB+kYGPWZN5fngIUJUDmEfzqmqh6qqi8Nj9ez\n+ZvGydlWNRduSXLX8PiuJC+eYS375fnZPFF+Y9aFTFNVPZDkO0+YPGp/35Lkd6vqB1X1J0n+KJvn\niYW1Xfur6r8Ndz0nyeeyOebegTRi/49y4PZ/cu33oLV2JMmtST60r0Xtk2t85s3lOWCRAtTJJP93\ny/Nv5hCFiaGr9plJPj9M+o3W2pdba+9rrd0wu8qmbiPJf2+tfbG19s+GaTdW1UPD429ls7v3oHtp\nHn/SPCz7Pxm9vw/jOeGVST655flPtdbOt9b+R2vt52ZV1D7Y7ng/jPv/55Jcqqo/3DLtQB4DT/jM\nm8tzwCIFqEOrtXY8m922r62q7yd5Vza/D3M6yUNJ3jrD8qbteUO39Quz2Z37d7bOrKqNbIasA6u1\n9peS/EqS/zxMOkz7/3EOw/4epbX2L7N5ieMDw6SHkvzk8P/jN5N8sLX2l2dV3xQd2uN9Gy/L43+R\nOpDHwDafeT8yT+eARQpQh/JPx7TWrsvmgfSBqvpoklTVpap6rKp+mOQ9OQDd1qNU1cXh58PZ/P7P\ns5Ncaq2dSJLh58Ozq3BfvDDJl6rqUnK49v9g1P4+NOeE1to/yeYXi//x8AGS4bLFt4fHX8zmF8z/\n+syKnJJrHO+HZv8nSWttKcnfy5YbSw7iMbDdZ17m9BywSAHqR386ZviN/KVJ7p1xTVM1XO9+b5IH\nq+ptW6af2LLYS5J8db9r2w+ttZ9orS1ffZzkl7LZ1nuT3DYsdluSj82mwn3zuN86D8v+32LU/r43\nyUtba08a/qTUTUn+1wzqm6rh7uN/keRXquqRLdNXrn5htrX29Gy2/+uzqXJ6rnG8H4r9v8UvJvla\nVX3z6oSDdgyM+szLnJ4DFmok8tba303yb7M5jMH7quq3Z1zSVLXWnpfkfyb5SpIfDpNvz+YH6uls\ndmNeSPKaLdeHD4zhhHD1rrOlJB+sqt9urf2VJHcn+ckk38jmLa27/eLpQhmC458meXpVfW+Y9js5\noPu/tfahJGeSPDXJpSR3JPkvGbG/h8tar8zmpa3XVtUnt1ntwhjR/jckeVKSbw+Lfa6qfrW19veT\n/Osk/y+b54c7quq/7nvREzSi/Wcy4ng/aPs/2f49qKr3ttbuzOa+/w9blj1Qx8A1PvM+nzk8ByxU\ngAIAmAeLdAkPAGAuCFAAAJ0EKACATgIUAEAnAQoAoJMABQDQSYACAOj0/wHBaZB8dGQ8UQAAAABJ\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Histogram of number of InLinks per node, within ego-network\n", "sns.distplot(inlinks_count, bins = len(index)//10, kde=False);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Identify influential friends using 'Page Rank' formulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the adjacency matrix generated above, we can construct a column-stochastic matrix (also called a transition matrix) such that, a column with `m` outlinks will have `1/m` as value in respective `m` cells. Conceptually, a value in the cell `a x b` gives the probability of a random-surfer in node B jumping to node A. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "binaryMap_cfr = binaryMap_rfc.transpose() # column-values: Outlinks\n", "binaryMap_cfr_norm = binaryMap_cfr / binaryMap_cfr.sum(axis = 0)\n", "colStochMatrix = np.matrix( binaryMap_cfr_norm.fillna(0)) # column-stochastic-matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_Initialize PageRank vector, such that all the nodes have equal PageRank score adding upto 1._" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "pageRankVector = np.matrix([1.0/len(index)] * len(index)) # iniitialize page-rank-vector \n", "pageRankVector = pageRankVector.transpose() # transpose to column-vector" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On applying the above Transition-matrix transformation iteratively on the PageRank vector, the vector will eventully converge such that:\n", "\n", "`Matrix.Vector = Vector`\n", "\n", "Equivalently, this is Eigen-Vector formulation with PageRank vector being the principal eigen-vector of matrix corresponding to eigen-value `1` [Since M is column-stochastic matrix, principal eigen-value is 1]\n", "\n", "Here we use Power Iteration method to solve for the PageRank vector. Inorder to handle the nodes which have zero out-links (dead-ends) and nodes with periodic-loops (spider-traps) in the ego-network, we introduce some randomness through parameter `beta` such that a random-surfer at any node picks a random path approx. every 1 out of 6 times ( 1 - beta = 0.15)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sum of Page-Rank Scores: 1.0\n", "Converged in 58 iterations\n" ] } ], "source": [ "# PageRank algo: Power Iteration to solve Markov transition matrix \n", "# refer this : http://setosa.io/blog/2014/07/26/markov-chains/index.html\n", "\n", "beta = 0.85\n", "epsilon = 999\n", "iteration = 0\n", "while epsilon > (1.0/(10**16)):\n", " pageRankVectorUpdating = colStochMatrix * pageRankVector * beta \n", " \n", " # re-insert leaked page-ranks\n", " S = np.array(pageRankVectorUpdating).sum() \n", " pageRankVectorUpdated = pageRankVectorUpdating + (\n", " 1 - S) * (1.0/len(index)) * np.ones_like(len(index))\n", " \n", " # compute the squared-difference and check for convergence\n", " error = np.array(pageRankVectorUpdated - pageRankVector)\n", " epsilon = np.sqrt((error * error).sum()) \n", " iteration = iteration + 1\n", " pageRankVector = pageRankVectorUpdated \n", " \n", "print( \"Sum of Page-Rank Scores: \" + str(pageRankVector.sum()) + \n", " \"\\nConverged in \" + str(iteration) + \" iterations\")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "... Cache-Miss for 1 nodes. Updating Cache...\n" ] } ], "source": [ "# Collect the results\n", "\n", "results_df = pd.DataFrame()\n", "results_df['Ids'], results_df['PageRank'] = index, pageRankVector\n", "results_df['Inlinks'], results_df['Outlinks'] = list(inlinks_count), list(outlinks_count)\n", "results_df = results_df.set_index('Ids', drop = True )\n", "\n", "results_df = results_df.merge(lookup_in_cache(index), copy = False,\n", " left_index = True, right_index = True)\n", "results_df = results_df[['PageRank','UserName', 'FullName', 'Inlinks' , 'Outlinks',\n", " 'Followers','Friends', 'Location', 'Created' ]] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2a. Nodes with high PageRank scores" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", "
PageRankUserNameInlinksOutlinksFollowersFriendsLocationCreated
FullName
Elon Musk0.014158elonmusk2014884553041BoringJun-2009
Bill Gates0.011921BillGates1681634940895183Seattle, WAJun-2009
Marc Andreessen0.011725pmarca1922464508513952Menlo Park, CAMay-2007
Edward Snowden0.010114Snowden97031504061Dec-2014
Tim O'Reilly0.009973timoreilly17813219873401709Oakland, CAMar-2007
WIRED0.009110WIRED103108974304279San Francisco/New YorkMar-2007
Nate Silver0.008281NateSilver538145262276360992New YorkAug-2008
Chris Dixon0.008217cdixon1621845454673054CA & NYCMar-2007
Fred Wilson0.008190fredwilson158756171491160New York CityMar-2007
Ev Williams0.008037ev14110419791321781San Francisco, CA, USMar-2006
\n", "
" ], "text/plain": [ " PageRank UserName Inlinks Outlinks Followers \\\n", "FullName \n", "Elon Musk 0.014158 elonmusk 201 4 8845530 \n", "Bill Gates 0.011921 BillGates 168 16 34940895 \n", "Marc Andreessen 0.011725 pmarca 192 24 645085 \n", "Edward Snowden 0.010114 Snowden 97 0 3150406 \n", "Tim O'Reilly 0.009973 timoreilly 178 132 1987340 \n", "WIRED 0.009110 WIRED 103 10 8974304 \n", "Nate Silver 0.008281 NateSilver538 145 26 2276360 \n", "Chris Dixon 0.008217 cdixon 162 184 545467 \n", "Fred Wilson 0.008190 fredwilson 158 75 617149 \n", "Ev Williams 0.008037 ev 141 104 1979132 \n", "\n", " Friends Location Created \n", "FullName \n", "Elon Musk 41 Boring Jun-2009 \n", "Bill Gates 183 Seattle, WA Jun-2009 \n", "Marc Andreessen 13952 Menlo Park, CA May-2007 \n", "Edward Snowden 1 Dec-2014 \n", "Tim O'Reilly 1709 Oakland, CA Mar-2007 \n", "WIRED 279 San Francisco/New York Mar-2007 \n", "Nate Silver 992 New York Aug-2008 \n", "Chris Dixon 3054 CA & NYC Mar-2007 \n", "Fred Wilson 1160 New York City Mar-2007 \n", "Ev Williams 1781 San Francisco, CA, US Mar-2006 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results_df.fillna('').sort_values(by = 'PageRank', ascending =False).set_index('FullName').head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2b. Top 100 influential-nodes in Ego-Network" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789
0Elon MuskReid HoffmanSam AltmanTim UrbanMicrosoft ResearchBrian CheskyTony FadellJohn D. CookDavid SacksClayton Christensen
1Bill GatesBill GurleySteven LevyJoi ItoJohn MarkoffMax RoserMatt CuttsNaval RavikantTim Berners-LeeGV
2Marc AndreessenEric SchmidtChris AndersonBenedict EvansNeil deGrasse TysonBradley HorowitzYann LeCunTim FerrissRecodeMark Suster
3Edward SnowdenPaul GrahamHilary MasonBrad StoneCharlie Rose Show🍪Steven Sinofsky ॐAtul GawandeJohn LillySarah LacyDrew Conway
4Tim O'ReillyVinod KhoslaOpenAINassimNicholasTalebBill GrossGabe RiveraJessica LessinDan PrimackEdward TufteFei-Fei Li
5WIREDOm MalikSteve CaseJosh Kopelmandanah boydWalt MossbergGoogle ResearchJimmy WalesSebastian ThrunMike Bloomberg
6Nate SilverTechCrunchSundar PichaiDAVE MORINPierre OmidyarSteven PinkerJonah PerettiPaul KedroskyJosh Elmana16z
7Chris DixonBen HorowitzPatrick CollisonHunter WalkEmily ChangKeith RaboisjasonStartup L. JacksonJeff HammerbacherKevin Weil
8Fred WilsonKara SwisherMax LevchinY Combinatordj patilAndrew NgEFFKevin KellyBret TaylorMike Bostock
9Ev WilliamsChris SaccaNick BiltonLessigBen ThompsonGlenn GreenwaldChamath PalihapitiyaJohn CollisonPaul BuchheitJeff Jordan
\n", "
" ], "text/plain": [ " 0 1 2 3 \\\n", "0 Elon Musk Reid Hoffman Sam Altman Tim Urban \n", "1 Bill Gates Bill Gurley Steven Levy Joi Ito \n", "2 Marc Andreessen Eric Schmidt Chris Anderson Benedict Evans \n", "3 Edward Snowden Paul Graham Hilary Mason Brad Stone \n", "4 Tim O'Reilly Vinod Khosla OpenAI NassimNicholasTaleb \n", "5 WIRED Om Malik Steve Case Josh Kopelman \n", "6 Nate Silver TechCrunch Sundar Pichai DAVE MORIN \n", "7 Chris Dixon Ben Horowitz Patrick Collison Hunter Walk \n", "8 Fred Wilson Kara Swisher Max Levchin Y Combinator \n", "9 Ev Williams Chris Sacca Nick Bilton Lessig \n", "\n", " 4 5 6 \\\n", "0 Microsoft Research Brian Chesky Tony Fadell \n", "1 John Markoff Max Roser Matt Cutts \n", "2 Neil deGrasse Tyson Bradley Horowitz Yann LeCun \n", "3 Charlie Rose Show 🍪Steven Sinofsky ॐ Atul Gawande \n", "4 Bill Gross Gabe Rivera Jessica Lessin \n", "5 danah boyd Walt Mossberg Google Research \n", "6 Pierre Omidyar Steven Pinker Jonah Peretti \n", "7 Emily Chang Keith Rabois jason \n", "8 dj patil Andrew Ng EFF \n", "9 Ben Thompson Glenn Greenwald Chamath Palihapitiya \n", "\n", " 7 8 9 \n", "0 John D. Cook David Sacks Clayton Christensen \n", "1 Naval Ravikant Tim Berners-Lee GV \n", "2 Tim Ferriss Recode Mark Suster \n", "3 John Lilly Sarah Lacy Drew Conway \n", "4 Dan Primack Edward Tufte Fei-Fei Li \n", "5 Jimmy Wales Sebastian Thrun Mike Bloomberg \n", "6 Paul Kedrosky Josh Elman a16z \n", "7 Startup L. Jackson Jeff Hammerbacher Kevin Weil \n", "8 Kevin Kelly Bret Taylor Mike Bostock \n", "9 John Collison Paul Buchheit Jeff Jordan " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummy_df = pd.DataFrame()\n", "temp_df = results_df.sort_values( by = 'PageRank', ascending =False)\n", "\n", "for i in range(10):\n", " dummy_df[i] = list (temp_df [10*i : 10* i + 10]['FullName'])\n", "dummy_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2c. Histogram of PageRank scores" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "PageRank scores are scaled such that nodes have an average-score of 1. So the scores below give an idea of how influential are the nodes, with respect to an average node. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pageRank_to_plot = len(index) * results_df[\"PageRank\"]\n", "sns.distplot(pageRank_to_plot, kde=False, rug=True, bins = len(index)//10);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A joint-plot showing how Inlinks and Outlinks of the nodes are distributed (within the ego-network)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nJSIirvf/AzH3nJqEiqGHAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.jointplot(x=\"Inlinks\", y=\"Outlinks\", data=results_df, kind = \"kde\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Identify implicit clusters using Clustering algos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Typically, number of clusters are chosen with a plot of within-cluster sum-of-squares-of-dstances vs number of clusters. \n", "Here for simplicity, we use a simple heuristic to fix the number of clusters in advnace." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n" ] } ], "source": [ "n_clusters = min( int( round(np.sqrt(len(index)/2)) ), 10 ) # not more than 10 clusters\n", "print(n_clusters)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3a. K-Means clustering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "K Means is a point-assignment based clustering-algorithm: here we start with k points chosen randomly as centroids, assign the remaining points to k centroids by using certain distance measure (Euclidean / Cosine / Jaccardi). Then we compute new centroids, re-assign remaining points and repeat, until there is convergence of centroids. \n", "\n", "Here we are more interested in clustering inherent in who-follows-me (network-driven) graph, rather than who-do-I-follow (self-driven). So the approach is to represent the nodes as Observations and whether other nodes follow them or not (1 or 0) as Features (One observation per row, and one feature per column) Thus the input matrix must be such that any value in cell implies whether node in the column follows node in the row." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0 : 45 Ids1 : 67 Ids2 : 39 Ids3 : 28 Ids4 : 21 Ids5 : 17 Ids6 : 15 Ids7 : 24 Ids8 : 18 Ids9 : 103 Ids
0Edward SnowdenTim UrbanJohn D. CookHilary MasonOpenAIElon MuskWIREDMike BostockNassimNicholasTalebCharlie Rose Show
1Nate SilverTim FerrissLynn Chernydj patilMicrosoft ResearchBill GatesEric SchmidtGilad LotanNeil deGrasse TysonIrene Au
2Sundar PichaiGVBen HamnerJeff HammerbacherAndrew NgMarc AndreessenTechCrunchJeffrey HeerMax RoserSteven Brooks
3Patrick CollisonMike BloombergDavid SmithDrew ConwayYann LeCunTim O'ReillySteven LevyMartin WattenbergSteven PinkerUdacity
4Nick BiltonGarry TanFernando PerezWes McKinneyGoogle ResearchChris DixonChris AndersonAndrew GelmanGlenn Greenwaldbriankrebs
5Benedict EvansJoe GebbiaAndreas MuellerMonica RogatiSebastian ThrunFred WilsonSteve CaseFernanda ViégasAtul GawandeChristopher Soghoian
6Brad StoneYves BeharKaggleHadley WickhamFei-Fei LiEv WilliamsJoi ItoSteven StrogatzEFFIDEO
7Josh KopelmanAshlee VanceJohn ForemanSean J. TaylorAndrej KarpathyReid HoffmanLessigDuncan WattsKevin KellyStanford University
8DAVE MORINDustin MoskovitzJake VanderPlasNathan YauShivon ZilisBill GurleyJohn MarkoffKenneth CukierTim Berners-LeeGary Marcus
9Hunter WalkBalaji S. SrinivasanScientific PythonPeter SkomorochPedro DomingosPaul GrahamBill GrossSinan AralEdward TufteMatías Duarte
\n", "
" ], "text/plain": [ " 0 : 45 Ids 1 : 67 Ids 2 : 39 Ids \\\n", "0 Edward Snowden Tim Urban John D. Cook \n", "1 Nate Silver Tim Ferriss Lynn Cherny \n", "2 Sundar Pichai GV Ben Hamner \n", "3 Patrick Collison Mike Bloomberg David Smith \n", "4 Nick Bilton Garry Tan Fernando Perez \n", "5 Benedict Evans Joe Gebbia Andreas Mueller \n", "6 Brad Stone Yves Behar Kaggle \n", "7 Josh Kopelman Ashlee Vance John Foreman \n", "8 DAVE MORIN Dustin Moskovitz Jake VanderPlas \n", "9 Hunter Walk Balaji S. Srinivasan Scientific Python \n", "\n", " 3 : 28 Ids 4 : 21 Ids 5 : 17 Ids 6 : 15 Ids \\\n", "0 Hilary Mason OpenAI Elon Musk WIRED \n", "1 dj patil Microsoft Research Bill Gates Eric Schmidt \n", "2 Jeff Hammerbacher Andrew Ng Marc Andreessen TechCrunch \n", "3 Drew Conway Yann LeCun Tim O'Reilly Steven Levy \n", "4 Wes McKinney Google Research Chris Dixon Chris Anderson \n", "5 Monica Rogati Sebastian Thrun Fred Wilson Steve Case \n", "6 Hadley Wickham Fei-Fei Li Ev Williams Joi Ito \n", "7 Sean J. Taylor Andrej Karpathy Reid Hoffman Lessig \n", "8 Nathan Yau Shivon Zilis Bill Gurley John Markoff \n", "9 Peter Skomoroch Pedro Domingos Paul Graham Bill Gross \n", "\n", " 7 : 24 Ids 8 : 18 Ids 9 : 103 Ids \n", "0 Mike Bostock NassimNicholasTaleb Charlie Rose Show \n", "1 Gilad Lotan Neil deGrasse Tyson Irene Au \n", "2 Jeffrey Heer Max Roser Steven Brooks \n", "3 Martin Wattenberg Steven Pinker Udacity \n", "4 Andrew Gelman Glenn Greenwald briankrebs \n", "5 Fernanda Viégas Atul Gawande Christopher Soghoian \n", "6 Steven Strogatz EFF IDEO \n", "7 Duncan Watts Kevin Kelly Stanford University \n", "8 Kenneth Cukier Tim Berners-Lee Gary Marcus \n", "9 Sinan Aral Edward Tufte Matías Duarte " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.cluster import KMeans\n", "est = KMeans(max_iter = 100000, n_clusters = n_clusters, n_init = 200, init='k-means++') \n", "results_df['kmeans'] = est.fit_predict(binaryMap_cfr)\n", "\n", "top_nodes_in_cluster(results_df.sort_values( by = 'PageRank', ascending =False), \n", " 'kmeans', n_clusters)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3b. Spectral clustering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One problem in using K-Means algorithm to cluster the given social-graph is 'Curse of Dimensionality' i.e. at higher-dimensions (here ~400 dimensions), metric like 'Euclidean distance' or 'Centre' would have little meaning in the context of non-convex adjacency matrix.\n", "\n", "On the other hand, spectral clustering attempts to partition the graph such that number of edges which connect different components are minimized. Below is the output from Spectral Clustering." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", "
0 : 34 Ids2 : 19 Ids3 : 27 Ids4 : 55 Ids5 : 11 Ids6 : 10 Ids7 : 187 Ids8 : 14 Ids9 : 13 Ids
0dj patilLynn ChernyTim O'ReillyNate SilverHilary MasonElon MuskEdward SnowdenAndrew NgLuke Wroblewski
1Jeff HammerbacherBen HamnerEv WilliamsSundar PichaiDrew ConwayBill GatesWIREDYann LeCunMatías Duarte
2Monica RogatiOlivier GriselBill GurleyPatrick CollisonWes McKinneyMarc AndreessenEric SchmidtFei-Fei LiJulie Zhuo
3Peter SkomorochFernando PerezOm MalikBenedict EvansHadley WickhamChris DixonVinod KhoslaAndrej KarpathyJon Wiley
4Michael E. DriscollAndreas MuellerKara SwisherY CombinatorSean J. TaylorFred WilsonTechCrunchStanford NLP GroupDaniel Burka
5bradford crossJake VanderPlasChris SaccaEmily ChangNathan YauReid HoffmanChris AndersonJohn PlattBraden Kowitz
6Jeremy HowardScientific PythonSteven LevyBen ThompsonJohn Myles WhitePaul GrahamOpenAIRichardGoogle Design
7Mike OlsonSebastian RaschkaNick BiltonBrian Cheskychris wigginsBen HorowitzSteve CaseOren EtzioniJosh Brewer
8Anthony GoldbloomTrey CauseyJosh Kopelman🍪Steven Sinofsky ॐBen Lorica 罗瑞卡Sam AltmanTim UrbanIan GoodfellowJake Knapp
9Joe HellersteinJoshua BloomDAVE MORINTony FadellJosh WillsMax LevchinJoi ItoNando de FreitasJohn Zeratsky
\n", "
" ], "text/plain": [ " 0 : 34 Ids 2 : 19 Ids 3 : 27 Ids 4 : 55 Ids \\\n", "0 dj patil Lynn Cherny Tim O'Reilly Nate Silver \n", "1 Jeff Hammerbacher Ben Hamner Ev Williams Sundar Pichai \n", "2 Monica Rogati Olivier Grisel Bill Gurley Patrick Collison \n", "3 Peter Skomoroch Fernando Perez Om Malik Benedict Evans \n", "4 Michael E. Driscoll Andreas Mueller Kara Swisher Y Combinator \n", "5 bradford cross Jake VanderPlas Chris Sacca Emily Chang \n", "6 Jeremy Howard Scientific Python Steven Levy Ben Thompson \n", "7 Mike Olson Sebastian Raschka Nick Bilton Brian Chesky \n", "8 Anthony Goldbloom Trey Causey Josh Kopelman 🍪Steven Sinofsky ॐ \n", "9 Joe Hellerstein Joshua Bloom DAVE MORIN Tony Fadell \n", "\n", " 5 : 11 Ids 6 : 10 Ids 7 : 187 Ids 8 : 14 Ids \\\n", "0 Hilary Mason Elon Musk Edward Snowden Andrew Ng \n", "1 Drew Conway Bill Gates WIRED Yann LeCun \n", "2 Wes McKinney Marc Andreessen Eric Schmidt Fei-Fei Li \n", "3 Hadley Wickham Chris Dixon Vinod Khosla Andrej Karpathy \n", "4 Sean J. Taylor Fred Wilson TechCrunch Stanford NLP Group \n", "5 Nathan Yau Reid Hoffman Chris Anderson John Platt \n", "6 John Myles White Paul Graham OpenAI Richard \n", "7 chris wiggins Ben Horowitz Steve Case Oren Etzioni \n", "8 Ben Lorica 罗瑞卡 Sam Altman Tim Urban Ian Goodfellow \n", "9 Josh Wills Max Levchin Joi Ito Nando de Freitas \n", "\n", " 9 : 13 Ids \n", "0 Luke Wroblewski \n", "1 Matías Duarte \n", "2 Julie Zhuo \n", "3 Jon Wiley \n", "4 Daniel Burka \n", "5 Braden Kowitz \n", "6 Google Design \n", "7 Josh Brewer \n", "8 Jake Knapp \n", "9 John Zeratsky " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import cluster\n", "\n", "spectral = cluster.SpectralClustering(n_clusters=n_clusters, n_init = 500,\n", " eigen_solver='arpack',\n", " affinity=\"nearest_neighbors\")\n", "spectral.fit(binaryMap_cfr)\n", "results_df['spectral'] = spectral.labels_.astype(np.int)\n", "\n", "top_nodes_in_cluster(results_df.sort_values( by = 'PageRank', ascending =False), \n", " 'spectral', n_clusters)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nodes mainly into Deep Learning community have grouped into Cluster 8, Python Machine Learning community into Cluster 2, Design community into Cluster 9, general Data Science community into Cluster 0 and 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One smaller clusters (1) wasn't shown above." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "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", "
PageRankUserNameInlinksOutlinksFollowersFriendsLocationCreatedkmeansspectral
FullName
JAMA0.000658JAMA_current43205154559Chicago, ILMay-200991
FSI Stanford0.000643FSIStanford556614285Stanford, CADec-201091
Adam Johnson0.000638AJInsight426279451232New YorkJul-201091
PNAS0.000595PNASNews417667201110Washington, DCFeb-201191
IQSS @ Harvard0.000558IQSS544241360Cambridge, MAMay-200991
\n", "
" ], "text/plain": [ " PageRank UserName Inlinks Outlinks Followers Friends \\\n", "FullName \n", "JAMA 0.000658 JAMA_current 4 3 205154 559 \n", "FSI Stanford 0.000643 FSIStanford 5 5 6614 285 \n", "Adam Johnson 0.000638 AJInsight 4 26 27945 1232 \n", "PNAS 0.000595 PNASNews 4 17 66720 1110 \n", "IQSS @ Harvard 0.000558 IQSS 5 4 4241 360 \n", "\n", " Location Created kmeans spectral \n", "FullName \n", "JAMA Chicago, IL May-2009 9 1 \n", "FSI Stanford Stanford, CA Dec-2010 9 1 \n", "Adam Johnson New York Jul-2010 9 1 \n", "PNAS Washington, DC Feb-2011 9 1 \n", "IQSS @ Harvard Cambridge, MA May-2009 9 1 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results_df [results_df['spectral'].isin([1])].sort_values(by = 'PageRank', ascending =False).set_index('FullName').head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3c. Affinity Propagation clustering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unlike K-Means or Spectral clustering, affinity propagation doesn't require the number of clusters to be estimated beforehand. Here the algorithm finds 'exemplars' i.e. members of dataset that are representative of clusters. and tries to find clusters around them. " ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "128 affinity clusters.\n" ] }, { "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", "
2 : 87 Ids6 : 34 Ids32 : 23 Ids38 : 11 Ids41 : 11 Ids111 : 42 Ids
0Tim UrbanAdam GrantLynn ChernyJohn D. CookJeff JordanYves Behar
1Charlie Rose ShowSteven StrogatzBen Hamnerchris wigginsDustin MoskovitzAshlee Vance
2Irene AuTim HarfordOlivier GriselJeremy HowardBalaji S. SrinivasanWikiLeaks
3John CarmackGary MarcusFernando PerezXavier AmatriainHorace DediuSeth Godin
4The InformationDHHAndreas MuellerAnthony GoldbloomJessica LivingstonTom Hulme
5Paul FordBJ FoggJake VanderPlasKaggleDavid MarcusUdacity
6briankrebsJoe BlitzsteinScientific PythonJohn ForemanFrank ChenIDEO
7Christopher SoghoianBrian NosekSebastian RaschkaEdwin ChenKleiner PerkinsScott Dadich
8John HagelMartin VarsavskyTrey CauseyMark FaridaniAmir EfratiReadWrite
9Sarah FrierRussell RobertsJoshua BloomShane ConwayScott KuporPeter Diamandis
\n", "
" ], "text/plain": [ " 2 : 87 Ids 6 : 34 Ids 32 : 23 Ids \\\n", "0 Tim Urban Adam Grant Lynn Cherny \n", "1 Charlie Rose Show Steven Strogatz Ben Hamner \n", "2 Irene Au Tim Harford Olivier Grisel \n", "3 John Carmack Gary Marcus Fernando Perez \n", "4 The Information DHH Andreas Mueller \n", "5 Paul Ford BJ Fogg Jake VanderPlas \n", "6 briankrebs Joe Blitzstein Scientific Python \n", "7 Christopher Soghoian Brian Nosek Sebastian Raschka \n", "8 John Hagel Martin Varsavsky Trey Causey \n", "9 Sarah Frier Russell Roberts Joshua Bloom \n", "\n", " 38 : 11 Ids 41 : 11 Ids 111 : 42 Ids \n", "0 John D. Cook Jeff Jordan Yves Behar \n", "1 chris wiggins Dustin Moskovitz Ashlee Vance \n", "2 Jeremy Howard Balaji S. Srinivasan WikiLeaks \n", "3 Xavier Amatriain Horace Dediu Seth Godin \n", "4 Anthony Goldbloom Jessica Livingston Tom Hulme \n", "5 Kaggle David Marcus Udacity \n", "6 John Foreman Frank Chen IDEO \n", "7 Edwin Chen Kleiner Perkins Scott Dadich \n", "8 Mark Faridani Amir Efrati ReadWrite \n", "9 Shane Conway Scott Kupor Peter Diamandis " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.cluster import AffinityPropagation\n", "\n", "af = AffinityPropagation(preference=-50).fit(binaryMap_cfr)\n", "results_df['affinity'] = af.labels_\n", "n_clusters_affinity = len(af.cluster_centers_indices_)\n", "\n", "print(str(n_clusters_affinity) + \" affinity clusters.\")\n", "\n", "top_nodes_in_cluster(results_df.sort_values( by = 'PageRank', ascending =False), \n", " 'affinity', n_clusters_affinity)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3d. Principal Component Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To handle the 'curse of dimensionality' problem inherent in high-dimension data, PCA is generally used to represent the high-dimensional data in a fewer number of dimensions - this helps in better visualizing of data as well as faster computation while running clustering algorithm." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Explained-variance and Proportion of Explained-variance in 3 dimensions [dim1 dim2 dim3]\n", "[ 7.09266174 3.16212677 1.21891396] [ 0.18363161 0.08186862 0.03155813]\n" ] } ], "source": [ "pca = PCA(n_components=3)\n", "Xproj = pca.fit_transform(binaryMap_cfr)\n", "\n", "results_df['dim1'] = Xproj[:,0]\n", "results_df['dim2'] = Xproj[:,1]\n", "results_df['dim3'] = Xproj[:,2]\n", "\n", "results_df = results_df.sort_values( by = 'PageRank', ascending =False)\n", "results_df.to_csv(cluster_filename)\n", "\n", "print(\"Explained-variance and Proportion of Explained-variance in 3 dimensions [dim1 dim2 dim3]\")\n", "print(pca.explained_variance_, pca.explained_variance_ratio_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A simpler visualization of Spectral-clustering outcome as rendered in 2 dimensions." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ngQP79elP/5EmTpwUcacAAAAAACDfWLRZgJ555im1trbIcS7/8RhjFASBnn76Z8pms13fwAZy296R\n17RGbssWKeymDgAAAAAAFB1m5hSYU6fqdfRoneLxro4xvCiV6lBt7QbV1Cy/+EUbKnbu9/LatsuE\nHZLxJOtLjS/JL71emYqPdX4NF9lQMmSaAAAAAIDiwSf7AlNbu1GxWO8/Fs/ztGfP7othjrVKnP6J\n3PRhSe7F0MZ4kg3ltb4jJ3NKqTFfHvSBjknVKd68Tm7qoGQzkkkoSE5VZvhy2cSEqNsDAAAAAKBH\nTEkoMKlUh4wxOdV2dHRc+GeveZ3c1CFJbtfFxpGTOaX4uZf7oMvi5TWtVcmpH8lNHZBkJROTFMpN\nHVBJ/X/Ja14fdYsAAAAAAPSIMKfAxGIXjy20VmpNl+hs23C1pEtl7aW18Xj8QqHXtq33GTfGldu2\ns3Np0SDktu1UvPG17v+cjKf4ud/Lbd+d38YAAAAAALgCg3u9TQGaP3+Btm/fpjMd43WypVJt6VIZ\nY2WtUUksraqyM5o04qSsDTV16jRJkgla5GTqJSfZ6/1N2CwndVRhyZR+/k4Kj9eyTjKdM5cam1Na\ns/mIzjS0y1qpYnhSy2+YpNEjh8hrWa+gdHbE3QIAAAAA0DXCnAIzZcpUnc4u1KGGEjnGynODC69l\nQ091TePUkinTnNF7dfPNt3S+YLMyCmW7ueclrCuF7f3SeyEzfrPcdJ2s4npxzX5tfOeEXNdcWNJ2\n8kyLtu4+pbnTK/XwXSlpVKvklkXcNQAAAAAAl2OZVYHZus/XsLHL5bld75tjjNW5jqEaM+thJZOd\nM3GsUyprej796sL1CmVjo/qs32Jhsg2StXp53UFt3HFCnudcsjeRMUbxmKvdh97T0y/tkuM3Rdgt\nAAAAAADdI8wpMFv2ZjVsaKmqqxdpRPkIWWsVBqHCIFQQhCorG6r5c+epNZgoe34THbdEQXJqTvcP\n4mNk46P78TsoTNZJqiOV0Ybtx+W53Q9713W06/BZnTzVmMfuAAAAAADIHcusCkhbyurEmVDxuFFJ\nSYnmzJ0nP5tVY2OjrLUaOmyokskSSdK5FqtjpwNNrOr8EWaHLpOb+rlkesjnrK/s0KX5+FYKjo2P\n1trtuc22iSfK9NamXfrEpLn93BUAAAAAAFeOMKeApNJWwYcOmvJiMY2qrLys1nGklosnkyssvU6Z\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Spectral clustering | Plot the ego-network in 2 dimensions\n", "\n", "plt.figure(num=None, figsize=(20, 10), dpi=80, facecolor='w', edgecolor='k')\n", "plt.scatter(results_df['dim1'], results_df['dim2'], s = 100 ,c= results_df['spectral'], \n", " alpha=0.5, cmap=plt.cm.get_cmap('nipy_spectral', 10))\n", "plt.colorbar();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "More on Clustering Algorithms: http://scikit-learn.org/stable/modules/clustering.html" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## 4. Recommend new friends to follow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have PageRank in place for nodes in social-graph, we can ask for recommendations on the basis of top-ranked nodes in the graph. E.g. To get 20 recommendations, after looking at friends of top PageRank scoring nodes in my network" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4a. Reco: After looking at top nodes in full ego-network" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'Who-To-Follow' reco after looking at 187 friends' friends:\n" ] }, { "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", " \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", "
FreqCreatedFollowersFriendsLocationUserName
FullName
Medium67May-2012218811978San Francisco, CA, USMedium
Barack Obama67Mar-200788892730629775Washington, DCBarackObama
Aaron Levie52Mar-20071626688423Palo Altolevie
Clay Shirky51May-2007365919749Shanghaicshirky
Mitch Kapor47Mar-2007116400553Oaklandmkapor
The New York Times45Mar-200737377094894New York Citynytimes
jack45Mar-200640550172791California, USAjack
marissamayer44Nov-20081705305350San Francisco, CAmarissamayer
Stewart Butterfield43Sep-2006651932418West coaststewart
Anil Dash40Dec-20066131334684NYCanildash
dick costolo40May-20071739649681San Franciscodickc
Chris Anderson40Nov-2008184874977Berkeleychr1sa
The Economist39May-200720816240159LondonTheEconomist
President Obama39Jun-20131545961279Washington, D.C.POTUS44
Farhad Manjoo 🐣39Mar-20071580933674I'm right over here (it's not NYC)fmanjoo
John Maeda38Jul-200843927321724WordPressLandiajohnmaeda
David Pogue38Oct-200715644761794USAPogue
Hanna Wallach37Sep-20127537795Brooklyn, NYhannawallach
Tim Cook37Jul-2013492500556Cupertinotim_cook
Hillary Clinton37Apr-201315590192762New York, NYHillaryClinton
\n", "
" ], "text/plain": [ " Freq Created Followers Friends \\\n", "FullName \n", "Medium 67 May-2012 2188119 78 \n", "Barack Obama 67 Mar-2007 88892730 629775 \n", "Aaron Levie 52 Mar-2007 1626688 423 \n", "Clay Shirky 51 May-2007 365919 749 \n", "Mitch Kapor 47 Mar-2007 116400 553 \n", "The New York Times 45 Mar-2007 37377094 894 \n", "jack 45 Mar-2006 4055017 2791 \n", "marissamayer 44 Nov-2008 1705305 350 \n", "Stewart Butterfield 43 Sep-2006 65193 2418 \n", "Anil Dash 40 Dec-2006 613133 4684 \n", "dick costolo 40 May-2007 1739649 681 \n", "Chris Anderson 40 Nov-2008 184874 977 \n", "The Economist 39 May-2007 20816240 159 \n", "President Obama 39 Jun-2013 15459612 79 \n", "Farhad Manjoo 🐣 39 Mar-2007 158093 3674 \n", "John Maeda 38 Jul-2008 439273 21724 \n", "David Pogue 38 Oct-2007 1564476 1794 \n", "Hanna Wallach 37 Sep-2012 7537 795 \n", "Tim Cook 37 Jul-2013 4925005 56 \n", "Hillary Clinton 37 Apr-2013 15590192 762 \n", "\n", " Location UserName \n", "FullName \n", "Medium San Francisco, CA, US Medium \n", "Barack Obama Washington, DC BarackObama \n", "Aaron Levie Palo Alto levie \n", "Clay Shirky Shanghai cshirky \n", "Mitch Kapor Oakland mkapor \n", "The New York Times New York City nytimes \n", "jack California, USA jack \n", "marissamayer San Francisco, CA marissamayer \n", "Stewart Butterfield West coast stewart \n", "Anil Dash NYC anildash \n", "dick costolo San Francisco dickc \n", "Chris Anderson Berkeley chr1sa \n", "The Economist London TheEconomist \n", "President Obama Washington, D.C. POTUS44 \n", "Farhad Manjoo 🐣 I'm right over here (it's not NYC) fmanjoo \n", "John Maeda WordPressLandia johnmaeda \n", "David Pogue USA Pogue \n", "Hanna Wallach Brooklyn, NY hannawallach \n", "Tim Cook Cupertino tim_cook \n", "Hillary Clinton New York, NY HillaryClinton " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "discover_Friends_toFollow(ids_of_interest = index,\n", " friend_list = index, \n", " prop = .5 , count = 20).fillna('').set_index('FullName')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recommendations on the basis of a specific cluster outcome. \n", "E.g. Nodes to follow on the basis of top PageRank nodes in 'Spectral Clustering::Data' clusters. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Reco: 4b. After looking at Data-Science clustsers (Spectral clustering)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'Who-To-Follow' reco after looking at 39 friends' friends:\n", "... Cache-Miss for 3 nodes. Updating Cache...\n" ] }, { "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", " \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", " \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", "
FreqCreatedFollowersFriendsLocationUserName
FullName
Pete Warden21May-2008121421559San Francisco, CApetewarden
Hanna Wallach19Sep-20127537795Brooklyn, NYhannawallach
Barack Obama19Mar-200788892730629775Washington, DCBarackObama
Alex Smola19Jun-2008876848Mountain View and Pittsburghsmolix
Hal Daumé III18Jun-201087021017Washington DChaldaume3
Chris Diehl17Apr-20084302999San Francisco Bay Area, CAChrisDiehl
Julie Steele17Mar-20084199913NYC and Providencejsteeleeditor
Joseph Adler17Apr-20081583623Silicon Valleyjadler
joseph reisinger17Jul-20091933686現在地josephreisinger
Daniel Tunkelang16Aug-2008823420Mountain Viewdtunkelang
KDnuggets16Feb-200984083397Brookline, MA, USAkdnuggets
Demis Hassabis16Jun-20136991421demishassabis
Ryan Adams16Jan-201510417674ryan_p_adams
Hugo Larochelle16Jun-201522563350hugo_larochelle
Oriol Vinyals16Oct-20151891142London, EnglandOriolVinyalsML
Jack Clark16Oct-2009180152506San Francisco, CAjackclarkSF
Fernando Pereira16Oct-20108045186Menlo Park, CA, USAearnmyturns
Philip (flip) Kromer15Mar-200747731417Austin, TXmrflip
Josh Reich15Dec-200853151278Portlandi2pi
Sean Gourley15Dec-200880621947San Francisco, New Zealandsgourley
Doug Cutting15Jul-200722676116California, USAcutting
ML Hipster15Jul-2012124010Some local minimaML_Hipster
Panos Ipeirotis14Oct-20083988259New York, NYipeirotis
Beau Cronin14Jun-20093705291Neck deep in AWSbeaucronin
Florian Leibert14Jan-2009110761741San Francisco, CAflo
Mark Reid14Feb-20084625718Sunnyvale, CAmdreid
Claudia Perlich14Feb-20122732105NYCclaudia_perlich
Alistair Croll14Mar-20072239111537Montreal, Quebecacroll
Joseph Turian14Dec-20072873991San Franciscoturian
Neha Narkhede14Sep-200911158678Mountain Viewnehanarkhede
\n", "
" ], "text/plain": [ " Freq Created Followers Friends \\\n", "FullName \n", "Pete Warden 21 May-2008 12142 1559 \n", "Hanna Wallach 19 Sep-2012 7537 795 \n", "Barack Obama 19 Mar-2007 88892730 629775 \n", "Alex Smola 19 Jun-2008 8768 48 \n", "Hal Daumé III 18 Jun-2010 8702 1017 \n", "Chris Diehl 17 Apr-2008 4302 999 \n", "Julie Steele 17 Mar-2008 4199 913 \n", "Joseph Adler 17 Apr-2008 1583 623 \n", "joseph reisinger 17 Jul-2009 1933 686 \n", "Daniel Tunkelang 16 Aug-2008 8234 20 \n", "KDnuggets 16 Feb-2009 84083 397 \n", "Demis Hassabis 16 Jun-2013 69914 21 \n", "Ryan Adams 16 Jan-2015 10417 674 \n", "Hugo Larochelle 16 Jun-2015 22563 350 \n", "Oriol Vinyals 16 Oct-2015 18911 42 \n", "Jack Clark 16 Oct-2009 18015 2506 \n", "Fernando Pereira 16 Oct-2010 8045 186 \n", "Philip (flip) Kromer 15 Mar-2007 4773 1417 \n", "Josh Reich 15 Dec-2008 5315 1278 \n", "Sean Gourley 15 Dec-2008 8062 1947 \n", "Doug Cutting 15 Jul-2007 22676 116 \n", "ML Hipster 15 Jul-2012 12401 0 \n", "Panos Ipeirotis 14 Oct-2008 3988 259 \n", "Beau Cronin 14 Jun-2009 3705 291 \n", "Florian Leibert 14 Jan-2009 11076 1741 \n", "Mark Reid 14 Feb-2008 4625 718 \n", "Claudia Perlich 14 Feb-2012 2732 105 \n", "Alistair Croll 14 Mar-2007 22391 11537 \n", "Joseph Turian 14 Dec-2007 2873 991 \n", "Neha Narkhede 14 Sep-2009 11158 678 \n", "\n", " Location UserName \n", "FullName \n", "Pete Warden San Francisco, CA petewarden \n", "Hanna Wallach Brooklyn, NY hannawallach \n", "Barack Obama Washington, DC BarackObama \n", "Alex Smola Mountain View and Pittsburgh smolix \n", "Hal Daumé III Washington DC haldaume3 \n", "Chris Diehl San Francisco Bay Area, CA ChrisDiehl \n", "Julie Steele NYC and Providence jsteeleeditor \n", "Joseph Adler Silicon Valley jadler \n", "joseph reisinger 現在地 josephreisinger \n", "Daniel Tunkelang Mountain View dtunkelang \n", "KDnuggets Brookline, MA, USA kdnuggets \n", "Demis Hassabis demishassabis \n", "Ryan Adams ryan_p_adams \n", "Hugo Larochelle hugo_larochelle \n", "Oriol Vinyals London, England OriolVinyalsML \n", "Jack Clark San Francisco, CA jackclarkSF \n", "Fernando Pereira Menlo Park, CA, USA earnmyturns \n", "Philip (flip) Kromer Austin, TX mrflip \n", "Josh Reich Portland i2pi \n", "Sean Gourley San Francisco, New Zealand sgourley \n", "Doug Cutting California, USA cutting \n", "ML Hipster Some local minima ML_Hipster \n", "Panos Ipeirotis New York, NY ipeirotis \n", "Beau Cronin Neck deep in AWS beaucronin \n", "Florian Leibert San Francisco, CA flo \n", "Mark Reid Sunnyvale, CA mdreid \n", "Claudia Perlich NYC claudia_perlich \n", "Alistair Croll Montreal, Quebec acroll \n", "Joseph Turian San Francisco turian \n", "Neha Narkhede Mountain View nehanarkhede " ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "favorite_cluster_df = results_df [results_df['spectral'].isin([0,2,5,8])]\n", "favorite_cluster_list = list(favorite_cluster_df.index)\n", "\n", "discover_Friends_toFollow(ids_of_interest = favorite_cluster_list, \n", " friend_list = index, \n", " prop = .5, count = 30).fillna('').set_index('FullName') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4c.Reco: After looking at Design clustser (Spectral clustering)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'Who-To-Follow' reco after looking at 13 friends' friends:\n", "... Cache-Miss for 18 nodes. Updating Cache...\n" ] }, { "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", " \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", "
FreqCreatedFollowersFriendsLocationUserName
FullName
Nicholas Jitkoff8Jan-20074605204Palo Alto, CAalcor
John Maeda8Jul-200843927321724WordPressLandiajohnmaeda
Joshua Porter7Mar-200733903817Newburyport, MAbokardo
Khoi Vinh7Dec-20063470732347New York, NYkhoi
Brett Lider7Dec-20086953947San Francisco, Californiabl
Margaret Stewart7Mar-200712846862Bay Area, CAmags
Paul Stamatiou 📷7Jan-200733711599San Francisco, CAStammy
GV Design7Aug-201117799515San Francisco, CAGVDesignTeam
Marc Hemeon6Jan-2009169573322Southern Californiahemeon
Michael Leggett6Mar-20077999209Seattleleggett
M.G. Siegler6Jan-2007190837996San Francisco, CAmgsiegler
Jenna Bilotta6Apr-200912558287San Francisco, CAjenna
Noah Levin6Nov-20085295848New York, NYnlevin
Geoff Teehan6Oct-200822642810Palo Alto, CAgt
Jonathan Lee6Apr-20092771610hifromjonathan
Google6Feb-200918020558204Mountain View, CAGoogle
Paul Adams6Jan-200722637387DublinPadday
dustin senos6Sep-200611846721West Coastdustin
Doug Bowman6Mar-2007232398500San Diegostop
Katie Dill6Apr-20094751413San Franciscolil_dill
\n", "
" ], "text/plain": [ " Freq Created Followers Friends \\\n", "FullName \n", "Nicholas Jitkoff 8 Jan-2007 4605 204 \n", "John Maeda 8 Jul-2008 439273 21724 \n", "Joshua Porter 7 Mar-2007 33903 817 \n", "Khoi Vinh 7 Dec-2006 347073 2347 \n", "Brett Lider 7 Dec-2008 6953 947 \n", "Margaret Stewart 7 Mar-2007 12846 862 \n", "Paul Stamatiou 📷 7 Jan-2007 33711 599 \n", "GV Design 7 Aug-2011 17799 515 \n", "Marc Hemeon 6 Jan-2009 16957 3322 \n", "Michael Leggett 6 Mar-2007 7999 209 \n", "M.G. Siegler 6 Jan-2007 190837 996 \n", "Jenna Bilotta 6 Apr-2009 12558 287 \n", "Noah Levin 6 Nov-2008 5295 848 \n", "Geoff Teehan 6 Oct-2008 22642 810 \n", "Jonathan Lee 6 Apr-2009 2771 610 \n", "Google 6 Feb-2009 18020558 204 \n", "Paul Adams 6 Jan-2007 22637 387 \n", "dustin senos 6 Sep-2006 11846 721 \n", "Doug Bowman 6 Mar-2007 232398 500 \n", "Katie Dill 6 Apr-2009 4751 413 \n", "\n", " Location UserName \n", "FullName \n", "Nicholas Jitkoff Palo Alto, CA alcor \n", "John Maeda WordPressLandia johnmaeda \n", "Joshua Porter Newburyport, MA bokardo \n", "Khoi Vinh New York, NY khoi \n", "Brett Lider San Francisco, California bl \n", "Margaret Stewart Bay Area, CA mags \n", "Paul Stamatiou 📷 San Francisco, CA Stammy \n", "GV Design San Francisco, CA GVDesignTeam \n", "Marc Hemeon Southern California hemeon \n", "Michael Leggett Seattle leggett \n", "M.G. Siegler San Francisco, CA mgsiegler \n", "Jenna Bilotta San Francisco, CA jenna \n", "Noah Levin New York, NY nlevin \n", "Geoff Teehan Palo Alto, CA gt \n", "Jonathan Lee hifromjonathan \n", "Google Mountain View, CA Google \n", "Paul Adams Dublin Padday \n", "dustin senos West Coast dustin \n", "Doug Bowman San Diego stop \n", "Katie Dill San Francisco lil_dill " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "discover_Friends_toFollow(ids_of_interest = list(results_df [results_df['spectral'] == 9].index), \n", " friend_list = index, \n", " prop = 1, count = 20).fillna('').set_index('FullName') " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 1 }