Skip to content

Instantly share code, notes, and snippets.

@stkbailey
Last active December 5, 2017 17:46
Show Gist options
  • Save stkbailey/fb736abe59761c9a70c51b38644c2f6e to your computer and use it in GitHub Desktop.
Save stkbailey/fb736abe59761c9a70c51b38644c2f6e to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Creating a baseline model\n",
"\n",
"In our first attempt, we are going to build out a model that predicts the median item sales for each item. Where there is no previous item seen, then we predict it based on class membership.\n",
"\n",
"Steps:\n",
"\n",
"1. Create a timeseries dataframe with only transaction data:\n",
" - Index=(date, item_nbr)\n",
" - Columns=[median_of_unit_sales]\n",
"2. Create an alternate timeseries where data is grouped by \"class\" (for new unit sales):\n",
" - Index=(date, class)\n",
" - Columns=[median_of_unit_sales]\n",
"3. Calculate the median unit sales for each day, across stores, in the last half-year. \n",
"4. Predict training data based on the median of the item sales, inferring new items by \"class\"."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Stephen\\Anaconda2\\envs\\py3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2717: DtypeWarning: Columns (5) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" interactivity=interactivity, compiler=compiler, result=result)\n",
"C:\\Users\\Stephen\\Anaconda2\\envs\\py3\\lib\\site-packages\\numpy\\lib\\arraysetops.py:395: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" mask |= (ar1 == a)\n"
]
}
],
"source": [
"# Read in our packages & data\n",
"import numpy as np # linear algebra\n",
"import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# For simplicity, we will create a variable that indicates the location of our imput files.\n",
"# INPUT_PATH = 'C:\\\\Users\\\\stkba\\\\Documents\\\\Kaggle_Data\\\\Favorita\\\\'\n",
"INPUT_PATH = 'C:\\\\Users\\\\Stephen\\\\Documents\\\\kaggle_favorita\\\\'\n",
"\n",
"# Read the CSV files\n",
"df_items = pd.read_csv(INPUT_PATH + 'items.csv', index_col='item_nbr', \n",
" dtype={'item_nbr':np.uint32, 'class': np.uint16,\n",
" 'perishable': np.bool})\n",
"df_train = pd.read_csv(INPUT_PATH + 'train.csv', index_col='id', parse_dates=['date'],\n",
" dtype={'id':np.uint32, 'store_nbr':np.uint32, 'item_nbr': np.uint32, \n",
" 'onpromotion': np.bool, 'unit_sales': np.float32})\n",
"df_test = pd.read_csv(INPUT_PATH + 'test.csv', index_col='id', parse_dates=['date'],\n",
" dtype={'id':np.uint32, 'store_nbr':np.uint32, 'item_nbr': np.uint32, \n",
" 'onpromotion': np.bool})"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# First, we get the median for each item, for each date\n",
"mdf = (df_train.groupby(['date', 'item_nbr'])\n",
" .agg({'unit_sales': np.median})\n",
" .reset_index(1)\n",
" .merge(df_items, left_on='item_nbr', right_index=True, how='left') )\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x17b8125bb38>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the timeseries for a single item\n",
"fig, ax = plt.subplots(1,1, figsize=(15,3))\n",
"\n",
"ts = mdf.loc[mdf.item_nbr == 103665]\n",
"ts.unit_sales.plot(ax=ax)\n",
"ax.set_title('Median Unit Sales by Date for Item Number 103665')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Write a function to get the median unit sales for the last X days\n",
"def get_median(item_number, median_df, day_range=180):\n",
" '''Expects an item number and median_df. Median_df index is date.'''\n",
" ts = median_df.loc[median_df.item_nbr==item_number]\n",
" if ts.shape[0] > 0:\n",
" return ts.iloc[-day_range:].unit_sales.median()\n",
" else: \n",
" return np.nan\n",
" \n",
"# Create a dictionary for item-level median values\n",
"unique_items = mdf.item_nbr.unique()\n",
"item_medians = dict()\n",
"for item_number in unique_items:\n",
" item_medians[item_number] = get_median(item_number, mdf)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
" # Create a dictionary for class-level median values\n",
"items_to_class = df_items['class'].to_dict()\n",
"mdf['class'] = [items_to_class[x] for x in mdf.item_nbr]\n",
"class_medians = mdf.groupby('class').unit_sales.median().to_dict()\n",
"\n",
"# Combine the item_medians and class_medians into the same dictionary\n",
"all_medians = {**item_medians, **class_medians}"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create a new prediction column - either item or class\n",
"def create_predict_col(s, median_dict):\n",
" '''Accepts a series that contains \"item_nbr\" and \"class\" and returns median values\n",
" based on median_dict.'''\n",
" if s['item_nbr'] in median_dict.keys():\n",
" return median_dict[s['item_nbr']]\n",
" elif s['class'] in median_dict.keys():\n",
" return median_dict[s['class']]\n",
" else:\n",
" return 3.\n",
"\n",
"predict = (df_test.merge(df_items, left_on='item_nbr', right_index=True, how='left') \n",
" .apply(lambda s: create_predict_col(s, all_medians), axis=1)\n",
" .to_frame(name='unit_sales') )"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Write to file for upload\n",
"assert predict.shape[0] == 3370464\n",
"assert predict.index.name == 'id' & predict.columns == ['unit_sales']\n",
"\n",
"predict.to_csv('baseline_prediction.csv')"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [py3]",
"language": "python",
"name": "Python [py3]"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment