Skip to content

Instantly share code, notes, and snippets.

@giulioungaretti
Created January 9, 2015 12:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save giulioungaretti/3e32a1820f55a83b85cd to your computer and use it in GitHub Desktop.
Save giulioungaretti/3e32a1820f55a83b85cd to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "",
"signature": "sha256:af408a93b8f53cb53d14d0b0af1021e673268a0fff4faab8ef0e7045eaa4e5c1"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%load_ext autoreload \n",
"%autoreload 2\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('ggplot')\n",
"plt.rcParams['figure.figsize'] = 15, 10"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"prompt_number": 150
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 151
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from pandify import pepare"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 152
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from db_io import db_io\n",
"from pandify import pandify_pd_from_db, do\n",
"from gp import data\n",
"import matplotlib.pyplot as plt\n",
"import mysql.connector\n",
"import pandas as pd\n",
"import numpy as np\n",
"from datetime import date\n",
"from sklearn.metrics import r2_score"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 153
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"db = db_io(host='127.0.0.1', port='3306', user='giulio', passwd='fmandaudialvergackle',db='statistics')\n",
"connect = db.connect()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 154
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#single "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"query = '''\n",
" /* this query takes counts from just group 8 which is the apps*/\n",
" SELECT\n",
" catalog.id,\n",
" catalog.secureid,\n",
" catalog.publish,\n",
" catalog.expires,\n",
" catalog.runfrom,\n",
" catalog_view_group.uniquecount as view_unique,\n",
" catalog_view_group.count as view_count,\n",
" catalog_pageview_group.count as pageview_count,\n",
" UNIX_TIMESTAMP(catalog_view_group.fromtime) as yearweek\n",
" FROM `main`.`catalog`\n",
" LEFT JOIN\n",
" statistics.catalog_view_group ON catalog_view_group.catalogid = catalog.id\n",
" AND catalog_view_group.groupid = %s\n",
" LEFT JOIN\n",
" statistics.catalog_pageview_group ON catalog_pageview_group.catalogid = catalog.id\n",
" AND catalog_pageview_group.fromtime = catalog_view_group.fromtime\n",
" AND catalog_pageview_group.groupid = %s\n",
" WHERE\n",
" catalog.dealer = %s #netto\n",
" ORDER BY id DESC\n",
" '''\n",
"dealer = 5\n",
"\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 155
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df = pandify_pd_from_db(db.query_to_df(query,[8,8,dealer]), offer=True)\n",
"dA = data(df, \"MAE\")\n",
"dA.df.view_unique.plot()\n",
"dA.df.view_unique.tail()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"loaded dataframe from MySQL. records: 2791\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 156,
"text": [
"yearweek\n",
"2014-12-14 48817\n",
"2014-12-21 48782\n",
"2014-12-28 50351\n",
"2015-01-04 49885\n",
"2015-01-11 60572\n",
"Freq: W-SUN, Name: view_unique, dtype: float64"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAA30AAAJxCAYAAAD2P9t2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl81NW9//HX+SYsgQwJCWEJm0BA9h0BUUBcKhWVei22\n2kWU1tr+RPF28dpNr7VaW0VQWnvV9rbVLtoWtLdqLQqIIhI2gYCIgKyyZmfJ9v38/hiIYraZZJKZ\nDO/n49FHYfL9nvOZOaTNJ+d8Px9nZoaIiIiIiIjEJS/aAYiIiIiIiEjjUdInIiIiIiISx5T0iYiI\niIiIxDElfSIiIiIiInFMSZ+IiIiIiEgcU9InIiIiIiISxxLrumD//v08+uijlX8/ePAg1113HRMn\nTmTu3LkcOXKEjIwM5syZQ9u2bQFYuHAhS5YswfM8Zs6cybBhwwDYsWMHCxYsoKysjBEjRjBz5kwA\nysrKePzxx9m5cyeBQIA77riDjIyMxni/IiIiIiIiZ5U6d/oyMzN56KGHeOihh3jwwQdp1aoV5513\nHosWLWLo0KHMmzePwYMHs2jRIgD27t3LihUreOSRR7j77rt56qmnON0K8Mknn+TWW29l/vz5HDhw\ngPXr1wPw+uuvEwgEmD9/PldccQXPPvtsnYHn5OQ05H1LA+nzj31ao9inNYptWp/YpzWKfVqj2Kb1\niX11rVGoaxjW8c6NGzfSuXNnOnTowOrVq5k0aRIAkydPJjs7G4Ds7GwmTJhAYmIiHTt2pHPnzmzb\nto28vDxOnjxJVlYWABMnTmTVqlUAZ4w1duxYNm7cWGcs+kcaXfr8Y5/WKPZpjWKb1if2aY1in9Yo\ntml9Yl9Ukr633nqLCRMmAFBQUEBqaioAKSkpFBQUAJCXl0d6enrlPenp6eTm5pKXl0daWlrl62lp\naeTm5gKQm5tbeU9CQgJt2rShuLg4nNAiLtrfBNGevy6HDh2KdghR/4yiPX9dor1G0f58oj1/KLRG\nsb1G0V4fiP5nFO356xLtNYr25xPt+UNxtq9RXaIdn9anbtGOMVJrFHLSV15ezpo1axg/fnyVrznn\nIhJMLIn2Akd7/rocPnw42iFE/TOK9vx1ifYaRfvzifb8odAaxfYaRXt9IPqfUbTnr0u01yjan0+0\n5w/F2b5GdYl2fFqfukU7xkitkbPTD9zVITs7m1dffZXvf//7ANxxxx3cc889pKamkpeXx7333suj\njz5a+Wzf9OnTAbj//vuZMWMGGRkZ3HvvvcydOxeAN998ky1btvC1r32N+++/n89//vP069ePiooK\nvv71r/P000+fMX9OTs4ZH/qMGTMa/u5FRERERESaseeee67yz4MGDWLQoEFVrqmzeudpnzzaCTB6\n9GiWLl3K9OnTWbZsGWPGjKl8fd68eUybNo3c3FwOHDhAVlYWzjmSkpLYtm0bWVlZLF++nKlTp1be\ns2zZMvr168fKlSsZMmRIlfmrewP79+8PNXyJsEAgQFFRUbTDkFpojWKf1ii2aX1in9Yo9mmNYpvW\nJ/bVtUaZmZkhbYaFlPSdPHmSjRs3csstt1S+Nn36dObOncuSJUsqWzYAdOvWjfHjxzNnzhwSEhK4\n+eabK49/zpo1iwULFlBaWsqIESMYPnw4AFOmTOGxxx5j9uzZBAIBbr/99lDCEhERERERkTqEfLwz\nFmmnL3r0m6HYpzWKfVqj2Kb1iX1ao9inNYptWp/YF8pOXyjCqt4pIiIiIiIizYuSPhERERERkTim\npE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJ\nY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERER\nkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERER\nERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhER\nERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekT\nERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piS\nPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSO\nKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE\n4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERE\nRCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERE\nRERE4piSPhERERERkTimpE9ERERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9E\nRERERCSOKekTERERERGJY0r6RERERERE4piSPhERERERkTimpE9ERERERKSZsfzckK9NDOWiY8eO\n8cQTT7B3714AvvnNb9KlSxfmzp3LkSNHyMjIYM6cObRt2xaAhQsXsmTJEjzPY+bMmQwbNgyAHTt2\nsGDBAsrKyhgxYgQzZ84EoKysjMcff5ydO3cSCAS44447yMjICOtNi4iIiIiInC3s77+DgT8P6dqQ\ndvp++9vfMmLECObOncsvfvELunbtyqJFixg6dCjz5s1j8ODBLFq0CIC9e/eyYsUKHnnkEe6++26e\neuopzAyAJ598kltvvZX58+dz4MAB1q9fD8Drr79OIBBg/vz5XHHFFTz77LP1ed8iIiIiIiJnBSvI\nC/naOpO+48eP89577zFlyhQAEhISaNOmDatXr2bSpEkATJ48mezsbACys7OZMGECiYmJdOzYkc6d\nO7Nt2zby8vI4efIkWVlZAEycOJFVq1YBnDHW2LFj2bhxYxhvV0RERERE5CwTRtJX5/HOQ4cO0a5d\nO375y1+ya9cuevXqxY033khBQQGpqakApKSkUFBQAEBeXh59+/atvD89PZ3c3FwSExNJS0urfD0t\nLY3c3OA51NzcXNLT04GPk8ri4mKSk5NDfiMiIiIiIiJnjcL8kC+tc6evoqKCnTt3ctlll/Gzn/2M\n1q1bVx7lPM05F36QIiIiIiIiEjYrL4fjxSFfX+dOX3p6OmlpaZXHMseNG8fChQtJTU0lPz+f1NRU\n8vLySElJAYI7eEePHq28/+jRo5VjnN7Z++Trp+85cuQIaWlpVFRUcPz48Sq7fDk5OeTk5FT+fcaM\nGQQCgZDfqERWy5Yt9fnHOK1R7NMaxTatT+zTGsU+rVFs0/rEvprWyM89QlEgmH8999xzla8PGjSI\nQYMGVbm+zqQvNTWVDh06sH//fjIzM9mwYQPdu3ene/fuLF26lOnTp7Ns2TLGjBkDwOjRo5k3bx7T\npk0jNzeXAwcOkJWVhXOOpKQktm3bRlZWFsuXL2fq1KmV9yxbtox+/fqxcuVKhgwZUiWO6t5AUVFR\n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\nAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x11efa1250>"
]
}
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dA.analyze()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Fitting 5 folds for each of 5000 candidates, totalling 25000 fits\n"
]
}
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a = {}\n",
"for i in y_real.index.values:\n",
" for j in dA.future_df.index.values:\n",
" if i ==j:\n",
" a[j] = dA.future_df.Prediction.ix[i]\n",
"y_pred = pd.DataFrame.from_dict(a, orient=\"index\")\n",
"y_real = dA.df.view_unique_sum[-dA.no_weeks:]\n",
"print r2_score(y_real, y_pred[0].values)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig, ax1 = plt.subplots(2,1)\n",
"dA.df.view_unique_sum.plot(ax=ax1[0], style='ko')\n",
"dA.future_df.plot(ax =ax1[0])\n",
"y_real = dA.df.view_unique_sum[-dA.no_weeks:]\n",
"dA.future_df[(dA.future_df.index >= dA.df.view_unique_sum.index[-dA.no_weeks:][0]) & (dA.future_df.index <= dA.df.view_unique_sum.index[-dA.no_weeks:][-1])].Prediction.plot(style='-o', ax =ax1[1])\n",
"dA.future_df[(dA.future_df.index >= dA.df.view_unique_sum.index[-dA.no_weeks:][0]) & (dA.future_df.index <= dA.df.view_unique_sum.index[-dA.no_weeks:][-1])][u'Upper 90% confidence'].plot(style='k--', ax =ax1[1])\n",
"dA.future_df[(dA.future_df.index >= dA.df.view_unique_sum.index[-dA.no_weeks:][0]) & (dA.future_df.index <= dA.df.view_unique_sum.index[-dA.no_weeks:][-1])][u'Lower 90% confidence'].plot(style='k-.', ax =ax1[1])\n",
"y_real.plot(style=\"o-\", ax =ax1[1])\n",
"print r2_score(dA.df.view_unique_sum[-dA.no_weeks:],dA.future_df[(dA.future_df.index >= dA.df.view_unique_sum.index[-dA.no_weeks:][0]) & (dA.future_df.index <= dA.df.view_unique_sum.index[-dA.no_weeks:][-1])].Prediction)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"tempdf = dA.future_df[1:]\n",
"tempdf['test'] = dA.future_df.Prediction[1:].values-dA.future_df.Prediction[:-1].values\n",
"(tempdf[u'Upper 90% confidence'] )= dA.future_df[u'Upper 90% confidence'][1:].values-dA.future_df[u'Upper 90% confidence'][:-1].values\n",
"tempdf[u'Lower 90% confidence'] = dA.future_df[u'Lower 90% confidence'][1:].values-dA.future_df[u'Lower 90% confidence'][:-1].values\n",
"tempdf[u'Upper 90% confidence'].plot(style =\"k--\")\n",
"tempdf[u'Lower 90% confidence'].plot(style =\"k-.\")\n",
"tempdf.test.plot(style =\"r\")\n",
"dA.df.view_unique[-dA.no_weeks:].plot( label=\"Test\", style =\"go\")\n",
"dA.df.view_unique[:-dA.no_weeks].plot( label=\"Test\", style =\"ko\")"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!git add Example-offers-feature-eng.ipynb "
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!git ci \"testing easy dealers one month only\""
],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment