{"nbformat": 4, "metadata": {"language_info": {"file_extension": ".py", "codemirror_mode": {"version": 3, "name": "ipython"}, "nbconvert_exporter": "python", "name": "python", "pygments_lexer": "ipython3", "mimetype": "text/x-python", "version": "3.6.3"}, "kernelspec": {"language": "python", "name": "python3", "display_name": "Python 3"}}, "nbformat_minor": 1, "cells": [{"outputs": [], "metadata": {"_cell_guid": "8edecad8-86cf-4282-92d7-2e4912ea5854", "collapsed": true, "_uuid": "5f91df8e9c4d8ee79e11675aecb677a96e490e28"}, "execution_count": null, "source": ["import numpy as np\n", "import pandas as pd\n", "from sklearn import preprocessing, linear_model, model_selection\n", "from sklearn.metrics import r2_score\n", "import gc; gc.enable()\n", "import random\n", "from sklearn.ensemble import RandomForestRegressor\n", "import time\n", "np.random.seed(888)"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "9c62cf83-897d-4c57-8880-feb10b82d8c9", "collapsed": true, "_uuid": "4b374fd430f1c95f43daa540252eb09db0f4f2b2"}, "execution_count": null, "source": ["train = pd.read_csv(\"../input/train.csv\",parse_dates=['date'])\n", "test = pd.read_csv(\"../input/test.csv\",parse_dates=['date'])\n", "stores = pd.read_csv(\"../input/stores.csv\")\n", "items = pd.read_csv(\"../input/items.csv\")\n", "oil = pd.read_csv(\"../input/oil.csv\", parse_dates=['date'], low_memory=False)\n", "holiday = pd.read_csv(\"../input/holidays_events.csv\", parse_dates=['date'])\n", "trans = pd.read_csv(\"../input/transactions.csv\", parse_dates=['date'])"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "56530427-8e60-42a2-8bcd-d582fb9f1967", "collapsed": true, "_uuid": "644f554df0af6acdf6b406a8a76cbb6e67b16a0e"}, "execution_count": null, "source": ["start_time = time.time()\n", "tcurrent   = start_time\n", "train = train[(train['date'].dt.month == 8) & (train['date'].dt.day > 15)]\n", "target = train['unit_sales'].values\n", "target[target < 0.] = 0.\n", "train['unit_sales'] = np.log1p(target)"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "cd864800-4cdc-4762-bf3d-11274fc8e951", "collapsed": true, "_uuid": "1a008d171566f2cd7661cd27a5f38ff2133b95d7"}, "execution_count": null, "source": ["def df_lbl_enc(df):\n", "    for c in df.columns:\n", "        if df[c].dtype == 'object':\n", "            lbl = preprocessing.LabelEncoder()\n", "            df[c] = lbl.fit_transform(df[c])\n", "            print(c)\n", "    return df\n", "\n", "def df_transform(df):\n", "    df['date'] = pd.to_datetime(df['date'])\n", "    df['year'] = df['date'].dt.year\n", "    df['mon'] = df['date'].dt.month\n", "    df['day'] = df['date'].dt.day\n", "    df['date'] = df['date'].dt.dayofweek\n", "    df['onpromotion'] = df['onpromotion'].map({'False': 0, 'True': 1})\n", "    df['perishable'] = df['perishable'].map({0:1.0, 1:1.25})\n", "    df = df.fillna(-1)\n", "    return df"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "d5c68f9e-24c6-4706-a6be-45ce4613bbea", "collapsed": true, "_uuid": "c9b30654850017a2e21cbe4f9c9a2539903b8144"}, "execution_count": null, "source": ["items = df_lbl_enc(items)\n", "train = pd.merge(train, items, how='left', on=['item_nbr'])\n", "test = pd.merge(test, items, how='left', on=['item_nbr'])\n", "del items; gc.collect();"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "f71d4e81-264f-48a4-8783-28251ab5dd1a", "collapsed": true, "_uuid": "4db6b9bed4645d5d837aff83c7b3396199b400ee"}, "execution_count": null, "source": ["trans = pd.read_csv(\"../input/transactions.csv\", parse_dates=['date'])\n", "train = pd.merge(train, trans, how='left', on=['date','store_nbr'])\n", "test = pd.merge(test, trans, how='left', on=['date','store_nbr'])\n", "del trans; gc.collect();\n"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "e9ef1a07-4479-412c-bea3-c62fa4d41cfd", "collapsed": true, "_uuid": "2c3c48465aa0f24234d71f7cf4488accdc1af019"}, "execution_count": null, "source": ["target = train['transactions'].values\n", "target[target < 0.] = 0.\n", "train['transactions'] = np.log1p(target)"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "90f3e0f1-a7c2-4161-8093-09ff3defe7ff", "collapsed": true, "_uuid": "c41d46b7712ba1f7d3f4027a4c2ff9d95f0db2da"}, "execution_count": null, "source": ["stores = df_lbl_enc(stores)\n", "train = pd.merge(train, stores, how='left', on=['store_nbr'])\n", "test = pd.merge(test, stores, how='left', on=['store_nbr'])\n", "del stores; gc.collect();\n", "\n", "holiday = holiday[holiday['locale'] == 'National'][['date','transferred']]\n", "holiday['transferred'] = holiday['transferred'].map({'False': 0, 'True': 1})\n", "train = pd.merge(train, holiday, how='left', on=['date'])\n", "test = pd.merge(test, holiday, how='left', on=['date'])\n", "del holiday; gc.collect();\n", "\n", "train = pd.merge(train, oil, how='left', on=['date'])\n", "test = pd.merge(test, oil, how='left', on=['date'])\n", "del oil; gc.collect();"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "60f94a6c-48a7-4d1a-854e-9dfd367025de", "collapsed": true, "_uuid": "e728a458171ed17f8cb9a737293efadf843572da"}, "execution_count": null, "source": ["train = df_transform(train)\n", "test = df_transform(test)\n", "col = [c for c in train if c not in ['id', 'unit_sales','perishable','transactions']]\n", "\n", "x1, x2 = model_selection.train_test_split(train, test_size = .3, random_state = 12)\n", "\n", "\n", "y1 = x1['unit_sales'].values\n", "y2 = x2['unit_sales'].values\n", "y_train = train['unit_sales'].values\n", "def r2_func(y, pred):\n", "    return r2_score(y, pred)"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "67f8c848-c69a-4a38-bc30-b4a65ee904b3", "collapsed": true, "_uuid": "4a0357570ae0ca6f90ae31d6344e45cb8449a7db"}, "execution_count": null, "source": ["r1 = linear_model.LinearRegression(n_jobs=-1)\n", "#r = RandomForestRegressor(n_estimators=90,max_depth =3, n_jobs=-1, random_state=2, verbose=0, warm_start=True)\n", "r1.fit(x1[col], y1)\n", "a1 = r2_func(y1, r1.predict(x1[col]))\n", "a = r2_func(y2, r1.predict(x2[col]))\n", "print('Performance: R2 = ',a1, a)"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "58eb9bff-262e-443d-860c-a3ea54be7124", "collapsed": true, "_uuid": "8221efa8065d824afc33c321bb2464e68a82bbb5"}, "execution_count": null, "source": ["test['unit_sales'] = r1.predict(test[col])\n", "test['unit_sales'] = test['unit_sales'].clip(lower=0.+1e-12 )\n", "my_submission = pd.DataFrame({'id': test.id, 'unit_sales': test.unit_sales})\n", "my_submission.to_csv('submission.csv', index=False)\n", "\n"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "06f3a721-3746-4606-93ad-96430ed891a2", "collapsed": true, "_uuid": "65c8659a7e0522db4addd7f1d8e12f11d6e3d856"}, "execution_count": null, "source": ["from sklearn.model_selection import learning_curve\n", "num_folds = 7\n", "\n", "def plot_curve(ticks, train_scores, test_scores):\n", "    train_scores_mean = np.mean(train_scores, axis=1)\n", "    train_scores_std = np.std(train_scores, axis=1)\n", "    test_scores_mean = np.mean(test_scores, axis=1)\n", "    test_scores_std = np.std(test_scores, axis=1)\n", "\n", "    plt.figure()\n", "    plt.fill_between(ticks,train_scores_mean - train_scores_std, train_scores_mean + train_scores_std, alpha=0.1, color=\"b\")\n", "    plt.fill_between(ticks,test_scores_mean - test_scores_std, test_scores_mean + test_scores_std, alpha=0.1, color=\"r\")\n", "    plt.plot(ticks, train_scores_mean, 'b-', label='Training score')\n", "    plt.plot(ticks, test_scores_mean, 'r-', label='CV score')\n", "    plt.legend()\n", "    return plt.gca()\n", "\n", "# Utility to plot the learning curve of a classifier for training set X and target y.\n", "def plot_learning_curve(clf, X, y, scoring='accuracy'):\n", "    ax = plot_curve(*learning_curve(r, X, y, cv=num_folds, scoring=scoring, train_sizes=np.linspace(0.1,1,10), n_jobs=-1))\n", "    ax.set_title('Learning curve: {}'.format(clf.__class__.__name__))\n", "    ax.set_xlabel('Training set size')\n", "    ax.set_ylabel(scoring)"], "cell_type": "code"}, {"outputs": [], "metadata": {"_cell_guid": "3ede102c-5428-4eaf-be57-85e190c9b642", "collapsed": true, "_uuid": "e58f1d58da093c5cc7d92645aff80c6d0f9a9c46"}, "execution_count": null, "source": ["plot_learning_curve(r1, x1, y1)"], "cell_type": "code"}]}