Skip to content

Instantly share code, notes, and snippets.

@Saurabh7
Created August 15, 2017 08:49
Show Gist options
  • Save Saurabh7/9cbf52f7a198fd5a0f0368cd872f7ada to your computer and use it in GitHub Desktop.
Save Saurabh7/9cbf52f7a198fd5a0f0368cd872f7ada to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<script>jQuery(function() {if (jQuery(\"body.notebook_app\").length == 0) { jQuery(\".input_area\").toggle(); jQuery(\".prompt\").toggle();}});</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<button onclick=\"jQuery('.input_area').toggle(); jQuery('.prompt').toggle();\">Toggle code</button>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import IPython.core.display as di\n",
"\n",
"# This line will hide code by default when the notebook is exported as HTML\n",
"di.display_html('<script>jQuery(function() {if (jQuery(\"body.notebook_app\").length == 0) { jQuery(\".input_area\").toggle(); jQuery(\".prompt\").toggle();}});</script>', raw=True)\n",
"\n",
"# This line will add a button to toggle visibility of code blocks, for use with the HTML export version\n",
"di.display_html('''<button onclick=\"jQuery('.input_area').toggle(); jQuery('.prompt').toggle();\">Toggle code</button>''', raw=True)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.display import display, HTML\n",
"from itertools import combinations, product\n",
"import pandas as pd\n",
"import json\n",
"from jarvis.brain.insights.paths import path_pipeline as pp"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import importlib\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Multiple metrics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Definition:\n",
"\n",
"Extension of single metric path analysis.\n",
"\n",
"- Positive set definition is now union of two separate conditions.\n",
"\n",
"- Ads satisfying condition:\n",
" \n",
"$$\n",
"\\left ( \\left | \\text{goal metric}_1 - \\text{overall}_1 \\right | / \\text{overall}_1 > \\text{threshold}_1 \\right ) \\mathbf{or} \\left ( \\left | \\text{goal metric}_2 - \\text{overall}_2 \\right | / \\text{overall}_2 > \\text{threshold}_2 \\right )\n",
"$$ \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"account_ids = {'facebook': [261, 260]}#{'adwords': [1]} #,\n",
"date_range = {'start': '2017-07-01', 'end': '2017-07-31'}\n",
"goal_metric = [{'value': 'ga_fb_cpv',\n",
" 'base_metrics': {'numerator': 'fb_spend',\n",
" 'denominator': 'ga_visits'},\n",
" 'diff': -1},\n",
" {'value': 'ga_cvr',\n",
" 'base_metrics': {'numerator': 'ga_transactions',\n",
" 'denominator': 'ga_visits'},\n",
" 'diff': 1,\n",
" 'percentage': True}] \n",
"\n",
"args = {}\n",
"args['account_ids'] = account_ids\n",
"args['dimensions'] = None\n",
"args['tag_list'] = [\"Adsets\",\"Audience Types\",\"Behaviors\",\n",
" \"Custom Audiences\",\"Image\",\"Interests\",\"Lookalike Types\",\"Product Category\"]\n",
"args['goal'] = None\n",
"args['num_trees'] = 1\n",
"args['staging'] = None\n",
"args['filters'] = [{\"operator\":\"$nin\",\"dimension\":\"custom_tags.Campaigns.metadata.name\",\"value\":[\"International_1\",\"AdWyze - DPA\"]},{\"operator\":\"$in\",\"dimension\":\"custom_tags.Sale Campaign.name\",\"value\":[\"non-sale\"]}]\n",
"args['start_date'] = date_range['start']\n",
"args['end_date'] = date_range['end'] \n",
"args['goal_metric'] = goal_metric\n",
"args['num_results'] = 20\n",
"args['imp_factor'] = 8\n",
"args['spend_metric'] = None\n",
"args['target_value'] = None\n",
"path_pipeline = pp.PathPipeline(args)\n",
"df, tag_list, spend = path_pipeline.pre_process()\n",
"data = path_pipeline.execute()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for metric in goal_metric:\n",
" df[metric['value']] = df[metric['base_metrics']['numerator']] / df[metric['base_metrics']['denominator']]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model = path_pipeline.path_model"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"binwidth=0.01"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from matplotlib.pyplot import hist\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as ticker"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data1 = []\n",
"data2 = []\n",
"dff= df[(df[path_model.goal_metrics[0]] != pd.np.inf) & (df[path_model.goal_metrics[1]] != pd.np.inf)]\n",
"for idx in range(len(dff)):\n",
" data1 += [dff[path_model.goal_metrics[0]].iloc[idx]]*int(dff[path_model.spend].iloc[idx])\n",
"for idx in range(len(dff)):\n",
" data2 += [dff[path_model.goal_metrics[1]].iloc[idx]]*int(dff[path_model.spend].iloc[idx]) "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bins1 = pd.np.linspace((min(dff[path_model.goal_metrics[0]])),\n",
" (pd.np.percentile(data1, 95)), 30)\n",
"bins2 = pd.np.linspace((min(dff[path_model.goal_metrics[1]])),\n",
" (pd.np.percentile(data2, 95)), 30)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ths = path_model.check_threshold\n",
"t0 = ths[path_model.goal_metrics[0]]\n",
"t1 = ths[path_model.goal_metrics[1]]\n",
"overall0 = path_model.overall_goal_metric[path_model.goal_metrics[0]]\n",
"overall1 = path_model.overall_goal_metric[path_model.goal_metrics[1]]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from bisect import bisect\n",
"avg0 = bisect(bins1, path_model.overall_goal_metric[path_model.goal_metrics[0]])\n",
"avg1 = bisect(bins2, path_model.overall_goal_metric[path_model.goal_metrics[1]])\n",
"ths00 = bisect(bins1, overall0 + t0*overall0)\n",
"ths01 = bisect(bins1, overall0 - t0*overall0)\n",
"ths10 = bisect(bins2, overall1 + t1*overall1)\n",
"ths11 = bisect(bins2, overall1 - t1*overall1)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dff['bins {0}'.format(path_model.goal_metrics[0])] = pd.cut(dff[path_model.goal_metrics[0]], bins1)\n",
"dff['bins {0}'.format(path_model.goal_metrics[1])] = pd.cut(dff[path_model.goal_metrics[1]], bins2)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df1 = dff.pivot_table(index='bins {0}'.format(path_model.goal_metrics[0]), columns='bins {0}'.format(path_model.goal_metrics[1]), values='fb_spend', aggfunc=pd.np.sum)\n",
"df1.fillna(0,inplace=True)\n",
"df1.replace(pd.np.nan, 0, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- Positive set here is area outside of the center box.\n",
"- Intensity of color is spend."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# s1 = df[ ( df.ga_fb_cpv < overall0 - t0*overall0 ) | (df.ga_fb_cpv > overall0 + t0*overall0) ].fb_spend.sum()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f33e5017cc0>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ndOjQAYBVq1axZMkS3njjDbbZZhv69OlDt27dePLJJxkzZgzDhg0ra9+1a1fuuOMOdt553V2/5syZ\nA1Auobr33nt5/PHHef755+natStLly6lTZs2RASbbropjRs35qOPPqJXr8wi8h9++GFZ2y5durD7\n7ruXTTetqhYtWvDzn/+cm2++mdmzZ69zvqJ7mDt3bmqfFY3EdunShTFjvu321Vab6tPUzdrkZNDM\nzDZIp/5imxrr+6b736i8ktUbF985o9Ah1KhHHnmExo0bM2PGDJo0aVJWPnjwYEaNGsW1114LZEYH\nb7jhBiZPnlxuCulJJ53EBRdcwKhRo+jatSufffYZL7/8MgcccACw7ojnsmXLaNasGW3atOHLL7/k\n/PPPL0usioqKOOSQQ7j00ku59dZbmTNnDqNHj6Zbt24A7Lfffpx//vncfffdDBkyhIhgxowZtGrV\niq233rrC+7zyyiv55S9/mTqiV9E9bLrpphQVFfHBBx/wve99r0qf6X777cfZZ5/NDTfcwMknn8yq\nVat466232GGHHarU3qyucI5sZmZmtgEbPXo0xx13HJ06dWKzzTYre5166qnce++9Zc/+DRkyhBde\neIE999yzbJomwBlnnMGBBx7IPvvsQ+vWrdlll12YMmVK2fncEbSjjz6arl270qlTJ37wgx+wyy67\nlDt/4403smTJEjp06MDw4cMZNmxY2TN5rVq1YsKECdx333107NiRjh07ct5557Fq1SrSZF97iy22\nKHet7HMV3UOLFi248MIL+dGPfkTbtm3L3Vs+rVq14plnnmHcuHFsscUWbLXVVkyaNKnSdlY4XkAm\nnbyuy4ZHv9rJ39QUcfMr6OQdK69oDdvNr4B/TjYINT0y6L9TrJybXynoM4H12Xnnnccnn3zCnXfe\nWehQrAKSUv99jL9NrlM7BuTzVNvetfoH9GeLZtWLz8XTRM3MzMys1syaNYtVq1axzTbbMGXKFG6/\n/XbuuOOOQodlG7j6NFpXm5wMmpmZmVmtWbZsGUOHDmXBggVsttlm/Pa3v2X//fcvdFhmDZKTQTMz\nMzOrNT/84Q957733Ch2GNTAeGUxXsI9FUnNJk5Q83StpvKTFksbl1HtR0lRJ0yTNkzQ2pa/dk/Ol\n9VZIOqCi9pI2kTRW0gxJkyX1rULMp0p6T9JqSW2zyosljZM0XdIbko6ppJ9xkl7POr4siWOapKck\nbZGU/ybrvt6Q9E0Sd/OkfGV2HGZmZmZmZlVVyJHB44CHY+3T1tcALYGTsitFxK6l7yU9BDya21FE\nTAL6JXXaAO8BE/K0fyQ5vACYFhGHSOoN3ATsVUnM/wQeBybllJ8KzIyIAyS1B2ZJujsivsntQNLB\nQElO8TURcXFy/tfAJcCvIuJa4NqkfD/gzIhYkrTpJ2ndjXTMzMzMzKwcjwymK+THcgTwWOlBREwE\nvshXWdLGwB6kJIM5DgPGR8TKStr3BZ5Lrj0L2FLSphV1HBEzImIukLs6UAAbJ+83Bj7PkwhuBIwA\nLs/pN/u+NwLWpFx+KJC7u2m9WKXIzMzMzMzqnoKMDEpqAnRPEquqOgh4NidxSjMEuK6C9l8mxzOA\nQ4D/J2kHoCvQGfisGjGV+gswTtJ8oBXwizz1fkdmpG9F7glJlwNHA0uAn+ScawH8jMwIpJmZmZmZ\nVUPufpiWUaiRwfZkkp7qSBsZKyd51u4HwNNVaH8V0FbSVDJJ1jRgndG8KvopmSmnHclMV71JUquc\n2LYDekXEODIjeuV+IiPioojoCtwD/Dqn//2Bf2ZNEa3YvBJ49aO1r3m5s1LNzMzMzKyhK1QyuAJo\nXtXKySIpA4EnKqk6GHgkIlZX1j4ilkXEcRHRPyKGA5sB/6liSLmbVh4LjE36/SDpZ+ucOjsD/ZPn\n/F4CtpL0fErfY4BDc8qGUEkiXE6nYhjYee2rU3GVm5qZmVnDMnLkSI466qgav86cOXMoKipizZq0\np2Eq9sILL9ClS5e854899lguvvjibxPed+Jvf/sbW2yxBcXFxSxevJh//etfbLXVVhQXFzNu3LjK\nO6iiyj4Ps6oqSDKYjHA1ktQ059Q6I2aJwcA/ImJVJV3nGz1cp72k1sl0VST9EnihdAqqpGcldajg\nOrlxziFZfEbS5sBWQLnFXSLi5ojoHBE9gEHArIjYI2nTK6vqgcDb2XECu5H1fKWZmZlZVW288cYU\nFxdTXFxMo0aNaNmyZVnZmDGZ/zbV1hS6b3Od2p7mV92E65tvvuHss8/m2WefpaSkhDZt2nDJJZdw\n+umnU1JSwgEHHPCdxudpj9VTVFS7r/qikKFOIJMUAZktIID7gT0kzZW0d1bdweQkeZIGSLol67gb\n0DkiXki51jrtgT7ATElvkZnmeUbSj4CewKLcTiT9WtKHQCdgRtb1Lwd2SbaLeAY4JyIWJW2mVvwx\nAHCVpNclTSeTVJ6Rde4g4OmIWOc5QzMzM7PKLFu2jJKSEkpKSujWrRtPPPFEWdnQoUOr1dfq1asr\nr7SBiIhqJVwff/wxX331FX369CkrmzNnDn37Vrp7mVnBFDIZvAkYXnoQEbtGxOYRsVFEdI2IZ7LO\n7RERE7IbR8RrEXFi1vGciEj99U2e9pMjYquI6BsRh0XE0uRUXzJbXnyV0s+NEdElIpomo3wnJuUL\nIuKnEbFt8hqT1aZ/Sj9zImLbrOPDknbbR8SBEbEg69yoiBiWdl9mZmZm1RERrN3Va62vvvqK4cOH\nU1xczDbbbMPUqWt/l929e3euueYatttuO1q1asWaNWtYsGABhx12GJttthk9e/bkxhtvLKv/6quv\nMnDgQFq3bk2HDh34zW9+U+76d999N926dWOzzTbj97//fdm5VatWceaZZ9KpUyc6d+7MiBEj+Prr\nr1PvY9q0aQwYMIDWrVszZMgQVq5cmVqv1K233krfvn0pLi7mBz/4AdOnTwegqKiI2bPXTuYqnW66\nfPly9t13X+bPn182ivrxxx/njfG9995j660zTwi1adOGvfbai169ejF79mz2228/iouL17mXq6++\nmsMPP7xc2RlnnMGZZ54JwF133VUWc69evbjlllvIJ999lPrHP/5Bv379aNOmDYMGDeKNN94oF0fn\nzp0pLi6mT58+TJw4scLPsr7yyGC6goUaEdOBiapjY9wRMTMiflN5zcIp3XQeaET6NhRmZmZmVfb4\n448zbNgwli5dyv7778+pp5ZfwPy+++5j/PjxLFmyBEnsv//+9OvXjwULFvDcc8/x5z//mWeeyfwe\nvzShWbp0KR988AGDBw8u19e//vUv3nvvPZ599lkuu+wyZs2aBcDll1/OlClTeP3115kxYwZTpkzh\n8svL7cYFwNdff83BBx/M8OHDWbRoEYcffjgPP/xw3nt78MEHueyyy7j77rspKSlh3LhxtGvXDsg/\n1bJly5aMHz+ejh07lo2ibrHFFnlj/N73vsfMmTMBWLp0Kc8++yzvv/8+Xbt25YknnqCkpIQmTZqU\nu8bQoUMZP348X3yRWSh/zZo1PPjggxxxxBEAbL755jz55JOUlJRw5513MmLEiLIkNldF/52eOnUq\nxx9/PLfeeiuLFi3ipJNO4oADDuDrr7/m3Xff5aabbuK1116jpKSEp59+mi233DJvX7bhKWjeGhF3\nRdqvp6xCEbEyIvolI6jVXZXVzMzMCkH69q8aMmjQIH76058iiaOOOorXX3+93PkzzjiDjh070qxZ\nM1599VUWLlzIhRdeSKNGjdhyyy054YQTuO+++wBo0qQJ77//Pp9//jktW7Zkhx12yPoIxKWXXkrT\npk3Zdttt2W677ZgxYwYA9957L5dccgnt2rWjXbt2XHLJJfz9739fJ9aXX36Zb775htNPP51GjRpx\n6KGHMnDgwLz3dvvtt3POOefQv39mslaPHj3KngWs7n9D02IcPXp0ub5y+8x3ja5du9K/f38efTSz\nBfZzzz3HRhttVHYvP//5z8sSsx//+Mfss88+vPTSS6l9VXQft912GyeffDI//OEPy76/zZo1Y/Lk\nyTRq1IhVq1bx5ptv8s0339C1a1e6d+9e9Q+kHvHIYLp6FKqZmZlZPRbx7V81ZIsttih737JlS1au\nXFlu1c/OnTuXvZ8zZw7z5s2jbdu2tG3bljZt2nDllVfy6aefAnDHHXcwa9Ystt56a3bccUeeeKL8\nYvCbb755uWuVjozNnz+frl27lp3r1q0b8+fPXyfWBQsW0KlTp3Jl3bp1y3tvH374IT179qzw/qsq\nLcYFCzJP96zPZLehQ4eWLeIzZswYhg1b+2TQ+PHj2XnnnWnXrh1t2rRh/PjxLFy4sNrXmDNnDtdd\nd12579dHH33E/Pnz6dmzJ9dffz2XXnopm2++OcOGDSu7H2sYnAyamZmZWYWyE50uXbrQo0cPFi1a\nxKJFi1i8eDFLly7l8ccfB6Bnz57ce++9fPbZZ5xzzjkcdthhrFhR+Tp4HTt2ZM6cOWXHc+bMoWPH\njuvU69ChA/PmzStXNnfu3Lz9dunShQ8++CD1XMuWLVm+fHnZ8ccff1z2Pi2569SpU5VirKrDDz+c\nSZMmMW/ePB555JGyZHDVqlUcdthhnHPOOXz22WcsXryYn//853lHACu6jy5dunDhhReW+3598cUX\n/OIXvwBgyJAhvPTSS2X3dd555633/dRlHhlMV49CNTMzM7PaUNG0wx122IHi4mKuueYaVq5cyerV\nq5k5cyb//ve/AbjnnnvKRrBat26NJBo1alRpv0OHDuXyyy9n4cKFLFy4kN/97nep+x/uvPPONG7c\nmBtvvJHVq1czduxYpkyZkrffE044gWuvvbZsUZwPPviADz/8EIB+/fpx7733smbNGp566ileeGHt\n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\nYO/unpd2mjMIcDpwJDDO9jXAqEaZbB9Ws/0T4CcN8lxGGbLZ4NhxwHENDo0q5++U7RPq9t9fs/0M\n8IFOyn2uQdq/gTd1db6IiIiIiGgfktanunzcjcCaHVcxsP2YpNeXbPULTM4saZ0tPDmi5KnP36W2\nagzanlJW/pTtfl+nx/ZB3efqH5LOp+pi/t1A1yUiIiIiYnHW6usMzpz8CDOnPPrKvt6pXWxPqM8n\naUXgEuCLtp+T1FnN6heYFOAG6XST3qW2agwC1AzzHNRsHzDQdYiIiIiICBi51dqM3GrtV/ZvGj1p\nQn0eSUtTNQR/bXtMSX5c0pplvZC1qK4gAJ0vMDkT2KUufXwX+bvUbnMGIyIiIiIiFslAzxkszgbu\ntP3jmrQrgEPK9iHAmJr01ywwCVwN7CZp5bKYzG7A1eXqCnMkbafqWncH1cTqVNv1DEZERERERLQT\nSe8A9gduLwtYGvgq1QKTF0s6FJgB/BdUC0xKel9ZYPJ54BMl/WlJ3wZuKTFO6FgEk2oRytFUl+P7\nk+0/d1uvAZh6Fy32zbeN9DdvnTXQ1YhoSx0D8iMiIqIH7EZz1RY7n5twWL/+e//pLme1xfOSnsEl\n0AnbjuSEbUe2JPYKa6zQkrgAv9h/s5bF3v/UW/GZN6FPv71l52iFC858umWx9//0qi2L3dbOvIml\nv/AfLQm9YF7rrgzjVs+Mj9dox8+UVtJSrfvek7/viMVXu7w7F6QDrKHMGYyIiIiIiBiE0jMYERER\nERFLtC4WdRnU0jMYERERERExCKVnMCIiIiIilmjzM2ewobbqGZS0rKQJqqwr6RZJkyTdLunwTsqc\nIukuSVMkXSppWEkfKulsSbdJmizpnSV9OUl/LGVul3RiD+q1bYnRcdu7k3y7Srq1nPMcSUuV9HdK\nml0eyyRJX6sp8ytJj0u6rcHjelTSUT1/BiMiIiIiIipt1RgEDgUudXU9jEeAHWxvDbwdOF7SWg3K\njAXeZPutwL3AV0r6YYBtbwm8B/hBTZn/tb05sBWwo6Tdu6nX7cA2trcC3gv8vKOh16Fc/HE0sG85\n50PAwTVZrrO9dbl9pyb9HOA157d9LPCzbuoVERERETHozV/Qv7d20W6Nwf2BMQC259meW9KXo7o8\n2GvYvsZ2x0tyI9BxzYUtgL+WPE8AsyW9zfaLtq/tOAcwqaZMQ7ZfqjnHckCjP4HVgZds31f2rwH2\n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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f33e4de2cf8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"fig, ax = plt.subplots(figsize=(15,10)) # Sample figsize in inches\n",
"ax = sns.heatmap(df1, cmap=\"RdYlGn_r\")\n",
"ax.invert_yaxis()\n",
"ax.hlines(avg0, *ax.get_xlim(), label='Average Metric')\n",
"ax.hlines(ths00, *ax.get_xlim(), colors='red', label='Threshold cutoff values')\n",
"ax.hlines(ths01, *ax.get_xlim(), colors='red')\n",
"ax.vlines(ths10, *ax.get_ylim(), colors='red')\n",
"ax.vlines(ths11, *ax.get_ylim(), colors='red')\n",
"ax.vlines(avg1, *ax.get_ylim())\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_1 = {key: value for (key, value) in enumerate(data['q0'])}\n",
"data_2 = {key: value for (key, value) in enumerate(data['q1'])}\n",
"data_3 = {key: value for (key, value) in enumerate(data['q2'])}\n",
"data_4 = {key: value for (key, value) in enumerate(data['q3'])}\n",
"\n",
"df_1 = pd.DataFrame().from_dict(data_1, orient='index')\n",
"df_2 = pd.DataFrame().from_dict(data_2, orient='index')\n",
"df_3 = pd.DataFrame().from_dict(data_3, orient='index')\n",
"df_4 = pd.DataFrame().from_dict(data_4, orient='index')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from bokeh.charts import Scatter, output_file, show\n",
"from bokeh.io import output_notebook, push_notebook\n",
"from bokeh.plotting import figure, ColumnDataSource\n",
"from bokeh.models import HoverTool\n",
"from bokeh.models.widgets.tables import DataTable, TableColumn\n",
"from bokeh.models import Span"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"dfbecc43-ae2e-4312-88ce-96748215f73d\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 5000;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"dfbecc43-ae2e-4312-88ce-96748215f73d\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"dfbecc43-ae2e-4312-88ce-96748215f73d\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'dfbecc43-ae2e-4312-88ce-96748215f73d' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.6.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.6.min.js\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" document.getElementById(\"dfbecc43-ae2e-4312-88ce-96748215f73d\").textContent = \"BokehJS is loading...\";\n",
" },\n",
" function(Bokeh) {\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.6.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.6.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.6.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.6.min.css\");\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"dfbecc43-ae2e-4312-88ce-96748215f73d\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(this));"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"output_notebook()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Based on the positive set definition, evaluation metrics of whole result (top 20 paths ) are:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Precision: 0.912\n",
"Recall: 0.453\n",
"MCC: 0.519\n"
]
}
],
"source": [
"print('Precision:', data['precision'])\n",
"print('Recall:', data['recall'])\n",
"print('MCC:', data['mcc'])"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"2ffbabe6-4c66-4d90-baa1-c3eb2f7d99a6\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"2ffbabe6-4c66-4d90-baa1-c3eb2f7d99a6\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"cbb08a2c-e90c-4b2f-a5a6-734a09cd4a87\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"2ffbabe6-4c66-4d90-baa1-c3eb2f7d99a6\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2ffbabe6-4c66-4d90-baa1-c3eb2f7d99a6' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"58941a57-aba9-447b-95d1-654a4d906bbe\":{\"roots\":{\"references\":[{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"ga_fb_cpv\"},\"y\":{\"field\":\"ga_cvr\"}},\"id\":\"fd26adcd-8dfd-4618-bd49-6f24f77b161f\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"b1ca805d-b927-4953-adb5-757938815772\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_color\":{\"value\":\"red\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"ga_fb_cpv\"},\"y\":{\"field\":\"ga_cvr\"}},\"id\":\"2b5eaa02-7ac1-44aa-94d0-3aaa012df4fc\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"lvl 0:\",\"@level_0\"],[\"lvl 1:\",\"@level_1\"],[\"lvl 2:\",\"@level_2\"],[\"lvl 3:\",\"@level_3\"],[\"ga_fb_cpv\",\"@ga_fb_cpv\"],[\"ga_cvr\",\"@ga_cvr\"],[\"Precision\",\"@precision\"],[\"Recall\",\"@recall\"],[\"mcc\",\"@imp_factor\"],[\"Spend Prop\",\"@spend_prop\"]]},\"id\":\"138a307c-d622-4066-aa96-3f6bac4b81fd\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"6e0b4696-2321-448d-83b0-56feed4a0ad9\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"92222454-1d9b-4678-af91-1596a10a8e18\",\"type\":\"ToolEvents\"},{\"attributes\":{\"axis_label\":\"ga_cvr\",\"formatter\":{\"id\":\"69154ae4-bf8b-4952-89cc-8ab1fa2e7c26\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c8035fae-26e5-492a-abdf-b1b1af292af0\",\"type\":\"BasicTicker\"}},\"id\":\"dbad4911-56c1-468c-b05c-329042bee2fe\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"26b6f368-0e06-4f4b-8ba7-42c3ed7ba7b5\",\"type\":\"BasicTicker\"}},\"id\":\"a89f19dd-caa6-47c1-9cfc-500f2c828285\",\"type\":\"Grid\"},{\"attributes\":{\"dimension\":\"height\",\"line_width\":{\"value\":3},\"location\":7.427565604551276,\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d6337160-5619-4845-841d-3a4e4b304146\",\"type\":\"Span\"},{\"attributes\":{\"fill_color\":{\"value\":\"blue\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"ga_fb_cpv\"},\"y\":{\"field\":\"ga_cvr\"}},\"id\":\"e417507b-abcf-45bb-9728-52b8a08934b7\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"69154ae4-bf8b-4952-89cc-8ab1fa2e7c26\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"Performance by paths.\"},\"id\":\"c79b5a05-48c6-4539-a235-c7e19a2e09a8\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"ga_fb_cpv\",\"formatter\":{\"id\":\"2878012b-3381-4ac1-b28a-07eeb26acfec\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"26b6f368-0e06-4f4b-8ba7-42c3ed7ba7b5\",\"type\":\"BasicTicker\"}},\"id\":\"33c61b20-c33a-4f6e-9909-f868fd9a7c77\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5eedbafe-bd8e-4cda-b7aa-9192b89afdad\",\"type\":\"LinearScale\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c8035fae-26e5-492a-abdf-b1b1af292af0\",\"type\":\"BasicTicker\"}},\"id\":\"e47f1c8b-3556-4657-83be-cfde3cb22acb\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"index\",\"level_2\",\"precision\",\"ga_cvr\",\"level_0\",\"ga_fb_cpv\",\"imp_factor\",\"idx\",\"level_3\",\"levels\",\"level_1\",\"size\",\"recall\",\"spend_prop\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"KVyPwvUovD+kcD0K16PAPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"ga_fb_cpv\":{\"__ndarray__\":\"CtejcD0KC0AUrkfhehQVQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"idx\":[0,1],\"imp_factor\":{\"__ndarray__\":\"z/dT46WbxD/n+6nx0k3CPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"index\":[0,1],\"level_0\":[\"Lookalike Types : 1-2%\",\"Product Category : Indya\"],\"level_1\":[\"Image : 929fad92512d28811db7633c516e0d1c\",\"Audience Types : Interests\"],\"level_2\":[\"- : -\",\"Interests : Education or Higher education or Hotels or Travel or University\"],\"level_3\":[\"- : -\",\"Image : 929fad92512d28811db7633c516e0d1c\"],\"levels\":[[{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}],[{\"Product Category\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Interests\":{\"name\":\"Education or Higher education or Hotels or Travel or University\",\"value\":\"Education or Higher education or Hotels or Travel or University\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"recall\":{\"__ndarray__\":\"ukkMAiuHpj/sUbgeheuhPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"size\":{\"__ndarray__\":\"AAAAAAAANEDJ4TLgk8MxQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"spend_prop\":{\"__ndarray__\":\"PQrXo3A9/j/Xo3A9Ctf3Pw==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"1466578b-eff1-44b4-bed3-c594ee3bf1c4\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1466578b-eff1-44b4-bed3-c594ee3bf1c4\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"e417507b-abcf-45bb-9728-52b8a08934b7\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"fd26adcd-8dfd-4618-bd49-6f24f77b161f\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"33c4a564-7e6b-414f-92f5-5e8773b0f7da\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"43da6cba-a944-4416-980e-12eb81bbf44c\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"c8035fae-26e5-492a-abdf-b1b1af292af0\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2878012b-3381-4ac1-b28a-07eeb26acfec\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data_source\":{\"id\":\"23aa969f-100d-4c98-8989-9c9e8a3663ce\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"2b5eaa02-7ac1-44aa-94d0-3aaa012df4fc\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"e5860cb3-6281-4298-80a7-c95b52901a8b\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"31cdb86b-f5eb-44e1-b2fc-baf86c30c202\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"138a307c-d622-4066-aa96-3f6bac4b81fd\",\"type\":\"HoverTool\"}]},\"id\":\"9c0d7781-9de1-45d8-bbdd-d78b61c75ca8\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"26b6f368-0e06-4f4b-8ba7-42c3ed7ba7b5\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"ga_fb_cpv\"},\"y\":{\"field\":\"ga_cvr\"}},\"id\":\"e5860cb3-6281-4298-80a7-c95b52901a8b\",\"type\":\"Circle\"},{\"attributes\":{\"below\":[{\"id\":\"33c61b20-c33a-4f6e-9909-f868fd9a7c77\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"dbad4911-56c1-468c-b05c-329042bee2fe\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"plot_width\":800,\"renderers\":[{\"id\":\"33c61b20-c33a-4f6e-9909-f868fd9a7c77\",\"type\":\"LinearAxis\"},{\"id\":\"a89f19dd-caa6-47c1-9cfc-500f2c828285\",\"type\":\"Grid\"},{\"id\":\"dbad4911-56c1-468c-b05c-329042bee2fe\",\"type\":\"LinearAxis\"},{\"id\":\"e47f1c8b-3556-4657-83be-cfde3cb22acb\",\"type\":\"Grid\"},{\"id\":\"31cdb86b-f5eb-44e1-b2fc-baf86c30c202\",\"type\":\"GlyphRenderer\"},{\"id\":\"33c4a564-7e6b-414f-92f5-5e8773b0f7da\",\"type\":\"GlyphRenderer\"},{\"id\":\"4c1911f8-83b7-455c-928c-95a3e2a4e45b\",\"type\":\"Span\"},{\"id\":\"d6337160-5619-4845-841d-3a4e4b304146\",\"type\":\"Span\"}],\"title\":{\"id\":\"c79b5a05-48c6-4539-a235-c7e19a2e09a8\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"92222454-1d9b-4678-af91-1596a10a8e18\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"9c0d7781-9de1-45d8-bbdd-d78b61c75ca8\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"b1ca805d-b927-4953-adb5-757938815772\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"5eedbafe-bd8e-4cda-b7aa-9192b89afdad\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"43da6cba-a944-4416-980e-12eb81bbf44c\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"6e0b4696-2321-448d-83b0-56feed4a0ad9\",\"type\":\"LinearScale\"}},\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"index\",\"level_2\",\"precision\",\"ga_cvr\",\"level_0\",\"ga_fb_cpv\",\"imp_factor\",\"idx\",\"level_3\",\"levels\",\"level_1\",\"size\",\"recall\",\"spend_prop\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"FK5H4XoU8j/NzMzMzMzwP8P1KFyPwu0/hetRuB6F8z+4HoXrUbj6P3E9CtejcPE/MzMzMzMz6z9SuB6F61H4P83MzMzMzPA/16NwPQrX6z8=\",\"dtype\":\"float64\",\"shape\":[10]},\"ga_fb_cpv\":{\"__ndarray__\":\"uB6F61G4KUA9CtejcD0rQB+F61G4nitAzczMzMzMLkAK16NwPYorQJqZmZmZGTNAAAAAAACAKEA9CtejcH03QClcj8L1qC1AKVyPwvVoMEA=\",\"dtype\":\"float64\",\"shape\":[10]},\"idx\":[0,1,2,3,4,5,6,7,8,9],\"imp_factor\":{\"__ndarray__\":\"dr6fGi/d6D8AAAAAAADoP46XbhKDwOI/aJHtfD814j/TTWIQWDncP8/3U+Olm9Q/0SLb+X5q1D+QwvUoXI/SP+bQItv5ftI/mG4Sg8DK0T8=\",\"dtype\":\"float64\",\"shape\":[10]},\"index\":[0,1,2,3,4,5,6,7,8,9],\"level_0\":[\"Adsets : 365573\",\"Audience Types : Custom, Lookalike\",\"Product Category : Tops\",\"Custom Audiences : Top 5% time spent users\",\"Product Category : Tops\",\"Product Category : Multi Category\",\"Product Category : Multi Category\",\"Product Category : Multi Category\",\"Product Category : Multi Category\",\"Product Category : Tops\"],\"level_1\":[\"- : -\",\"- : -\",\"Audience Types : Custom, Lookalike\",\"- : -\",\"Audience Types : Custom, Lookalike\",\"Custom Audiences : Top 5% time spent users\",\"- : -\",\"Adsets : 1281865\",\"Custom Audiences : Top 5% time spent users\",\"Audience Types : Lookalike\"],\"level_2\":[\"- : -\",\"- : -\",\"Image : 7f1042fde8334ec2dd104327a0785072\",\"- : -\",\"Image : 8e80ca4004a11babf741919a17c68eb7\",\"Image : 3f4f09d731948fe27527d91db3a86650\",\"- : -\",\"Image : eadca27cf0164403845948e0aef48c44\",\"Image : 59c79be31fec69300645fa54ff541dc9\",\"Custom Audiences : Lookalike (IN, 1%) - Email_ordered_more_than_twice\"],\"level_3\":[\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"Image : 1df469643da69e293445deb2d3dc2fca\"],\"levels\":[[{\"Adsets\":{\"name\":\"Email Data base\",\"value\":\"365573\"}}],[{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}},{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"Custom Audiences\":{\"name\":\"Top 5% time spent users\",\"value\":\"Top 5% time spent users\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}},{\"Custom Audiences\":{\"name\":\"Top 5% time spent users\",\"value\":\"Top 5% time spent users\"}},{\"Image\":{\"name\":\"3f4f09d731948fe27527d91db3a86650\",\"value\":\"3f4f09d731948fe27527d91db3a86650\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}},{\"Adsets\":{\"name\":\"TimeSpent-5%\",\"value\":\"1281865\"}},{\"Image\":{\"name\":\"eadca27cf0164403845948e0aef48c44\",\"value\":\"eadca27cf0164403845948e0aef48c44\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}},{\"Custom Audiences\":{\"name\":\"Top 5% time spent users\",\"value\":\"Top 5% time spent users\"}},{\"Image\":{\"name\":\"59c79be31fec69300645fa54ff541dc9\",\"value\":\"59c79be31fec69300645fa54ff541dc9\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Custom Audiences\":{\"name\":\"Lookalike (IN, 1%) - Email_ordered_more_than_twice\",\"value\":\"Lookalike (IN, 1%) - Email_ordered_more_than_twice\"}},{\"Image\":{\"name\":\"1df469643da69e293445deb2d3dc2fca\",\"value\":\"1df469643da69e293445deb2d3dc2fca\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D/n+6nx0k3qPwAAAAAAAPA/Di2yne+n7j8AAAAAAADwPwAAAAAAAPA/EFg5tMh24j8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8=\",\"dtype\":\"float64\",\"shape\":[10]},\"recall\":{\"__ndarray__\":\"QmDl0CLb0T+TGARWDi3SP1CNl24Sg8A/arx0kxgExj8zMzMzMzOzP8uhRbbz/aQ/iUFg5dAiyz9MN4lBYOWgP0w3iUFg5aA/uB6F61G4nj8=\",\"dtype\":\"float64\",\"shape\":[10]},\"size\":{\"__ndarray__\":\"AAAAAAAANEDitMO+FU4zQLDi0NbUKi5ArVTHS8pKLUA/6wZT5LMmQDoJxIWakyBAwobvIRFsIEC+3ScPwtsdQBjcRHdmwR1A+cmD8HafHEA=\",\"dtype\":\"float64\",\"shape\":[10]},\"spend_prop\":{\"__ndarray__\":\"pHA9CtejJ0BSuB6F61EtQPYoXI/C9RVAmpmZmZmZHkBxPQrXo3AJQK5H4XoUrvs/w/UoXI9CL0BmZmZmZmb2Pz0K16NwPfY/pHA9Ctej9D8=\",\"dtype\":\"float64\",\"shape\":[10]}}},\"id\":\"23aa969f-100d-4c98-8989-9c9e8a3663ce\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_width\":{\"value\":3},\"location\":0.45535292662634075,\"plot\":{\"id\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4c1911f8-83b7-455c-928c-95a3e2a4e45b\",\"type\":\"Span\"}],\"root_ids\":[\"4806690a-10ee-458a-b09f-9a58ecc7a54f\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"58941a57-aba9-447b-95d1-654a4d906bbe\",\"elementid\":\"2ffbabe6-4c66-4d90-baa1-c3eb2f7d99a6\",\"modelid\":\"4806690a-10ee-458a-b09f-9a58ecc7a54f\",\"notebook_comms_target\":\"cbb08a2c-e90c-4b2f-a5a6-734a09cd4a87\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"2ffbabe6-4c66-4d90-baa1-c3eb2f7d99a6\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"q0\n",
"q1\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"40f750a8-55ce-421b-b7d2-ae092cac2dda\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"40f750a8-55ce-421b-b7d2-ae092cac2dda\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"d01f252d-8630-4fb3-a5a5-86311ecdac12\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"40f750a8-55ce-421b-b7d2-ae092cac2dda\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '40f750a8-55ce-421b-b7d2-ae092cac2dda' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"5ab53881-229d-41b1-b98f-49a4190bc7a5\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"c5160707-45d8-4387-9e4d-ea1744edf513\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"619a6bdb-9774-4080-b2b8-d4a37ad4dd31\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"7d1d0dd8-8414-4bb2-9b48-6df99882ffb4\",\"type\":\"StringEditor\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"index\",\"level_2\",\"precision\",\"ga_cvr\",\"level_0\",\"ga_fb_cpv\",\"imp_factor\",\"level_3\",\"levels\",\"level_1\",\"recall\",\"spend_prop\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"FK5H4XoU8j/NzMzMzMzwP8P1KFyPwu0/hetRuB6F8z+4HoXrUbj6P3E9CtejcPE/MzMzMzMz6z9SuB6F61H4P83MzMzMzPA/16NwPQrX6z+kcD0K16PgP3sUrkfheuw/\",\"dtype\":\"float64\",\"shape\":[12]},\"ga_fb_cpv\":{\"__ndarray__\":\"uB6F61G4KUA9CtejcD0rQB+F61G4nitAzczMzMzMLkAK16NwPYorQJqZmZmZGTNAAAAAAACAKEA9CtejcH03QClcj8L1qC1AKVyPwvVoMEBcj8L1KBwwQK5H4XoUriJA\",\"dtype\":\"float64\",\"shape\":[12]},\"imp_factor\":{\"__ndarray__\":\"d76fGi/d6D8AAAAAAADoP42XbhKDwOI/aJHtfD814j/TTWIQWDncP8/3U+Olm9Q/0SLb+X5q1D+PwvUoXI/SP+XQItv5ftI/mG4Sg8DK0T+28/3UeOnGPycxCKwcWsQ/\",\"dtype\":\"float64\",\"shape\":[12]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11],\"level_0\":[\"Adsets : 365573\",\"Audience Types : Custom, Lookalike\",\"Product Category : Tops\",\"Custom Audiences : Top 5% time spent users\",\"Product Category : Tops\",\"Product Category : Multi Category\",\"Product Category : Multi Category\",\"Product Category : Multi Category\",\"Product Category : Multi Category\",\"Product Category : Tops\",\"Lookalike Types : 1%\",\"Product Category : Tops\"],\"level_1\":[\"- : -\",\"- : -\",\"Audience Types : Custom, Lookalike\",\"- : -\",\"Audience Types : Custom, Lookalike\",\"Custom Audiences : Top 5% time spent users\",\"- : -\",\"Adsets : 1281865\",\"Custom Audiences : Top 5% time spent users\",\"Audience Types : Lookalike\",\"Adsets : 408552\",\"Audience Types : Interests\"],\"level_2\":[\"- : -\",\"- : -\",\"Image : 7f1042fde8334ec2dd104327a0785072\",\"- : -\",\"Image : 8e80ca4004a11babf741919a17c68eb7\",\"Image : 3f4f09d731948fe27527d91db3a86650\",\"- : -\",\"Image : eadca27cf0164403845948e0aef48c44\",\"Image : 59c79be31fec69300645fa54ff541dc9\",\"Custom Audiences : Lookalike (IN, 1%) - Email_ordered_more_than_twice\",\"- : -\",\"Adsets : 631845\"],\"level_3\":[\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"Image : 1df469643da69e293445deb2d3dc2fca\",\"- : -\",\"- : -\"],\"levels\":[[{\"Adsets\":{\"name\":\"Email Data base\",\"value\":\"365573\"}}],[{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}},{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"Custom Audiences\":{\"name\":\"Top 5% time spent users\",\"value\":\"Top 5% time spent users\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}},{\"Custom Audiences\":{\"name\":\"Top 5% time spent users\",\"value\":\"Top 5% time spent users\"}},{\"Image\":{\"name\":\"3f4f09d731948fe27527d91db3a86650\",\"value\":\"3f4f09d731948fe27527d91db3a86650\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}},{\"Adsets\":{\"name\":\"TimeSpent-5%\",\"value\":\"1281865\"}},{\"Image\":{\"name\":\"eadca27cf0164403845948e0aef48c44\",\"value\":\"eadca27cf0164403845948e0aef48c44\"}}],[{\"Product Category\":{\"name\":\"Multi Category\",\"value\":\"Multi Category\"}},{\"Custom Audiences\":{\"name\":\"Top 5% time spent users\",\"value\":\"Top 5% time spent users\"}},{\"Image\":{\"name\":\"59c79be31fec69300645fa54ff541dc9\",\"value\":\"59c79be31fec69300645fa54ff541dc9\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Custom Audiences\":{\"name\":\"Lookalike (IN, 1%) - Email_ordered_more_than_twice\",\"value\":\"Lookalike (IN, 1%) - Email_ordered_more_than_twice\"}},{\"Image\":{\"name\":\"1df469643da69e293445deb2d3dc2fca\",\"value\":\"1df469643da69e293445deb2d3dc2fca\"}}],[{\"Lookalike Types\":{\"name\":\"1%\",\"value\":\"1%\"}},{\"Adsets\":{\"name\":\"Look-a-like 1%\",\"value\":\"408552\"}}],[{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Adsets\":{\"name\":\"Movies-Tv lovers\",\"value\":\"631845\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D/n+6nx0k3qPwAAAAAAAPA/Di2yne+n7j8AAAAAAADwPwAAAAAAAPA/EFg5tMh24j8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D/P91PjpZvsPxkEVg4tsu0/\",\"dtype\":\"float64\",\"shape\":[12]},\"recall\":{\"__ndarray__\":\"QmDl0CLb0T+TGARWDi3SP1CNl24Sg8A/arx0kxgExj8zMzMzMzOzP8uhRbbz/aQ/iUFg5dAiyz9MN4lBYOWgP0w3iUFg5aA/uB6F61G4nj9MN4lBYOWwPzm0yHa+n6o/\",\"dtype\":\"float64\",\"shape\":[12]},\"spend_prop\":{\"__ndarray__\":\"pHA9CtejJ0BSuB6F61EtQPYoXI/C9RVAmpmZmZmZHkBxPQrXo3AJQK5H4XoUrvs/w/UoXI9CL0BmZmZmZmb2Pz0K16NwPfY/pHA9Ctej9D+kcD0K16MGQPYoXI/C9QJA\",\"dtype\":\"float64\",\"shape\":[12]}}},\"id\":\"62b180ac-7621-4066-ae41-720ab207f8c5\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"87863c4f-6bdd-4708-9904-8c363d826873\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"88d81a2d-1ce4-4dcb-a4fc-c303abbd2492\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"3bf56e63-c790-44dd-8e00-6d833a3944b4\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"511c8e97-49f4-4122-8956-5bf54b07a2cb\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"2e4543d0-2701-401e-b0e8-4711836d9e01\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"3627e065-4f8f-4d6b-a77a-5c13b0afb5f8\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"87863c4f-6bdd-4708-9904-8c363d826873\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"073360ad-323d-4fb8-a21c-4044aa6cbff2\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"d97723ad-b406-469f-bd52-4c6179deedfb\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"a234c678-5036-4e24-a96d-2036c8512551\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"65390cec-cef6-4d35-aab9-e97869dbe542\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"c5160707-45d8-4387-9e4d-ea1744edf513\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"017977b9-40a2-44d2-a527-9c9705627907\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"41474feb-cade-4af8-82e2-8201114df961\",\"type\":\"TableColumn\"},{\"attributes\":{\"columns\":[{\"id\":\"c8786281-15e5-459c-80b7-bf6d63281918\",\"type\":\"TableColumn\"},{\"id\":\"1b254634-cb6b-41b5-b1cf-e1195801cfaf\",\"type\":\"TableColumn\"},{\"id\":\"41474feb-cade-4af8-82e2-8201114df961\",\"type\":\"TableColumn\"},{\"id\":\"2e4543d0-2701-401e-b0e8-4711836d9e01\",\"type\":\"TableColumn\"},{\"id\":\"904709bd-65f7-4b58-bd51-624830d57f22\",\"type\":\"TableColumn\"},{\"id\":\"e0ce6274-1da8-452d-beb0-590a214a6ded\",\"type\":\"TableColumn\"},{\"id\":\"d97723ad-b406-469f-bd52-4c6179deedfb\",\"type\":\"TableColumn\"},{\"id\":\"aac3fc8c-0cda-4400-b624-c0ede8ce1c15\",\"type\":\"TableColumn\"},{\"id\":\"750a3cbb-2e5e-484b-9b79-ed58b5786811\",\"type\":\"TableColumn\"},{\"id\":\"2ba16760-2c12-4dbe-b826-24ddec82750d\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"62b180ac-7621-4066-ae41-720ab207f8c5\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"b7969899-5d6a-4763-a1db-6f1ba86fd3d4\",\"type\":\"DataTable\"},{\"attributes\":{},\"id\":\"b127af91-b666-4455-a3c2-86787ec17c53\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"3627e065-4f8f-4d6b-a77a-5c13b0afb5f8\",\"type\":\"StringEditor\"},\"field\":\"ga_fb_cpv\",\"formatter\":{\"id\":\"65390cec-cef6-4d35-aab9-e97869dbe542\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpv\"},\"id\":\"904709bd-65f7-4b58-bd51-624830d57f22\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"86cc2478-e514-4b77-9fbc-f577dfb5c921\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"16cac08d-a4e2-4f2b-92b5-10f96f9447c2\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"14fb2be8-16aa-4526-adab-945f1941793a\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"1b254634-cb6b-41b5-b1cf-e1195801cfaf\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"647744b9-cf5f-4fe9-a452-d98a0cd779a0\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"511c8e97-49f4-4122-8956-5bf54b07a2cb\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"3bf56e63-c790-44dd-8e00-6d833a3944b4\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"a1826a5c-1996-4dee-bb34-bcc6479fd2c9\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"14a89d5d-0502-4c85-8513-c13970c644a3\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"16cac08d-a4e2-4f2b-92b5-10f96f9447c2\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"03e142e8-907b-4d2b-ba02-db4151402410\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"073360ad-323d-4fb8-a21c-4044aa6cbff2\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"017977b9-40a2-44d2-a527-9c9705627907\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"7d1d0dd8-8414-4bb2-9b48-6df99882ffb4\",\"type\":\"StringEditor\"},\"field\":\"ga_cvr\",\"formatter\":{\"id\":\"14a89d5d-0502-4c85-8513-c13970c644a3\",\"type\":\"StringFormatter\"},\"title\":\"ga_cvr\"},\"id\":\"e0ce6274-1da8-452d-beb0-590a214a6ded\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"03e142e8-907b-4d2b-ba02-db4151402410\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"619a6bdb-9774-4080-b2b8-d4a37ad4dd31\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"c8786281-15e5-459c-80b7-bf6d63281918\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"88d81a2d-1ce4-4dcb-a4fc-c303abbd2492\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"a1826a5c-1996-4dee-bb34-bcc6479fd2c9\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"750a3cbb-2e5e-484b-9b79-ed58b5786811\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"14fb2be8-16aa-4526-adab-945f1941793a\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"86cc2478-e514-4b77-9fbc-f577dfb5c921\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"b127af91-b666-4455-a3c2-86787ec17c53\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"aac3fc8c-0cda-4400-b624-c0ede8ce1c15\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"647744b9-cf5f-4fe9-a452-d98a0cd779a0\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"a234c678-5036-4e24-a96d-2036c8512551\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"2ba16760-2c12-4dbe-b826-24ddec82750d\",\"type\":\"TableColumn\"}],\"root_ids\":[\"b7969899-5d6a-4763-a1db-6f1ba86fd3d4\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"5ab53881-229d-41b1-b98f-49a4190bc7a5\",\"elementid\":\"40f750a8-55ce-421b-b7d2-ae092cac2dda\",\"modelid\":\"b7969899-5d6a-4763-a1db-6f1ba86fd3d4\",\"notebook_comms_target\":\"d01f252d-8630-4fb3-a5a5-86311ecdac12\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"40f750a8-55ce-421b-b7d2-ae092cac2dda\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"q2\n",
"q3\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"6be5eb69-2250-4aee-abd1-99f021f14c5d\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"6be5eb69-2250-4aee-abd1-99f021f14c5d\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"86fac1b1-c8e1-4229-92e0-8eae4ffc2f54\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"6be5eb69-2250-4aee-abd1-99f021f14c5d\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '6be5eb69-2250-4aee-abd1-99f021f14c5d' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"3d5e8ccb-7406-49ed-8a1d-5b1d9df85a09\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"c5160707-45d8-4387-9e4d-ea1744edf513\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"619a6bdb-9774-4080-b2b8-d4a37ad4dd31\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"b127af91-b666-4455-a3c2-86787ec17c53\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"87863c4f-6bdd-4708-9904-8c363d826873\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"88d81a2d-1ce4-4dcb-a4fc-c303abbd2492\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"3bf56e63-c790-44dd-8e00-6d833a3944b4\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"511c8e97-49f4-4122-8956-5bf54b07a2cb\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"2e4543d0-2701-401e-b0e8-4711836d9e01\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"3627e065-4f8f-4d6b-a77a-5c13b0afb5f8\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"87863c4f-6bdd-4708-9904-8c363d826873\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"073360ad-323d-4fb8-a21c-4044aa6cbff2\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"d97723ad-b406-469f-bd52-4c6179deedfb\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"a234c678-5036-4e24-a96d-2036c8512551\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"65390cec-cef6-4d35-aab9-e97869dbe542\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"c5160707-45d8-4387-9e4d-ea1744edf513\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"017977b9-40a2-44d2-a527-9c9705627907\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"41474feb-cade-4af8-82e2-8201114df961\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"03e142e8-907b-4d2b-ba02-db4151402410\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"619a6bdb-9774-4080-b2b8-d4a37ad4dd31\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"c8786281-15e5-459c-80b7-bf6d63281918\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"7d1d0dd8-8414-4bb2-9b48-6df99882ffb4\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"3627e065-4f8f-4d6b-a77a-5c13b0afb5f8\",\"type\":\"StringEditor\"},\"field\":\"ga_fb_cpv\",\"formatter\":{\"id\":\"65390cec-cef6-4d35-aab9-e97869dbe542\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpv\"},\"id\":\"904709bd-65f7-4b58-bd51-624830d57f22\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"86cc2478-e514-4b77-9fbc-f577dfb5c921\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"16cac08d-a4e2-4f2b-92b5-10f96f9447c2\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"14fb2be8-16aa-4526-adab-945f1941793a\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"1b254634-cb6b-41b5-b1cf-e1195801cfaf\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"3bf56e63-c790-44dd-8e00-6d833a3944b4\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"647744b9-cf5f-4fe9-a452-d98a0cd779a0\",\"type\":\"StringEditor\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"index\",\"level_2\",\"precision\",\"ga_cvr\",\"level_0\",\"ga_fb_cpv\",\"imp_factor\",\"level_3\",\"levels\",\"level_1\",\"recall\",\"spend_prop\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"KVyPwvUovD+kcD0K16PAPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"ga_fb_cpv\":{\"__ndarray__\":\"CtejcD0KC0AUrkfhehQVQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"imp_factor\":{\"__ndarray__\":\"z/dT46WbxD/n+6nx0k3CPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"index\":[0,1],\"level_0\":[\"Lookalike Types : 1-2%\",\"Product Category : Indya\"],\"level_1\":[\"Image : 929fad92512d28811db7633c516e0d1c\",\"Audience Types : Interests\"],\"level_2\":[\"- : -\",\"Interests : Education or Higher education or Hotels or Travel or University\"],\"level_3\":[\"- : -\",\"Image : 929fad92512d28811db7633c516e0d1c\"],\"levels\":[[{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}],[{\"Product Category\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Interests\":{\"name\":\"Education or Higher education or Hotels or Travel or University\",\"value\":\"Education or Higher education or Hotels or Travel or University\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"recall\":{\"__ndarray__\":\"ukkMAiuHpj/sUbgeheuhPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"spend_prop\":{\"__ndarray__\":\"PQrXo3A9/j/Xo3A9Ctf3Pw==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"f2e972e9-9de4-485b-84f0-b5edda92504c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"511c8e97-49f4-4122-8956-5bf54b07a2cb\",\"type\":\"StringFormatter\"},{\"attributes\":{\"columns\":[{\"id\":\"c8786281-15e5-459c-80b7-bf6d63281918\",\"type\":\"TableColumn\"},{\"id\":\"1b254634-cb6b-41b5-b1cf-e1195801cfaf\",\"type\":\"TableColumn\"},{\"id\":\"41474feb-cade-4af8-82e2-8201114df961\",\"type\":\"TableColumn\"},{\"id\":\"2e4543d0-2701-401e-b0e8-4711836d9e01\",\"type\":\"TableColumn\"},{\"id\":\"904709bd-65f7-4b58-bd51-624830d57f22\",\"type\":\"TableColumn\"},{\"id\":\"e0ce6274-1da8-452d-beb0-590a214a6ded\",\"type\":\"TableColumn\"},{\"id\":\"d97723ad-b406-469f-bd52-4c6179deedfb\",\"type\":\"TableColumn\"},{\"id\":\"aac3fc8c-0cda-4400-b624-c0ede8ce1c15\",\"type\":\"TableColumn\"},{\"id\":\"750a3cbb-2e5e-484b-9b79-ed58b5786811\",\"type\":\"TableColumn\"},{\"id\":\"2ba16760-2c12-4dbe-b826-24ddec82750d\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"f2e972e9-9de4-485b-84f0-b5edda92504c\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"1011008d-e20f-4568-a3d9-e40097a03469\",\"type\":\"DataTable\"},{\"attributes\":{},\"id\":\"a1826a5c-1996-4dee-bb34-bcc6479fd2c9\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"14a89d5d-0502-4c85-8513-c13970c644a3\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"16cac08d-a4e2-4f2b-92b5-10f96f9447c2\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"03e142e8-907b-4d2b-ba02-db4151402410\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"073360ad-323d-4fb8-a21c-4044aa6cbff2\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"017977b9-40a2-44d2-a527-9c9705627907\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"7d1d0dd8-8414-4bb2-9b48-6df99882ffb4\",\"type\":\"StringEditor\"},\"field\":\"ga_cvr\",\"formatter\":{\"id\":\"14a89d5d-0502-4c85-8513-c13970c644a3\",\"type\":\"StringFormatter\"},\"title\":\"ga_cvr\"},\"id\":\"e0ce6274-1da8-452d-beb0-590a214a6ded\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"88d81a2d-1ce4-4dcb-a4fc-c303abbd2492\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"a1826a5c-1996-4dee-bb34-bcc6479fd2c9\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"750a3cbb-2e5e-484b-9b79-ed58b5786811\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"14fb2be8-16aa-4526-adab-945f1941793a\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"86cc2478-e514-4b77-9fbc-f577dfb5c921\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"b127af91-b666-4455-a3c2-86787ec17c53\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"aac3fc8c-0cda-4400-b624-c0ede8ce1c15\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"647744b9-cf5f-4fe9-a452-d98a0cd779a0\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"a234c678-5036-4e24-a96d-2036c8512551\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"2ba16760-2c12-4dbe-b826-24ddec82750d\",\"type\":\"TableColumn\"}],\"root_ids\":[\"1011008d-e20f-4568-a3d9-e40097a03469\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"3d5e8ccb-7406-49ed-8a1d-5b1d9df85a09\",\"elementid\":\"6be5eb69-2250-4aee-abd1-99f021f14c5d\",\"modelid\":\"1011008d-e20f-4568-a3d9-e40097a03469\",\"notebook_comms_target\":\"86fac1b1-c8e1-4229-92e0-8eae4ffc2f54\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"6be5eb69-2250-4aee-abd1-99f021f14c5d\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"all_df = df_1.append(df_2, ignore_index=True)\n",
"all_df = all_df.append(df_3, ignore_index=True)\n",
"all_df = all_df.append(df_4, ignore_index=True)\n",
"\n",
"def round_float(s):\n",
" if s.dtype == 'float64':\n",
" s = s.round(3)\n",
" return s\n",
"\n",
"tooltips=[\n",
" ('lvl 0:', '@level_0'),\n",
" ('lvl 1:', '@level_1'),\n",
" ('lvl 2:', '@level_2'),\n",
" ('lvl 3:', '@level_3'),\n",
" (path_model.goal_metrics[0], '@{0}'.format(path_model.goal_metrics[0])),\n",
" (path_model.goal_metrics[1], '@{0}'.format(path_model.goal_metrics[1])),\n",
" ('Precision', '@precision'),\n",
" ('Recall', '@recall'),\n",
" ('mcc', '@imp_factor'),\n",
" ('Spend Prop', '@spend_prop')\n",
"]\n",
"\n",
"hover = HoverTool(tooltips=tooltips)\n",
"hover1 = HoverTool(tooltips=tooltips)\n",
"\n",
"def build_bokeh_trace(df_obj, num):\n",
" df_obj = df_obj.copy()\n",
" if len(df_obj):\n",
" df_obj = df_obj.sort_values(by='imp_factor', ascending=False)\n",
" df_plotly = df_obj.iloc[0:num].copy()\n",
" df_plotly['idx'] = df_plotly.index\n",
" df_plotly['size'] = df_plotly['imp_factor']\n",
" # range r1 to r2\n",
" r1=8\n",
" r2=30\n",
" min_r = df_plotly['size'].min()\n",
" max_r = df_plotly['size'].max()\n",
" df_plotly['size'] = ((df_plotly['size'])/ max_r)*20\n",
"# df_plotly['overall'] = data['goal_axis']\n",
"# df_plotly['overall_spend_prop'] = avg_spend_prop\n",
" else:\n",
" return ColumnDataSource(df_obj)\n",
"\n",
" source = ColumnDataSource(df_plotly)\n",
" return source\n",
"\n",
"spend_source_1 = build_bokeh_trace(df_1, 10)\n",
"spend_source_2 = build_bokeh_trace(df_2, 10)\n",
"spend_source_3 = build_bokeh_trace(df_3, 10)\n",
"spend_source_4 = build_bokeh_trace(df_4, 10)\n",
"\n",
"table_source_1 = ColumnDataSource(df_1.apply(round_float))\n",
"table_source_2 = ColumnDataSource(df_2.apply(round_float))\n",
"table_source_3 = ColumnDataSource(df_3.apply(round_float))\n",
"table_source_4 = ColumnDataSource(df_4.apply(round_float))\n",
"\n",
"columns = [\n",
" TableColumn(field=\"level_0\", title=\"level 0\"),\n",
" TableColumn(field=\"level_1\", title=\"level 1\"),\n",
" TableColumn(field=\"level_2\", title=\"level 2\"),\n",
" TableColumn(field=\"level_3\", title=\"level 3\"),\n",
"# TableColumn(field=\"other_{0}\".format(args['goal_metric'][\"value\"]), title=\"Other {0}\".format(args['goal_metric']['value'])),\n",
" TableColumn(field=path_model.goal_metrics[0], title=path_model.goal_metrics[0]),\n",
" TableColumn(field=path_model.goal_metrics[1], title=path_model.goal_metrics[1]),\n",
"# TableColumn(field=\"Projected_change\", title=\"Projected % CPT change\"),\n",
" TableColumn(field=\"spend_prop\", title=\"Spend %\"),\n",
"# TableColumn(field=\"imp_factor\", title=\"Impact factor\"),\n",
" TableColumn(field=\"precision\", title=\"Precision\"),\n",
" TableColumn(field=\"recall\", title=\"Recall\"),\n",
" TableColumn(field=\"imp_factor\", title=\"MCC\") \n",
"]\n",
"\n",
"# Spend sorted.\n",
"p1 = figure(plot_width=800, plot_height=500, tools=[hover1],\n",
" title=\"Performance by paths.\")\n",
"p1.xaxis.axis_label = path_model.goal_metrics[0]\n",
"p1.yaxis.axis_label = path_model.goal_metrics[1]\n",
"\n",
"if len(df_1):\n",
" prop_plot_1 = p1.circle(path_model.goal_metrics[0], path_model.goal_metrics[1], fill_color='orange', source=spend_source_1, size='size')\n",
"if len(df_2):\n",
" prop_plot_2 = p1.circle(path_model.goal_metrics[0], path_model.goal_metrics[1], fill_color='red', source=spend_source_2, size='size')\n",
"if len(df_3):\n",
" prop_plot_3 = p1.circle(path_model.goal_metrics[0], path_model.goal_metrics[1], fill_color='green', source=spend_source_3, size='size')\n",
"if len(df_4):\n",
" prop_plot_4 = p1.circle(path_model.goal_metrics[0], path_model.goal_metrics[1], fill_color='blue', source=spend_source_4, size='size')\n",
"\n",
"avg_spend = Span(location=data['y_axis'], dimension='width', line_color='black', line_width=3)\n",
"avg_cpt = Span(location=data['x_axis'], dimension='height', line_color='black', line_width=3)\n",
"\n",
"p1.add_layout(avg_spend)\n",
"p1.add_layout(avg_cpt)\n",
"\n",
"prop_plot = show(p1, notebook_handle=True)\n",
"\n",
"print('q0')\n",
"if len(df_1):\n",
" data_table_1 = DataTable(source=table_source_1, columns=columns, width=1000)\n",
" table_1 = show(data_table_1, notebook_handle=True)\n",
"\n",
"print('q1')\n",
"if len(df_2):\n",
" data_table_2 = DataTable(source=table_source_2, columns=columns, width=1000)\n",
" table_2 = show(data_table_2, notebook_handle=True)\n",
"\n",
"print('q2')\n",
"if len(df_3):\n",
" data_table_3 = DataTable(source=table_source_3, columns=columns, width=1000)\n",
" table_3 = show(data_table_3, notebook_handle=True)\n",
"\n",
"print('q3')\n",
"if len(df_4):\n",
" data_table_4 = DataTable(source=table_source_4, columns=columns, width=1000)\n",
" table_4 = show(data_table_4, notebook_handle=True)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df_bigger = df[(df['Audience Strategy'] == 'Retention') & (df['Ad Type'] == 'Carousel') & (df['Landing Pages'] == 'www.zivame.com/no-sag-flat-30.html, www.zivame.com')]\n",
"df_bigger.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.figure(figsize=(20,10))\n",
"binwidth = 0.1\n",
"h = hist(df_bigger[goal_metric['value']], weights=df_bigger.fb_spend, bins=pd.np.linspace((min(df_bigger[goal_metric['value']])),\n",
" (max(df_bigger[goal_metric['value']])), 50))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"df_smaller = df[(df['Audience Strategy'] == 'Prospecting') & (df['Product Category'] == 'Shapewear')]\n",
"df_smaller.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.figure(figsize=(20,10))\n",
"binwidth = 0.1\n",
"h = hist(df_smaller[goal_metric['value']], weights=df_smaller.fb_spend, bins=pd.np.linspace((min(df_smaller[goal_metric['value']])),\n",
" (max(df_smaller[goal_metric['value']])), 50))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy.stats import norm\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Fit a normal distribution to the data:\n",
"\n",
"\n",
"mu, std = norm.fit(data, loc = path_model.overall_goal_metric)\n",
"\n",
"# Plot the histogram.\n",
"plt.hist(data, bins=25, normed=True, alpha=0.6, color='g')\n",
"\n",
"# Plot the PDF.\n",
"xmin, xmax = plt.xlim()\n",
"x = np.linspace(xmin, xmax, 100)\n",
"p = norm.pdf(x, mu, std)\n",
"plt.plot(x, p, 'k', linewidth=2)\n",
"title = \"Fit results: mu = %.2f, std = %.2f\" % (mu, std)\n",
"plt.title(title)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"check_threshold*mu"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"check_threshold = std*0.675 / mu"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"positive_df = df[abs(df[goal_metric['value']] - path_model.overall_goal_metric) > check_threshold*path_model.overall_goal_metric] "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"positive_df.fb_spend.sum() / df.fb_spend.sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model.check_threshold"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(0.713 - 0.0181*0.430)/ (1-0.0181)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(0.713 - 0.0189*0.410)/ (1-0.0189)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model.overall_goal_metric - # + path_model.overall_goal_metric*path_model.check_threshold"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(pd.np.percentile(data, 25) - path_model.overall_goal_metric) / path_model.overall_goal_metric"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(pd.np.percentile(data, 75) - path_model.overall_goal_metric) / path_model.overall_goal_metric"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"pd.np.quant"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scipy.stats import t\n",
"t.fit(data, loc=path_model.overall_goal_metric)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"len([d for d in data if d > 1000])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df.fb_spend.sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [jarvis1]",
"language": "python",
"name": "Python [jarvis1]"
},
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment