Skip to content

Instantly share code, notes, and snippets.

@Saurabh7
Created August 14, 2017 15:54
Show Gist options
  • Save Saurabh7/46b9152ca0b17ef1ed788dfa21b83f6b to your computer and use it in GitHub Desktop.
Save Saurabh7/46b9152ca0b17ef1ed788dfa21b83f6b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"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": 2,
"metadata": {},
"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": 3,
"metadata": {},
"outputs": [],
"source": [
"import importlib\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Multiple metrics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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{threshold}_1 \\right ) \\mathbf{or} \\left ( \\left | \\text{goal metric}_2 - \\text{overall}_2 \\right | > \\text{threshold}_2 \\right )\n",
"$$ \n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TIME USED 4.920705318450928\n",
"TIME USED 4.100982666015625\n"
]
}
],
"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'] = None\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": 5,
"metadata": {},
"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": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model = path_pipeline.path_model"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"binwidth=0.01"
]
},
{
"cell_type": "code",
"execution_count": 9,
"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": 10,
"metadata": {},
"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": 11,
"metadata": {},
"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": 12,
"metadata": {},
"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": 13,
"metadata": {},
"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": 14,
"metadata": {},
"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": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"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": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f4221a436a0>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n6dOn2pisaXMyaGZmZmYN3tq1a7njjjvYuHEjnTt3BmDdunWsWLGC5557ji996Uvsvvvu9OzZk/vv\nv58pU6YwevToyv49evRg4sSJ7LPPlruXLV68GGCzhGry5Mnce++9PPbYY/To0YOVK1fSsWNHIoKd\ndtqJli1b8uabb9K3b2Yx/DfeeKOyb/fu3SkrK6t83LRQ22yzDf/1X//F7373OxYtWrRFfXXXsGTJ\nkrxjVjcT2717d6ZMyV1jsWlqTI9u1icng2Zm1iTN/2BhnY39hY796mxsq39Dd/p8sUOwAtx11120\nbNmSuXPnUlpaWlk+YsQIJk2axDXXXANkZgd/9atf8fTTT2/2COkpp5zChRdeyKRJk+jRowfvvfce\nf//73zn88MOBLWc8V69eTevWrenYsSMfffQRF1xwQWViVVJSwtFHH82ll17KDTfcwOLFi7n55pvp\n2bMnAF//+te54IILuOWWWxg5ciQRwdy5c2nXrh277bZbtdd5xRVX8O1vfzvvjF5117DTTjtRUlLC\nq6++yuc/X9jv9Ne//nXOOeccfvWrX/Hd736XdevW8cILLzB06NCC+lvj5xTZzMzMzBq8m2++mZNO\nOomuXbuy8847V35OO+00Jk+eXPnu38iRI3niiSc4+OCDKx/TBDjzzDM54ogjOPTQQ+nQoQP77rsv\ns2bNqqzPnUE74YQT6NGjB127duWLX/wi++6772b11113HStWrKBz586MHTuW0aNHV76T165dO2bM\nmMFtt91Gly5d6NKlC+effz7r1q0jn+xz77LLLpudK7uuumvYZpttuOiii9hvv/3o1KnTZtdWlXbt\n2vHwww8zffp0dtllF/r160d5eXmN/RojUVKvn8ZCXtelKVroH2pTov4QC4odRbMh9Sd8v+tPHf5+\ne2bQrPYy/x/ov0ZsjfPPP5933nmHG2+8sdih1InMHob5/v+6X4PaMaAqHfueWq+/2B+88ttGcV/8\nmKiZmZmZWS0tWLCAdevW8aUvfYlZs2bxhz/8gYkTJxY7LKuC3xnMz8mgmZmZmVktrV69mlGjRrF0\n6VJ23nlnzj33XIYPH17ssMxqxcmgmZmZmVkt/cd//Acvv/xyscOwAnlmML+i3RVJbSSVK70VK+kB\nSR9Imp7T7klJz0qaLektSdPyjFWW6ivafSzp8Or6S9pe0jRJcyU9LWmPAmI+TdLLkjZI6pRV3l7S\ndElzJD0n6cQaxpkuaV7W8WUpjtmSHpS0Syr/QdZ1PSfpkxR3m1S+NjsOMzMzMzOzQhVzZvAk4M7Y\n9Jby1UBb4JTsRhFxQMV3SVOBu3MHiohyYGBq0xF4GZhRRf+70uGFwOyIOFpSf+A3wFdqiPkp4F6g\nPKf8NGB+RBwuaUdggaRbIuKT3AEkHQWsyim+OiJ+lOq/D1wCfC8irgGuSeVfB86KiBWpz0BJW25A\nY2ZmZmZmm/HMYH7FvCvHAfdUHETE48CHVTWWtB1wEHmSwRzHAg9ExNoa+u8BPJrOvQDYVdJO1Q0c\nEXMjYgmQuzpQANul79sB71eRCG4LjAMm5Iybfd3bAhvznH4UkLsraKNYpcjMzMzMzBqeoswMSioF\neqXEqlBHAo/kJE75jASurab/R+l4LnA08DdJQ4EeQDfgvVrEVOHXwHRJbwPtgP+pot2Pycz0fZxb\nIWkCcAKwAvhyTt02wFfJzECamZmZmVktyHMoeRXrMdEdySQ9tTEKuKG6Bulduy8CDxXQ/0rgl5Ke\nBZ4DZgNbzOYV6DAyj5weJKkP8LCkAdmJq6Q9gb4RcbakXcmZ1YuIi4GLJZ0HfB+4NKt6OPBU1iOi\n1Sovn0l5+aaNRsvKhlJWNmyrLszMzMzMzJqmYiWDHwNtCm2cFkkZQmZ2rzojgLsiYkNN/SNiNZn3\nFivavAa8VmBIuZtWfhO4Io37ahprN+AfWW32AQal9/xKgZ0lPRYRB+WMNQW4j82TwZFs+YholcrK\nhjn5MzMzs2Zl/PjxvPLKK/zxj3+s0/MsXryYXr168cknn1BSUrs3rp544gnGjBnDG2+8kbf+m9/8\nJt27d+eyyy77LEI1q1FR3hlMM1wtJLXKqRL534MbAfw5ItbVMHS+9+ry9pfUIT2uiqRvA09UzORJ\nekRS52rOkxvnYtLiM5I+B/QDNlvcJSJ+FxHdIqI3sD+woCIRlNQ3q+kRwIvZcQIHkvV+pZmZmVlz\ns91229G+fXvat29PixYtaNu2bWXZlCmZv/6lRerr3Kc5T33FaJuTSur101gUM9IZZJIiILMFBHA7\ncJCkJZIOyWo7gpwkT9JgSddnHfcEukXEE3nOtUV/YHdgvqQXyDzmeWYaR0AfYHnuIJK+L+kNoCsw\nN+v8E4B903YRDwM/jIjlqc+z1d8GAK6UNE/SHDJJ5ZlZdUcCD0XEFu8ZmpmZmTUXq1evZtWqVaxa\ntYqePXty3333VZaNGjWqVmNt2LCh5kZmzUAxk8HfAGMrDiLigIj4XERsGxE9IuLhrLqDImJGdueI\n+GdEfCfreHFEdM93oir6Px0R/SJij4g4NiJWpqo9yGx58e8841wXEd0jolWa5ftOKl8aEYdFxID0\nmZLVZ1CecRZHxICs42NTv70i4oiIWJpVNykiRue7LjMzM7PmKCLYtDvZJv/+978ZO3Ys7du350tf\n+hLPPrvp3+R79erF1VdfzZ577km7du3YuHEjS5cu5dhjj2XnnXemT58+XHfddZXtn3nmGYYMGUKH\nDh3o3LkzP/jBDzY7/y233ELPnj3Zeeed+clPflJZt27dOs466yy6du1Kt27dGDduHOvXr897HbNn\nz2bw4MF06NCBkSNHsnbtpsXw33//fYYPH07Hjh3ZYYcdOPDAAz/VPWvuPDOYX9EijYg5wONqYHPl\nETE/In5Qc8viqdh0HmhB/m0ozMzMzJqde++9l9GjR7Ny5UqGDx/OaadtvhD7bbfdxgMPPMCKFSuQ\nxPDhwxk4cCBLly7l0Ucf5Ze//CUPP5yZjzjzzDM566yzWLlyJa+++iojRozYbKy//vWvvPzyyzzy\nyCNcdtllLFiwAIAJEyYwa9Ys5s2bx9y5c5k1axYTJmy2qxgA69ev56ijjmLs2LEsX76cb3zjG9x5\n552V9ddeey3du3fn/fff5913390s4TT7rBQ1bY2ImyLfP+tYtSJibUQMTDOotV2V1czMzGzrSZ/+\nU0f2339/DjvsMCRx/PHHM2/evM3qzzzzTLp06ULr1q155plnWLZsGRdddBEtWrRg11135eSTT+a2\n224DoLS0lFdeeYX333+ftm3bMnTo0KxbIC699FJatWrFgAED2HPPPZk7dy4AkydP5pJLLmGHHXZg\nhx124JJLLsm7qM3f//53PvnkE8444wxatGjBMcccw5AhQyrrS0tLWbp0Ka+99hotWrRgv/32q4tb\n1mx4ZjC/xhOpmZmZmRVfxKf/1JFddtml8nvbtm1Zu3YtGzdueoiqW7duld8XL17MW2+9RadOnejU\nqRMdO3bkiiuu4N133wVg4sSJLFiwgN12241hw4Zx3333bXauz33uc5ud68MPMzuKvf322/To0aOy\nrmfPnrz99ttbxLp06VK6du26WVnPnj0rv5977rn06dOHQw89lL59+3LVVVfV6l6YFaJYW0uYmZmZ\n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\ngiAIepD/D7wSuTZUoJWvAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4221c85710>"
]
},
"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=\"YlGnBu\")\n",
"ax.invert_yaxis()\n",
"ax.hlines(avg0, *ax.get_xlim(), label='Average Metric')\n",
"ax.hlines(ths00, *ax.get_xlim(), colors='red', label='Thresholds')\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": 18,
"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": 19,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/sabby/anaconda3/envs/jarvis1/lib/python3.5/site-packages/bokeh/util/deprecation.py:34: BokehDeprecationWarning: \n",
"The bokeh.charts API has moved to a separate 'bkcharts' package.\n",
"\n",
"This compatibility shim will remain until Bokeh 1.0 is released.\n",
"After that, if you want to use this API you will have to install\n",
"the bkcharts package explicitly.\n",
"\n",
" warn(message)\n"
]
}
],
"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": 20,
"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=\"8ecc4ce9-2295-4580-9aec-bb1711667b3a\">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(\"8ecc4ce9-2295-4580-9aec-bb1711667b3a\");\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(\"8ecc4ce9-2295-4580-9aec-bb1711667b3a\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '8ecc4ce9-2295-4580-9aec-bb1711667b3a' 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(\"8ecc4ce9-2295-4580-9aec-bb1711667b3a\").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(\"8ecc4ce9-2295-4580-9aec-bb1711667b3a\")).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": [
"Based on the positive set definition, evaluation metrics of whole result (top 20 paths ) are:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Precision: 0.898\n",
"Recall: 0.479\n",
"MCC: 0.36\n"
]
}
],
"source": [
"print('Precision:', data['precision'])\n",
"print('Recall:', data['recall'])\n",
"print('MCC:', data['mcc'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Results"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"e7419e89-a776-429c-8e0d-ec660c5ba975\"></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(\"e7419e89-a776-429c-8e0d-ec660c5ba975\");\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(\"1aa2fde0-e341-421f-907b-402e5c96538d\", 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(\"e7419e89-a776-429c-8e0d-ec660c5ba975\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e7419e89-a776-429c-8e0d-ec660c5ba975' 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 = {\"c6db73a2-ad7c-4942-9033-3124ba5c5f51\":{\"roots\":{\"references\":[{\"attributes\":{\"dimension\":\"height\",\"line_width\":{\"value\":3},\"location\":7.427565604551276,\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4c05db88-ad4e-4b4f-8a9e-e7973dce4989\",\"type\":\"Span\"},{\"attributes\":{\"axis_label\":\"ga_fb_cpv\",\"formatter\":{\"id\":\"35ce3eaf-f86f-4433-9e00-1d2eefe5c3c4\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9ced8d99-9986-4802-ac25-12bd37362874\",\"type\":\"BasicTicker\"}},\"id\":\"8bde66c8-fbb1-4a53-9663-bbf1d8c4940d\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"f56a6d90-238f-4725-aa2f-3f8b8f91c28d\",\"type\":\"ToolEvents\"},{\"attributes\":{},\"id\":\"d2cb3b8c-ef4c-4771-810d-8c3889051d09\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"8bde66c8-fbb1-4a53-9663-bbf1d8c4940d\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"d9d2f249-a046-425a-98a0-c99b37d0c383\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"plot_width\":800,\"renderers\":[{\"id\":\"8bde66c8-fbb1-4a53-9663-bbf1d8c4940d\",\"type\":\"LinearAxis\"},{\"id\":\"e4e3ce05-0aee-4cc6-ba36-03f36a2b9891\",\"type\":\"Grid\"},{\"id\":\"d9d2f249-a046-425a-98a0-c99b37d0c383\",\"type\":\"LinearAxis\"},{\"id\":\"85d9947f-a745-4a8f-8dd2-6a4ffb4955be\",\"type\":\"Grid\"},{\"id\":\"eae22acd-8fca-46e1-b2d5-a24a071ed819\",\"type\":\"GlyphRenderer\"},{\"id\":\"0939ce32-3676-4f11-853d-da2ce6a0bb6e\",\"type\":\"GlyphRenderer\"},{\"id\":\"2b15af58-dbe5-4db5-baab-554bc7f7c12d\",\"type\":\"Span\"},{\"id\":\"4c05db88-ad4e-4b4f-8a9e-e7973dce4989\",\"type\":\"Span\"}],\"title\":{\"id\":\"22f12851-75b2-477b-a2f9-ee0cdb106aa4\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"f56a6d90-238f-4725-aa2f-3f8b8f91c28d\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"57909863-3d19-4e64-9cbf-f25e57f28da7\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"9c02d961-f4ad-4508-b2de-13958d196b42\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"61be6d43-01e0-44f4-9a5e-a8db456d3ddf\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"40bdc7d7-e1f2-4b66-b590-e8ecc7cb7554\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"fce1c438-d72a-474f-98be-b551cddc8622\",\"type\":\"LinearScale\"}},\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9ced8d99-9986-4802-ac25-12bd37362874\",\"type\":\"BasicTicker\"}},\"id\":\"e4e3ce05-0aee-4cc6-ba36-03f36a2b9891\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"idx\",\"size\",\"imp_factor\",\"spend_prop\",\"precision\",\"level_3\",\"index\",\"ga_cvr\",\"level_0\",\"recall\",\"level_2\",\"levels\",\"ga_fb_cpv\",\"level_1\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"KVyPwvUovD9SuB6F61HIPylcj8L1KMw/MzMzMzMz0z8=\",\"dtype\":\"float64\",\"shape\":[4]},\"ga_fb_cpv\":{\"__ndarray__\":\"CtejcD0KC0BI4XoUrkccQKRwPQrXoxhAXI/C9ShcFEA=\",\"dtype\":\"float64\",\"shape\":[4]},\"idx\":[0,1,2,3],\"imp_factor\":{\"__ndarray__\":\"9ihcj8L1yD8QWDm0yHa+P1pkO99Pjbc/O99PjZdusj8=\",\"dtype\":\"float64\",\"shape\":[4]},\"index\":[0,1,2,3],\"level_0\":[\"Audience Strategy : Prospecting\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\"],\"level_1\":[\"Lookalike Types : 1-2%\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\",\"Daily Report : Open targeting\"],\"level_2\":[\"Image : 929fad92512d28811db7633c516e0d1c\",\"Audience Types : Lookalike\",\"Lookalike Types : 1-2%\",\"Audience Types : Interests\"],\"level_3\":[\"- : -\",\"Image : c9669afe6bcb09e547b4d46f948411a3\",\"- : -\",\"CA Daily Report : Intrest\"],\"levels\":[[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Image\":{\"name\":\"c9669afe6bcb09e547b4d46f948411a3\",\"value\":\"c9669afe6bcb09e547b4d46f948411a3\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Daily Report\":{\"name\":\"Open targeting\",\"value\":\"Open targeting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"CA Daily Report\":{\"name\":\"Intrest\",\"value\":\"Intrest\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPxSuR+F6FOY/CtejcD0K6z8=\",\"dtype\":\"float64\",\"shape\":[4]},\"recall\":{\"__ndarray__\":\"/Knx0k1ioD+cxCCwcmihP05iEFg5tMg/wcqhRbbzvT8=\",\"dtype\":\"float64\",\"shape\":[4]},\"size\":{\"__ndarray__\":\"AAAAAAAANECQBmmQBmkoQPMt3/It3yJAndiJndiJHUA=\",\"dtype\":\"float64\",\"shape\":[4]},\"spend_prop\":{\"__ndarray__\":\"PQrXo3A9/j+uR+F6FK7/P/YoXI/CdTBA9ihcj8L1JEA=\",\"dtype\":\"float64\",\"shape\":[4]}}},\"id\":\"3f8631a6-b327-4b75-a39b-afde1d429283\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"idx\",\"size\",\"imp_factor\",\"spend_prop\",\"precision\",\"level_3\",\"index\",\"ga_cvr\",\"level_0\",\"recall\",\"level_2\",\"levels\",\"ga_fb_cpv\",\"level_1\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"w/UoXI/C5T/2KFyPwvXwP83MzMzMzPA/FK5H4XoU8j+F61G4HoXzP1yPwvUoXOc/exSuR+F67D/2KFyPwvXoP7gehetRuO4/H4XrUbge5T8=\",\"dtype\":\"float64\",\"shape\":[10]},\"ga_fb_cpv\":{\"__ndarray__\":\"cT0K16PwKUAzMzMzMzMrQD0K16NwPStAuB6F61G4KUDNzMzMzMwuQHE9Ctej8CVAUrgehetRJ0DXo3A9ClcsQClcj8L1KCdAw/UoXI/CKUA=\",\"dtype\":\"float64\",\"shape\":[10]},\"idx\":[0,1,2,3,4,5,6,7,8,9],\"imp_factor\":{\"__ndarray__\":\"cmiR7Xw/3T/jpZvEILDaPz0K16NwPdo/okW28/3U2D+oxks3iUHYP/yp8dJNYtA/rkfhehSuxz/TTWIQWDnEP4ts5/up8cI/7FG4HoXrwT8=\",\"dtype\":\"float64\",\"shape\":[10]},\"index\":[0,1,2,3,4,5,6,7,8,9],\"level_0\":[\"Image : 7f1042fde8334ec2dd104327a0785072\",\"CA Daily Report : WCA\",\"Audience Types : Custom, Lookalike\",\"Audience Strategy : Mixed\",\"Age Range : 21-54\",\"Landing Pages : www.faballey.com/clothing/tops\",\"Audience Strategy : Retention\",\"Audience Strategy : Prospecting\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\"],\"level_1\":[\"- : -\",\"- : -\",\"- : -\",\"FabAlley : tops\",\"- : -\",\"- : -\",\"Image : 85b8e25839d93bf2308dde89f62e3c62\",\"Audience Types : Lookalike\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\"],\"level_2\":[\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"Image : 727317de2cd5fc2376c73602d32e8f8c\",\"Audience Types : Interests\",\"Audience Types : Lookalike\"],\"level_3\":[\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"Image : 1df469643da69e293445deb2d3dc2fca\",\"Age Range : 18-44\"],\"levels\":[[{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"CA Daily Report\":{\"name\":\"WCA\",\"value\":\"WCA\"}}],[{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}}],[{\"Audience Strategy\":{\"name\":\"Mixed\",\"value\":\"Mixed\"}},{\"FabAlley\":{\"name\":\"tops\",\"value\":\"tops\"}}],[{\"Age Range\":{\"name\":\"21-54\",\"value\":\"21-54\"}}],[{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/tops\",\"value\":\"www.faballey.com/clothing/tops\"}}],[{\"Audience Strategy\":{\"name\":\"Retention\",\"value\":\"Retention\"}},{\"Image\":{\"name\":\"85b8e25839d93bf2308dde89f62e3c62\",\"value\":\"85b8e25839d93bf2308dde89f62e3c62\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Image\":{\"name\":\"727317de2cd5fc2376c73602d32e8f8c\",\"value\":\"727317de2cd5fc2376c73602d32e8f8c\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Image\":{\"name\":\"1df469643da69e293445deb2d3dc2fca\",\"value\":\"1df469643da69e293445deb2d3dc2fca\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Age Range\":{\"name\":\"18-44\",\"value\":\"18-44\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D9CYOXQItvtP23n+6nx0u0/AAAAAAAA8D9g5dAi2/nuP9v5fmq8dOc/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/SOF6FK5H4T8=\",\"dtype\":\"float64\",\"shape\":[10]},\"recall\":{\"__ndarray__\":\"TmIQWDm0yD+8dJMYBFbOP23n+6nx0s0/7nw/NV66yT9U46WbxCDAP42XbhKDwNo/GQRWDi2ynT8bL90kBoGVP9v5fmq8dJM/i2zn+6nxsj8=\",\"dtype\":\"float64\",\"shape\":[10]},\"size\":{\"__ndarray__\":\"AAAAAAAANEAAhxcm3D8yQDrYjnlv8TFAFPxOW/X6MECorXp9IJYwQGCmn0sxaCZAO1+mn0sxIEBfEVnZnKgbQF6YcP946BlA+Z226vWBGEA=\",\"dtype\":\"float64\",\"shape\":[10]},\"spend_prop\":{\"__ndarray__\":\"pHA9CtejJkBcj8L1KNwtQFK4HoXrUS1ApHA9CtejJ0CamZmZmZkeQOF6FK5HwUBACtejcD0K+z+uR+F6FK7zP3E9CtejcPE/KVyPwvUoIEA=\",\"dtype\":\"float64\",\"shape\":[10]}}},\"id\":\"2bb04b3d-e955-411e-835b-fb3cfd3eaef9\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"7765d428-640f-481c-932d-b3aa0df408c4\",\"type\":\"HoverTool\"}]},\"id\":\"57909863-3d19-4e64-9cbf-f25e57f28da7\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis_label\":\"ga_cvr\",\"formatter\":{\"id\":\"d2cb3b8c-ef4c-4771-810d-8c3889051d09\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e4774a0e-700d-417a-99d3-5b8609a41e7a\",\"type\":\"BasicTicker\"}},\"id\":\"d9d2f249-a046-425a-98a0-c99b37d0c383\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"35ce3eaf-f86f-4433-9e00-1d2eefe5c3c4\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"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\":\"7765d428-640f-481c-932d-b3aa0df408c4\",\"type\":\"HoverTool\"},{\"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\":\"a4caa162-66fa-4551-a9bd-6be3571601d0\",\"type\":\"Circle\"},{\"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\":\"1b46864c-73ec-4e25-a89c-6e9fe89de3f6\",\"type\":\"Circle\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e4774a0e-700d-417a-99d3-5b8609a41e7a\",\"type\":\"BasicTicker\"}},\"id\":\"85d9947f-a745-4a8f-8dd2-6a4ffb4955be\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":null,\"text\":\"Performance by paths.\"},\"id\":\"22f12851-75b2-477b-a2f9-ee0cdb106aa4\",\"type\":\"Title\"},{\"attributes\":{\"callback\":null},\"id\":\"9c02d961-f4ad-4508-b2de-13958d196b42\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_color\":{\"value\":\"blue\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"ga_fb_cpv\"},\"y\":{\"field\":\"ga_cvr\"}},\"id\":\"1eff6ac2-02f3-4482-bc8b-89b96b93be8d\",\"type\":\"Circle\"},{\"attributes\":{\"fill_color\":{\"value\":\"red\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"ga_fb_cpv\"},\"y\":{\"field\":\"ga_cvr\"}},\"id\":\"90c62117-f84d-48b4-9c74-4c4baface5eb\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"2bb04b3d-e955-411e-835b-fb3cfd3eaef9\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"90c62117-f84d-48b4-9c74-4c4baface5eb\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1b46864c-73ec-4e25-a89c-6e9fe89de3f6\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"eae22acd-8fca-46e1-b2d5-a24a071ed819\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"9ced8d99-9986-4802-ac25-12bd37362874\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"40bdc7d7-e1f2-4b66-b590-e8ecc7cb7554\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"e4774a0e-700d-417a-99d3-5b8609a41e7a\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_width\":{\"value\":3},\"location\":0.45535292662634075,\"plot\":{\"id\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"2b15af58-dbe5-4db5-baab-554bc7f7c12d\",\"type\":\"Span\"},{\"attributes\":{},\"id\":\"61be6d43-01e0-44f4-9a5e-a8db456d3ddf\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"3f8631a6-b327-4b75-a39b-afde1d429283\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1eff6ac2-02f3-4482-bc8b-89b96b93be8d\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"a4caa162-66fa-4551-a9bd-6be3571601d0\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"0939ce32-3676-4f11-853d-da2ce6a0bb6e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"fce1c438-d72a-474f-98be-b551cddc8622\",\"type\":\"LinearScale\"}],\"root_ids\":[\"f2b480c3-c68b-4993-8280-100a71aea229\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"c6db73a2-ad7c-4942-9033-3124ba5c5f51\",\"elementid\":\"e7419e89-a776-429c-8e0d-ec660c5ba975\",\"modelid\":\"f2b480c3-c68b-4993-8280-100a71aea229\",\"notebook_comms_target\":\"1aa2fde0-e341-421f-907b-402e5c96538d\"}];\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(\"e7419e89-a776-429c-8e0d-ec660c5ba975\")).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=\"d89a8b3d-398e-4155-ab8f-6b01589f48c8\"></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(\"d89a8b3d-398e-4155-ab8f-6b01589f48c8\");\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(\"bddf86a5-da2c-4f3b-92d8-03157450df9c\", 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(\"d89a8b3d-398e-4155-ab8f-6b01589f48c8\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'd89a8b3d-398e-4155-ab8f-6b01589f48c8' 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 = {\"f274e3a2-e60f-4207-b877-d7f87c19fa7f\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"992fb651-e41e-4993-8236-d25d4fa6bacb\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"86148ad7-fbba-4b6f-8ace-da23db9ed894\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"992fb651-e41e-4993-8236-d25d4fa6bacb\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"c14c058c-1211-46c7-8a9f-ace30bb16ed9\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"0e575f70-d84a-45b3-a072-f28f6873ecaa\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"69d29fa1-52ce-49f5-bb7a-5c7df438267d\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"b4705865-7dfd-4706-ad8a-6081e2a3b6b2\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"3f165bf2-01b5-40de-92c6-277465302058\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"ff3d9a92-f87e-480b-8552-455b19bf47ff\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"fe3c316f-3546-4948-a662-15209517f83a\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"49c40f84-48cd-448e-b64d-34001808e3c3\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"3f165bf2-01b5-40de-92c6-277465302058\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"25ddbb91-0a94-433e-9818-66e56843b103\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"9b497e48-4977-43d0-a639-543ffd64fbd5\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"ef6db7a0-1702-4a95-96cf-d89e5bdbe3cc\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"c835d37a-12d5-4bf8-9370-abae5115a3af\",\"type\":\"StringEditor\"},{\"attributes\":{\"columns\":[{\"id\":\"51c7dc23-b5ce-4c38-907b-8ef65c10fc32\",\"type\":\"TableColumn\"},{\"id\":\"c14c058c-1211-46c7-8a9f-ace30bb16ed9\",\"type\":\"TableColumn\"},{\"id\":\"ef6db7a0-1702-4a95-96cf-d89e5bdbe3cc\",\"type\":\"TableColumn\"},{\"id\":\"353d007e-96b7-48fa-825f-d163107335c9\",\"type\":\"TableColumn\"},{\"id\":\"2f5761e0-cb2c-40f6-ae4c-231f168b6bcd\",\"type\":\"TableColumn\"},{\"id\":\"60642231-c154-419c-8e12-724f919fe0ea\",\"type\":\"TableColumn\"},{\"id\":\"5975d6d3-99c1-4e99-a290-eecfaafe7b5b\",\"type\":\"TableColumn\"},{\"id\":\"fb33b91b-e582-49d9-811d-c91955cd3b84\",\"type\":\"TableColumn\"},{\"id\":\"38c0c338-5360-4caf-84ce-accdde2cb200\",\"type\":\"TableColumn\"},{\"id\":\"fe3c316f-3546-4948-a662-15209517f83a\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"6f5f016c-529a-4b30-9ca7-264e295985b8\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"71b25520-d78a-47ad-a845-eca36f6fafe8\",\"type\":\"DataTable\"},{\"attributes\":{\"editor\":{\"id\":\"7e08d63c-eea1-475e-a7f3-a127b6380c21\",\"type\":\"StringEditor\"},\"field\":\"ga_cvr\",\"formatter\":{\"id\":\"7609b74b-3937-41d8-9e25-41654e977877\",\"type\":\"StringFormatter\"},\"title\":\"ga_cvr\"},\"id\":\"60642231-c154-419c-8e12-724f919fe0ea\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"25ddbb91-0a94-433e-9818-66e56843b103\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"e406d1de-b4a9-4929-9ab2-492c89e3c4bd\",\"type\":\"StringEditor\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"imp_factor\",\"spend_prop\",\"precision\",\"level_3\",\"index\",\"ga_cvr\",\"level_0\",\"recall\",\"level_2\",\"levels\",\"ga_fb_cpv\",\"level_1\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"w/UoXI/C5T/2KFyPwvXwP83MzMzMzPA/FK5H4XoU8j+F61G4HoXzP1yPwvUoXOc/exSuR+F67D/2KFyPwvXoP7gehetRuO4/H4XrUbge5T/hehSuR+HqP/YoXI/C9eg/CtejcD0K5z/Xo3A9CtfrPwAAAAAAAOg/\",\"dtype\":\"float64\",\"shape\":[15]},\"ga_fb_cpv\":{\"__ndarray__\":\"cT0K16PwKUAzMzMzMzMrQD0K16NwPStAuB6F61G4KUDNzMzMzMwuQHE9Ctej8CVAUrgehetRJ0DXo3A9ClcsQClcj8L1KCdAw/UoXI/CKUB7FK5H4bowQK5H4XoUrihACtejcD0KIEC4HoXrUTgiQDMzMzMzsyFA\",\"dtype\":\"float64\",\"shape\":[15]},\"imp_factor\":{\"__ndarray__\":\"c2iR7Xw/3T/jpZvEILDaPz0K16NwPdo/okW28/3U2D+oxks3iUHYP/yp8dJNYtA/rkfhehSuxz/TTWIQWDnEP4ts5/up8cI/7FG4HoXrwT+JQWDl0CK7P/p+arx0k7g/Gy/dJAaBtT9zaJHtfD+1P8uhRbbz/bQ/\",\"dtype\":\"float64\",\"shape\":[15]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],\"level_0\":[\"Image : 7f1042fde8334ec2dd104327a0785072\",\"CA Daily Report : WCA\",\"Audience Types : Custom, Lookalike\",\"Audience Strategy : Mixed\",\"Age Range : 21-54\",\"Landing Pages : www.faballey.com/clothing/tops\",\"Audience Strategy : Retention\",\"Audience Strategy : Prospecting\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\",\"Audience Strategy : Retention\",\"Audience Strategy : Retention\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Retention\",\"Daily Report : Open targeting\"],\"level_1\":[\"- : -\",\"- : -\",\"- : -\",\"FabAlley : tops\",\"- : -\",\"- : -\",\"Image : 85b8e25839d93bf2308dde89f62e3c62\",\"Audience Types : Lookalike\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\",\"Landing Pages : www.faballey.com/clothing/tops, www.faballey.com/clothing/dresses, www.faballey.com/clothing/skirts, www.faballey.com/indya, www.faballey.com/curve, Others\",\"Landing Pages : www.faballey.com/clothing/tops, www.faballey.com/clothing/dresses, www.faballey.com/indya, www.faballey.com/curve, www.faballey.com/clothing/skirts, Others\",\"Audience Types : Interests\",\"Landing Pages : www.faballey.com/clothing/dresses, www.faballey.com/clothing/tops, www.faballey.com/indya, www.faballey.com/curve, www.faballey.com/clothing/skirts, Others\",\"Product Category : Tops\"],\"level_2\":[\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"Image : 727317de2cd5fc2376c73602d32e8f8c\",\"Audience Types : Interests\",\"Audience Types : Lookalike\",\"- : -\",\"- : -\",\"Landing Pages : www.faballey.com/curve\",\"- : -\",\"Image : 8e80ca4004a11babf741919a17c68eb7\"],\"level_3\":[\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"Image : 1df469643da69e293445deb2d3dc2fca\",\"Age Range : 18-44\",\"- : -\",\"- : -\",\"- : -\",\"- : -\",\"- : -\"],\"levels\":[[{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"CA Daily Report\":{\"name\":\"WCA\",\"value\":\"WCA\"}}],[{\"Audience Types\":{\"name\":\"Custom, Lookalike\",\"value\":\"Custom, Lookalike\"}}],[{\"Audience Strategy\":{\"name\":\"Mixed\",\"value\":\"Mixed\"}},{\"FabAlley\":{\"name\":\"tops\",\"value\":\"tops\"}}],[{\"Age Range\":{\"name\":\"21-54\",\"value\":\"21-54\"}}],[{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/tops\",\"value\":\"www.faballey.com/clothing/tops\"}}],[{\"Audience Strategy\":{\"name\":\"Retention\",\"value\":\"Retention\"}},{\"Image\":{\"name\":\"85b8e25839d93bf2308dde89f62e3c62\",\"value\":\"85b8e25839d93bf2308dde89f62e3c62\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Image\":{\"name\":\"727317de2cd5fc2376c73602d32e8f8c\",\"value\":\"727317de2cd5fc2376c73602d32e8f8c\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Image\":{\"name\":\"1df469643da69e293445deb2d3dc2fca\",\"value\":\"1df469643da69e293445deb2d3dc2fca\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Age Range\":{\"name\":\"18-44\",\"value\":\"18-44\"}}],[{\"Audience Strategy\":{\"name\":\"Retention\",\"value\":\"Retention\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/tops, www.faballey.com/clothing/dresses, www.faballey.com/clothing/skirts, www.faballey.com/indya, www.faballey.com/curve, Others\",\"value\":\"www.faballey.com/clothing/tops, www.faballey.com/clothing/dresses, www.faballey.com/clothing/skirts, www.faballey.com/indya, www.faballey.com/curve, Others\"}}],[{\"Audience Strategy\":{\"name\":\"Retention\",\"value\":\"Retention\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/tops, www.faballey.com/clothing/dresses, www.faballey.com/indya, www.faballey.com/curve, www.faballey.com/clothing/skirts, Others\",\"value\":\"www.faballey.com/clothing/tops, www.faballey.com/clothing/dresses, www.faballey.com/indya, www.faballey.com/curve, www.faballey.com/clothing/skirts, Others\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/curve\",\"value\":\"www.faballey.com/curve\"}}],[{\"Audience Strategy\":{\"name\":\"Retention\",\"value\":\"Retention\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/dresses, www.faballey.com/clothing/tops, www.faballey.com/indya, www.faballey.com/curve, www.faballey.com/clothing/skirts, Others\",\"value\":\"www.faballey.com/clothing/dresses, www.faballey.com/clothing/tops, www.faballey.com/indya, www.faballey.com/curve, www.faballey.com/clothing/skirts, Others\"}}],[{\"Daily Report\":{\"name\":\"Open targeting\",\"value\":\"Open targeting\"}},{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D9CYOXQItvtP23n+6nx0u0/AAAAAAAA8D9g5dAi2/nuP9v5fmq8dOc/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/SOF6FK5H4T9SuB6F61HgP4PAyqFFtuM/AAAAAAAA8D9CYOXQItvpPy2yne+nxus/\",\"dtype\":\"float64\",\"shape\":[15]},\"recall\":{\"__ndarray__\":\"TmIQWDm0yD+8dJMYBFbOP23n+6nx0s0/7nw/NV66yT9U46WbxCDAP42XbhKDwNo/GQRWDi2ynT8bL90kBoGVP9v5fmq8dJM/i2zn+6nxsj+JQWDl0CKrP/p+arx0k5g/nMQgsHJokT9aZDvfT42nP7gehetRuJ4/\",\"dtype\":\"float64\",\"shape\":[15]},\"spend_prop\":{\"__ndarray__\":\"pHA9CtejJkBcj8L1KNwtQFK4HoXrUS1ApHA9CtejJ0CamZmZmZkeQOF6FK5HwUBACtejcD0K+z+uR+F6FK7zP3E9CtejcPE/KVyPwvUoIECamZmZmZkYQClcj8L1KAJAKVyPwvUo8D+PwvUoXI8KQFK4HoXrUQBA\",\"dtype\":\"float64\",\"shape\":[15]}}},\"id\":\"6f5f016c-529a-4b30-9ca7-264e295985b8\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"editor\":{\"id\":\"c835d37a-12d5-4bf8-9370-abae5115a3af\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"002964d9-e44f-462d-a9df-ad82f2f4e029\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"fb33b91b-e582-49d9-811d-c91955cd3b84\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"3f081738-8b5f-4640-855c-52d4968db83a\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"0e7fc3f0-8308-4733-8fda-d81701ad5ddc\",\"type\":\"StringEditor\"},\"field\":\"ga_fb_cpv\",\"formatter\":{\"id\":\"b4705865-7dfd-4706-ad8a-6081e2a3b6b2\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpv\"},\"id\":\"2f5761e0-cb2c-40f6-ae4c-231f168b6bcd\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"7e08d63c-eea1-475e-a7f3-a127b6380c21\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"6b05d16a-5504-4934-9558-d4748f6aa858\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"1dd9511a-4099-466f-82f1-65b5f0bb742f\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"51c7dc23-b5ce-4c38-907b-8ef65c10fc32\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"a2e08ff1-a94e-4c74-b42c-bf01a4356621\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"0e575f70-d84a-45b3-a072-f28f6873ecaa\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"5975d6d3-99c1-4e99-a290-eecfaafe7b5b\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"002964d9-e44f-462d-a9df-ad82f2f4e029\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"3f081738-8b5f-4640-855c-52d4968db83a\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"69d29fa1-52ce-49f5-bb7a-5c7df438267d\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"38c0c338-5360-4caf-84ce-accdde2cb200\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"6b05d16a-5504-4934-9558-d4748f6aa858\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"a2e08ff1-a94e-4c74-b42c-bf01a4356621\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"1dd9511a-4099-466f-82f1-65b5f0bb742f\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"e406d1de-b4a9-4929-9ab2-492c89e3c4bd\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"49c40f84-48cd-448e-b64d-34001808e3c3\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"353d007e-96b7-48fa-825f-d163107335c9\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"9b497e48-4977-43d0-a639-543ffd64fbd5\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"ff3d9a92-f87e-480b-8552-455b19bf47ff\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"0e7fc3f0-8308-4733-8fda-d81701ad5ddc\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"7609b74b-3937-41d8-9e25-41654e977877\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"86148ad7-fbba-4b6f-8ace-da23db9ed894\",\"type\":\"StringEditor\"}],\"root_ids\":[\"71b25520-d78a-47ad-a845-eca36f6fafe8\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"f274e3a2-e60f-4207-b877-d7f87c19fa7f\",\"elementid\":\"d89a8b3d-398e-4155-ab8f-6b01589f48c8\",\"modelid\":\"71b25520-d78a-47ad-a845-eca36f6fafe8\",\"notebook_comms_target\":\"bddf86a5-da2c-4f3b-92d8-03157450df9c\"}];\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(\"d89a8b3d-398e-4155-ab8f-6b01589f48c8\")).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=\"4d5f171b-075e-4cd6-b42b-04cec5a6898d\"></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(\"4d5f171b-075e-4cd6-b42b-04cec5a6898d\");\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(\"739954b8-d939-4972-8125-421c740453c7\", 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(\"4d5f171b-075e-4cd6-b42b-04cec5a6898d\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '4d5f171b-075e-4cd6-b42b-04cec5a6898d' 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 = {\"95630f1f-5023-4027-9235-940585a2c035\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"992fb651-e41e-4993-8236-d25d4fa6bacb\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"86148ad7-fbba-4b6f-8ace-da23db9ed894\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"992fb651-e41e-4993-8236-d25d4fa6bacb\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"c14c058c-1211-46c7-8a9f-ace30bb16ed9\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"0e575f70-d84a-45b3-a072-f28f6873ecaa\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"69d29fa1-52ce-49f5-bb7a-5c7df438267d\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"b4705865-7dfd-4706-ad8a-6081e2a3b6b2\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"9b497e48-4977-43d0-a639-543ffd64fbd5\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"49c40f84-48cd-448e-b64d-34001808e3c3\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"3f165bf2-01b5-40de-92c6-277465302058\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"25ddbb91-0a94-433e-9818-66e56843b103\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"9b497e48-4977-43d0-a639-543ffd64fbd5\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"ef6db7a0-1702-4a95-96cf-d89e5bdbe3cc\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"c835d37a-12d5-4bf8-9370-abae5115a3af\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"e406d1de-b4a9-4929-9ab2-492c89e3c4bd\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"7e08d63c-eea1-475e-a7f3-a127b6380c21\",\"type\":\"StringEditor\"},\"field\":\"ga_cvr\",\"formatter\":{\"id\":\"7609b74b-3937-41d8-9e25-41654e977877\",\"type\":\"StringFormatter\"},\"title\":\"ga_cvr\"},\"id\":\"60642231-c154-419c-8e12-724f919fe0ea\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"25ddbb91-0a94-433e-9818-66e56843b103\",\"type\":\"StringEditor\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"imp_factor\",\"spend_prop\",\"precision\",\"level_3\",\"index\",\"ga_cvr\",\"level_0\",\"recall\",\"level_2\",\"levels\",\"ga_fb_cpv\",\"level_1\"],\"data\":{\"ga_cvr\":{\"__ndarray__\":\"KVyPwvUovD9SuB6F61HIPylcj8L1KMw/MzMzMzMz0z8=\",\"dtype\":\"float64\",\"shape\":[4]},\"ga_fb_cpv\":{\"__ndarray__\":\"CtejcD0KC0BI4XoUrkccQKRwPQrXoxhAXI/C9ShcFEA=\",\"dtype\":\"float64\",\"shape\":[4]},\"imp_factor\":{\"__ndarray__\":\"9ihcj8L1yD8QWDm0yHa+P1pkO99Pjbc/O99PjZdusj8=\",\"dtype\":\"float64\",\"shape\":[4]},\"index\":[0,1,2,3],\"level_0\":[\"Audience Strategy : Prospecting\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\"],\"level_1\":[\"Lookalike Types : 1-2%\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\",\"Daily Report : Open targeting\"],\"level_2\":[\"Image : 929fad92512d28811db7633c516e0d1c\",\"Audience Types : Lookalike\",\"Lookalike Types : 1-2%\",\"Audience Types : Interests\"],\"level_3\":[\"- : -\",\"Image : c9669afe6bcb09e547b4d46f948411a3\",\"- : -\",\"CA Daily Report : Intrest\"],\"levels\":[[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Image\":{\"name\":\"c9669afe6bcb09e547b4d46f948411a3\",\"value\":\"c9669afe6bcb09e547b4d46f948411a3\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Daily Report\":{\"name\":\"Open targeting\",\"value\":\"Open targeting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"CA Daily Report\":{\"name\":\"Intrest\",\"value\":\"Intrest\"}}]],\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPxSuR+F6FOY/CtejcD0K6z8=\",\"dtype\":\"float64\",\"shape\":[4]},\"recall\":{\"__ndarray__\":\"/Knx0k1ioD+cxCCwcmihP05iEFg5tMg/wcqhRbbzvT8=\",\"dtype\":\"float64\",\"shape\":[4]},\"spend_prop\":{\"__ndarray__\":\"PQrXo3A9/j+uR+F6FK7/P/YoXI/CdTBA9ihcj8L1JEA=\",\"dtype\":\"float64\",\"shape\":[4]}}},\"id\":\"18a45dbb-f2bb-4416-9d3b-e8b49c387028\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"editor\":{\"id\":\"c835d37a-12d5-4bf8-9370-abae5115a3af\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"002964d9-e44f-462d-a9df-ad82f2f4e029\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"fb33b91b-e582-49d9-811d-c91955cd3b84\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"3f081738-8b5f-4640-855c-52d4968db83a\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"0e7fc3f0-8308-4733-8fda-d81701ad5ddc\",\"type\":\"StringEditor\"},\"field\":\"ga_fb_cpv\",\"formatter\":{\"id\":\"b4705865-7dfd-4706-ad8a-6081e2a3b6b2\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpv\"},\"id\":\"2f5761e0-cb2c-40f6-ae4c-231f168b6bcd\",\"type\":\"TableColumn\"},{\"attributes\":{\"columns\":[{\"id\":\"51c7dc23-b5ce-4c38-907b-8ef65c10fc32\",\"type\":\"TableColumn\"},{\"id\":\"c14c058c-1211-46c7-8a9f-ace30bb16ed9\",\"type\":\"TableColumn\"},{\"id\":\"ef6db7a0-1702-4a95-96cf-d89e5bdbe3cc\",\"type\":\"TableColumn\"},{\"id\":\"353d007e-96b7-48fa-825f-d163107335c9\",\"type\":\"TableColumn\"},{\"id\":\"2f5761e0-cb2c-40f6-ae4c-231f168b6bcd\",\"type\":\"TableColumn\"},{\"id\":\"60642231-c154-419c-8e12-724f919fe0ea\",\"type\":\"TableColumn\"},{\"id\":\"5975d6d3-99c1-4e99-a290-eecfaafe7b5b\",\"type\":\"TableColumn\"},{\"id\":\"fb33b91b-e582-49d9-811d-c91955cd3b84\",\"type\":\"TableColumn\"},{\"id\":\"38c0c338-5360-4caf-84ce-accdde2cb200\",\"type\":\"TableColumn\"},{\"id\":\"fe3c316f-3546-4948-a662-15209517f83a\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"18a45dbb-f2bb-4416-9d3b-e8b49c387028\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"99882463-4b61-4755-824d-8f93b0786bd2\",\"type\":\"DataTable\"},{\"attributes\":{\"editor\":{\"id\":\"6b05d16a-5504-4934-9558-d4748f6aa858\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"1dd9511a-4099-466f-82f1-65b5f0bb742f\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"51c7dc23-b5ce-4c38-907b-8ef65c10fc32\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"a2e08ff1-a94e-4c74-b42c-bf01a4356621\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"0e575f70-d84a-45b3-a072-f28f6873ecaa\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"5975d6d3-99c1-4e99-a290-eecfaafe7b5b\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"002964d9-e44f-462d-a9df-ad82f2f4e029\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"3f081738-8b5f-4640-855c-52d4968db83a\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"69d29fa1-52ce-49f5-bb7a-5c7df438267d\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"38c0c338-5360-4caf-84ce-accdde2cb200\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"6b05d16a-5504-4934-9558-d4748f6aa858\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"a2e08ff1-a94e-4c74-b42c-bf01a4356621\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"1dd9511a-4099-466f-82f1-65b5f0bb742f\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"7e08d63c-eea1-475e-a7f3-a127b6380c21\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"3f165bf2-01b5-40de-92c6-277465302058\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"ff3d9a92-f87e-480b-8552-455b19bf47ff\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"fe3c316f-3546-4948-a662-15209517f83a\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"ff3d9a92-f87e-480b-8552-455b19bf47ff\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"0e7fc3f0-8308-4733-8fda-d81701ad5ddc\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"e406d1de-b4a9-4929-9ab2-492c89e3c4bd\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"49c40f84-48cd-448e-b64d-34001808e3c3\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"353d007e-96b7-48fa-825f-d163107335c9\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"7609b74b-3937-41d8-9e25-41654e977877\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"86148ad7-fbba-4b6f-8ace-da23db9ed894\",\"type\":\"StringEditor\"}],\"root_ids\":[\"99882463-4b61-4755-824d-8f93b0786bd2\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"95630f1f-5023-4027-9235-940585a2c035\",\"elementid\":\"4d5f171b-075e-4cd6-b42b-04cec5a6898d\",\"modelid\":\"99882463-4b61-4755-824d-8f93b0786bd2\",\"notebook_comms_target\":\"739954b8-d939-4972-8125-421c740453c7\"}];\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(\"4d5f171b-075e-4cd6-b42b-04cec5a6898d\")).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