{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dive into the Competition\n", "> Now that you know the basics of Kaggle competitions, you will learn how to study the specific problem at hand. You will practice EDA and get to establish correct local validation strategies. You will also learn about data leakage. This is the Summary of lecture \"Winning a Kaggle Competition in Python\", via datacamp.\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Chanseok Kang\n", "- categories: [Python, Datacamp, Kaggle, Machine_Learning]\n", "- image: images/stratified_kfold.png" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "plt.style.use('ggplot')\n", "plt.rcParams['figure.figsize']=(10, 8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Understand the problem\n", "- Solution workflow\n", "![sw](image/solution_workflow.png)\n", "- Custom Metric (Root Mean Squared Error in a Logarithmic scale)\n", "$$ RMSLE = \\sqrt{\\frac{1}{N}\\sum_{i=1}^N (\\log(y_i + 1) - \\log(\\hat{y_i} + 1))^2} $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define a competition metric\n", "Competition metric is used by Kaggle to evaluate your submissions. Moreover, you also need to measure the performance of different models on a local validation set.\n", "\n", "For now, your goal is to manually develop a couple of competition metrics in case if they are not available in `sklearn.metrics`.\n", "\n", "In particular, you will define:\n", "\n", "- Mean Squared Error (MSE) for the regression problem:\n", "\n", "$$ MSE = \\frac{1}{N} \\sum_{i=1}^{N}(y_i - \\hat{y_i})^2 $$\n", "\n", "- Logarithmic Loss (LogLoss) for the binary classification problem:\n", "\n", "$$ LogLoss = -\\frac{1}{N} \\sum_{i = 1}^N (y_i \\ln p_i + (1 - y_i) \\ln (1 - p_i)) $$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "sample = pd.read_csv('./dataset/sample_reg_true_pred.csv')\n", "y_regression_true, y_regression_pred = sample['true'].to_numpy(), sample['pred'].to_numpy()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sklearn MSE: 0.15418. \n", "Your MSE: 0.15418. \n" ] } ], "source": [ "from sklearn.metrics import mean_squared_error\n", "\n", "# Define your own MSE function\n", "def own_mse(y_true, y_pred):\n", " # Raise differences to the power of 2\n", " squares = np.power(y_true - y_pred, 2)\n", " # Find mean over all observations\n", " err = np.mean(squares)\n", " return err\n", "\n", "print('Sklearn MSE: {:.5f}. '.format(mean_squared_error(y_regression_true, y_regression_pred)))\n", "print('Your MSE: {:.5f}. '.format(own_mse(y_regression_true, y_regression_pred)))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "sample_class = pd.read_csv('./dataset/sample_class_true_pred.csv')\n", "y_classification_true, y_classification_pred = sample_class['true'].to_numpy(), sample_class['pred'].to_numpy()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sklearn LogLoss: 1.10801\n", "Your LogLoss: 1.10801\n" ] } ], "source": [ "from sklearn.metrics import log_loss\n", "\n", "# Define your own LogLoss function\n", "def own_logloss(y_true, prob_pred):\n", " # Find loss for each observation\n", " terms = y_true * np.log(prob_pred) + (1 - y_true) * np.log(1 - prob_pred)\n", " # Find mean over all observations\n", " err = np.mean(terms)\n", " return -err\n", "\n", "print('Sklearn LogLoss: {:.5f}'.format(log_loss(y_classification_true, y_classification_pred)))\n", "print('Your LogLoss: {:.5f}'.format(own_logloss(y_classification_true, y_classification_pred)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initial EDA\n", "- Goal of EDA\n", " - Size of the data\n", " - Properties of the target variable\n", " - Properties of the features\n", " - Generate ideas for feature engineering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EDA statistics\n", "As mentioned in the slides, you'll work with New York City taxi fare prediction data. You'll start with finding some basic statistics about the data. Then you'll move forward to plot some dependencies and generate hypotheses on them." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train shape: (20000, 8)\n", "Test shape: (9914, 7)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idfare_amountpickup_datetimepickup_longitudepickup_latitudedropoff_longitudedropoff_latitudepassenger_count
004.52009-06-15 17:26:21 UTC-73.84431140.721319-73.84161040.7122781
1116.92010-01-05 16:52:16 UTC-74.01604840.711303-73.97926840.7820041
225.72011-08-18 00:35:00 UTC-73.98273840.761270-73.99124240.7505622
337.72012-04-21 04:30:42 UTC-73.98713040.733143-73.99156740.7580921
445.32010-03-09 07:51:00 UTC-73.96809540.768008-73.95665540.7837621
\n", "
" ], "text/plain": [ " id fare_amount pickup_datetime pickup_longitude \\\n", "0 0 4.5 2009-06-15 17:26:21 UTC -73.844311 \n", "1 1 16.9 2010-01-05 16:52:16 UTC -74.016048 \n", "2 2 5.7 2011-08-18 00:35:00 UTC -73.982738 \n", "3 3 7.7 2012-04-21 04:30:42 UTC -73.987130 \n", "4 4 5.3 2010-03-09 07:51:00 UTC -73.968095 \n", "\n", " pickup_latitude dropoff_longitude dropoff_latitude passenger_count \n", "0 40.721319 -73.841610 40.712278 1 \n", "1 40.711303 -73.979268 40.782004 1 \n", "2 40.761270 -73.991242 40.750562 2 \n", "3 40.733143 -73.991567 40.758092 1 \n", "4 40.768008 -73.956655 40.783762 1 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train = pd.read_csv('./dataset/taxi_train_chapter_4.csv')\n", "test = pd.read_csv('./dataset/taxi_test_chapter_4.csv')\n", "\n", "# Shapes of train and test data\n", "print('Train shape:', train.shape)\n", "print('Test shape:', test.shape)\n", "\n", "# train head()\n", "train.head()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 20000.000000\n", "mean 11.303321\n", "std 9.541637\n", "min -3.000000\n", "25% 6.000000\n", "50% 8.500000\n", "75% 12.500000\n", "max 180.000000\n", "Name: fare_amount, dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Describe the target variable\n", "train.fare_amount.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 13999\n", "2 2912\n", "5 1327\n", "3 860\n", "4 420\n", "6 407\n", "0 75\n", "Name: passenger_count, dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Train distribution of passengers within rides\n", "train.passenger_count.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EDA plots I\n", "After generating a couple of basic statistics, it's time to come up with and validate some ideas about the data dependencies. Again, the train DataFrame from the taxi competition is already available in your workspace.\n", "\n", "To begin with, let's make a scatterplot plotting the relationship between the fare amount and the distance of the ride. Intuitively, the longer the ride, the higher its price." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def haversine_distance(train):\n", " \n", " data = [train]\n", " lat1, long1, lat2, long2 = 'pickup_latitude', 'pickup_longitude', 'dropoff_latitude', 'dropoff_longitude'\n", " \n", " for i in data:\n", " R = 6371 #radius of earth in kilometers\n", " #R = 3959 #radius of earth in miles\n", " phi1 = np.radians(i[lat1])\n", " phi2 = np.radians(i[lat2])\n", " \n", " delta_phi = np.radians(i[lat2]-i[lat1])\n", " delta_lambda = np.radians(i[long2]-i[long1])\n", " \n", " #a = sin²((φB - φA)/2) + cos φA . cos φB . sin²((λB - λA)/2)\n", " a = np.sin(delta_phi / 2.0) ** 2 + np.cos(phi1) * np.cos(phi2) * np.sin(delta_lambda / 2.0) ** 2\n", " \n", " #c = 2 * atan2( √a, √(1−a) )\n", " c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1-a))\n", " \n", " #d = R*c\n", " d = (R * c) #in kilometers\n", " \n", " return d" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAH0CAYAAAB1tvomAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXhU9b0/8Pc5M5ksk8lGQoCEJexLjVQiOyIaEKRWobVVgaL+rvdqKT6Vp71uLViV1g3BheIVtVrtRe1TLmq1iIiyKEqC2khAIMhOyE6WyTrnfH9/fGcmmWRmmEBmzkzyfj0PT8iZ7TvnJMyb7/L5KkIIASIiIiIKKdXoBhARERH1RAxhRERERAZgCCMiIiIyAEMYERERkQEYwoiIiIgMwBBGREREZACGMCIKGwsXLsTs2bONboZXRUVFUBQFX3zxhdFNcfvd736HkSNHhuz12l+fcL5eRJGAIYyojVtvvRWKonT48+abbxrdtIg2aNAgPProo0Y3I2IdO3YMiqJg165dRjfFw9q1a7Fhw4aA768oCt54440gtogospiNbgBRuJk2bRrefvttj2NJSUkX/HzNzc2wWCwX2yyisJOYmGh0E4giGnvCiNqxWCzo06ePx5+YmBgAQF5eHq655hqkpaXBZrNh/Pjx2LJli8fjMzMzsWLFCtx5553o1asXpk+fDgCora3F0qVL0a9fP8TFxWHcuHF45513/LblyJEjmDdvHvr27Yu4uDhkZ2fjf//3fz3uM3XqVPzXf/0XHnjgAaSlpSEpKQnLly+HrutYsWIF0tPT0bt3byxfvtzjcdXV1bjjjjuQlpaGmJgYjB8/Hh9//LH7dl/Db217tRwOBxRFwQsvvIAFCxYgPj4e/fv3x6pVqzzad/z4cfz+97939yyeOnXK7/t+8skn3efpxhtvRGVlpfu2QK7Bxo0bMXbsWMTFxSEpKQkTJ05EQUGB+/ZDhw5h3rx5SEpKQnJyMq655hoUFhZ6PMeGDRswZMgQxMTEYMqUKdi3b5/fNgOAEAKPP/44srKyYLFYMGTIEDz33HMe98nMzMTDDz+MpUuXIjk5Genp6fjv//5v6Lru9TkdDgeysrIAyP8gKIqCoUOHdni/I0aMQHx8PK666iocPXrU4/a8vDzMnDkT8fHx6N27N37605/i5MmTft9LRUUFbrzxRlitVqSnp2PFihUd7tN+OPLbb7/FzJkzkZSUBKvVilGjRrl/XjMzMwEAixYtgqIoMJtlH0BlZSUWLFiA/v37IzY2FiNHjsSaNWvQdjMX1+u88MILGDhwIBITEzFv3jyUl5d7tGfLli2YOnWq+7pfeeWVHufib3/7Gy699FLExMQgKysLv/nNb1BfX+/3PBAFlSAit8WLF4urr77a5+0ff/yxeO2110RhYaE4ePCguO+++4TFYhGHDx923ycjI0PYbDbx8MMPi4MHD4r9+/cLXdfFtGnTxIwZM8SuXbvEkSNHxLp160RUVJT49NNPfb7eN998I/785z+Lf//736KoqEisXr1aqKoqtm/f7r7PlClTREJCgrj//vvFwYMHxYsvvigAiDlz5oj77rtPHDx4ULz88ssCgNiyZYv7cTfccIPIysoSH374odi/f79YsmSJsFgs4tChQ0IIIQ4fPiwAiN27d3u0aeDAgeKRRx4RQgjR0tIiAIg+ffqIl156SRw+fFisWrVKABA7duwQQghRUVEhMjMzxb333iuKi4tFcXGx0DTN6/tdsGCBsNls4oYbbhAFBQVi27ZtYvDgwWLevHkBX4NTp04Js9ksVq1aJb7//nuxf/9+8cYbb4h9+/YJIYQ4c+aMSEtLE0uWLBEFBQXiwIED4s477xSpqamivLxcCCHEnj17hKIo4sEHHxTfffed+Pvf/y4GDBjg9Xy0tWbNGhEbGyvWr18vDh06JNauXSssFot49dVXPX4+kpKSxBNPPCEOHTok/va3vwmTyST++te/+nzePXv2CADinXfeEcXFxaKsrEwIIcSDDz4orFarmD17tti7d6/46quvRHZ2trjqqqvcjy0oKBBxcXHiD3/4gzhw4ID497//LebPny9GjBghmpqafL7mj370IzFs2DCxbds28e2334qbbrpJ2Gw2cc0113hcr7bfjxo1SixcuFDs379fHDlyRLz//vvi/fffF0IIUVpaKgCI559/XhQXF4uzZ8+6r9fjjz8u9u7dK77//nvx17/+VcTGxnqcjwULFojExESxYMECsW/fPrFz506RmZkpbr/9dvd9Nm/eLFRVFffcc4/45ptvxP79+8WLL77o/nlev369SElJEa+//ro4cuSI+PTTT8WYMWPErbfe6vMcEAUbQxhRG4sXLxYmk0lYrVb3n8GDB/t9zOjRo8Vjjz3m/j4jI0PMmjXL4z4fffSRiImJETU1NR7HFy1aJH7yk590qo3XXnutuPPOO93fT5kyRYwbN87jPsOHDxdjx47t0M57771XCCHEd999JwCIDz/80H27rusiOztb3HHHHUKIzoWwe+65x+M+Q4YMEb/73e+8PsYfVwhre57ef/99AUB8//33Ph/X9hq4AsvJkye93vfBBx8UU6ZM8Tim67oYOHCgeO6554QQQvz85z8XV1xxhcd9Vq9efd4Q1qdPH3H//fd7HPvVr34lhg0b5v4+IyPDI1QKIcTVV18tFi5c6PN5jx49KgCInTt3dngvZrPZHR6FEOL1118XqqqK5uZmIYQ8pwsWLPB4XH19vbBYLOK9997z+noHDhwQAMS2bdvcxxoaGkR6errfEBYXFydef/11n+8DgN/bXX75y1+K2bNne7xOenq6R2h85JFHRGZmpvv7iRMniuuvv97nc2ZkZIj169d7HPv444+Foigdfi+JQoXDkUTtTJgwAd988437T9shutLSUtx1110YMWIEkpKSEB8fj++++w7Hjx/3eI7x48d7fJ+Xl4empib07dsX8fHx7j9vvvkmDh8+7LMtdrsd9957L8aMGYOUlBTEx8djy5YtHV7v0ksv9fi+T58+yM7O7nCstLQUANxDb9OmTXPfrigKpk2b1mFYLhBjx471+D4jIwMlJSWdfh4A+MEPfgCbzeb+fsqUKQCAAwcOADj/NfjhD3+I3NxcjBo1CvPnz8ezzz7rMfyZl5eHL7/80uM62Gw2nDx50n0t9u/fj8mTJ3u0a+rUqX7bXVVVhbNnz+KKK67wOD59+nQcOXIETU1N7mNdeb769++PXr16eTyXrusoKysDIN/v3//+d4/3m5aWhpaWFp8/e/v374eiKJg0aZL7WExMDHJycvy25be//S1uu+02zJgxA3/4wx/wzTffnLf9mqbhj3/8Iy699FKkpqYiPj4e69ev7/AzPnr0aI+5le3P2VdffYVZs2Z5fY3i4mKcPn0ad999t8d5uO666yCEQFFR0XnbSRQMnJhP1E5sbGyHOTcuixYtwtmzZ/Hkk08iKysLsbGx+OlPf4rm5maP+1mtVo/vdV1Hr169sHv37g7P6W/S/rJly/Cvf/0Lq1atwvDhw2G1WvHrX/8ajY2NHveLiory+F5RFK/H2s47UhSlw+sJIdzHVVV1H2urpaXlvO+h/Wt1pfNdA7PZjC1btmDPnj3YunUr3n77bdx7773YuHEj5syZA13Xcc0112DNmjUdnts10bzteQiU6zy1f1z78wd07fny9lwA3M+n6zpuvfVW/Pa3v+3w2NTUVK/P6a3NgXjooYewaNEibN68Gdu2bcPKlSvxwAMP4KGHHvL5mCeeeAJPPPEEVq9ejbFjx8Jms+HJJ5/0+M8PcP5z5u+aue73/PPPdwjJgAyyREZgCCPqhB07duDZZ5/Fj3/8YwBysv2xY8fO20OQk5OD8vJyOByOTtV12rFjBxYtWoQbb7wRgOw1OHToEAYMGHDhbwLAmDFjIITAzp073b0HQgjs2rULEydOBAD07t0bAHDmzBn3486ePYvi4uJOv57FYoGmaQHdt7CwEHV1dYiPjwcAfP755wDgPm+BXANFUTBhwgRMmDABDz74IHJzc/Hqq69izpw5yMnJwYYNG9C/f39ER0d7bcOYMWPw2WefeRxr/317KSkp6NOnD7Zv345rrrnGfXzHjh0YOnSoz9cKhCuABHoO28rJyUFBQQGGDBkScLB0/Xzs3r0bM2bMAAA0NTVh7969HXpd2xsyZAiWLFmCJUuW4NFHH8Vzzz3nDmFRUVEd3sOOHTswd+5c3Hbbbe5j/nqHfRk3bhw+/PBD3HXXXR1u69evH/r27YtDhw7h9ttv7/RzEwULhyOJOmHEiBF44403sG/fPnz99de46aabAurBmDVrFq688kpcf/312LRpE44ePYq9e/fi2WefxSuvvOL39TZt2oS8vDwUFhbiP/7jPy542Kr9886bNw933nknPvroIxw4cABLly7Fd999h9/85jcAgPj4eEyYMAGPP/44CgoKkJ+fj1/84hfulaKdkZWVhV27duHkyZMoLy/3e86EEFi8eDH27duHTz/9FEuXLsX111+PwYMHu9vu7xrs3LkTK1euxJ49e3DixAl89NFH2LdvH0aPHg0AuPvuu9HY2IgbbrgBu3btwrFjx7Br1y488MAD+PLLLwEA99xzD3bu3Inly5fj0KFD+Mc//uG156y9+++/H2vWrMHLL7+Mw4cPY926dXjxxRfxwAMPdPqctZWeno64uDhs2bIFJSUlqKqqCvixDz74IL799lssXrwYeXl5OHr0KLZt24alS5d2GPJzGTlyJK699lrcdddd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kt9++y0yMjIwZswYfPHFFwCATz/9FDk5OaFoDlFE0O21EJs3QpScAurtECWnIDZvlMGMiIgiXkh6wqqqqrB27Vroug4hBCZNmoRx48YhMzMTa9aswZtvvomsrCxcddVVoWgOUWQoyAdMKhRVzptUVBOE6/ikGYY2jYiILl5IQtjAgQPxxBNPdDienp6OP/3pT6FoAlHksde4A5iLoprk0CQREUW8ToWw+vp6NDY2ehzzNY+LiC6SNQGizjOICV2DYk0wsFFERNRVAgphBQUFePHFF1FWVtbhtrfeeqvLG0VEALJzgM0nIOAcitQ1QNPlcSIiingBhbAXXngBP/nJTzBlyhRYLJZgt4mIAKhWG/TZ892rI5VusjqSiIikgEJYS0sLZsyYAVXlft9EoaRabZyET0TUTQWUqubOnYt33nkHQohgt4eIiIioRwioJ2zChAlYuXIlNm3aBJvNcyjk+eefD0rDiIiIiLqzgELY008/jZEjR2LSpEmcE0ZERETUBQIKYaWlpXj88cc5J4yIiIioiwSUqnJycrBv375gt4WIiIioxwh4deQTTzyBUaNGITEx0eO2X/3qV0FpGBEREVF3FlAI69+/P/r37x/sthARERH1GAGFsPnz58NkMnU4brfbu7xBRERERD1BQHPCnnnmmQ41wmpra/Hwww8HpVFERERE3V1AIUxVVbzwwgvu76urq/HQQw/hhz/8YdAaRkRERNSdBRTCli5diurqarz66qs4d+4cHnroIUyePBk33XRTsNtHRERE1C0FFMJMJhOWLVuGY8eOYdmyZZgxYwZ+8pOfBLttRERERN2Wz4n5zz33HBRF8TgWFxcHk8mEEydOuLcrYokKIiIios7zGcL69Onj9XhWVlbQGkNERETUU/gMYTfeeGMo20FERETUo3AzSCIiIiIDMIQRERERGYAhjIiIiMgADGFEREREBgho70hvtm/fjmHDhqFfv35d2R6iiKfba4GCfMBeg4Y+GdCzRkC12oxuFhERhZkLDmFvv/026urqMG7cONx9991d2SaiiKXbayE2bwRMKhTVBMfp4xAHC6HPns8gRkREHi44hK1duxYOhwNFRUVd2R6iyFaQ7w5gAKCYTIBJlccnzTC4cUREFE46NSdM13VUVVW5vzebzRg5cmSXN4ooYtlr3AHMRVFNgL3GoAYREVG4CqgnzG63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/3y1D2vNaWlpKfzLvK6ujq1bt1Zx0sH65/nnn+emm24C4KabbtqU7xmAV199la6uLjo6Oqp9KGvO/v3751Q/53tfHDp0iPe9731YlsXll19OMplkbGxszY95LSh3Xd7xjncQCEia+eWXX77p/t9S7prMx/PPP8/1119PKBRiy5YtdHV1cfz48VU+wrVnoWtijOHgwYO8973vXeOjqgzajlwG5cYsHTt2rIpHVH0GBwc5deoUe/bs4ciRI/zwhz/kySefZNeuXXz84x/fNG23Ur7whS8A8Mu//MvccsstTExMFEKIW1pamJycrObhVY2nnnpqxv8oN/t7Zb73xejoKO3t7YXt/HFu5YKsNzqPPfYY119/feH7wcFB/uN//I/U1dXxa7/2a4vOGd5IlPt7GR0dZe/evYVtWltbN51ofeONN2hqaqK7u7vwWC29T1SELQNTZiGptdB8xA1OOp3mvvvu46677iIWi3Hrrbfy7/7dvwPgb//2b/mrv/or7r777iof5dryX/7Lf6G1tZWJiQn+63/9rwVfwmYnn8/zwgsv8Ou//usA+l5ZAP3/jPDQQw8RCAS48cYbARGqX//612loaODkyZN88Ytf5L777iMWi1X5SFef+f5eyr1XNhuz/3FXa+8TbUcug6WOWdoM5PN57rvvPm688Ube8573ANDc3Ixt29i2zS/90i9x4sSJKh/l2tPa2gpAU1MT1157LcePH6epqanQThobGyuYazcTL730Ejt37qS5uRnQ9wow7/uira2N4eHhwnab8f8zP/nJT3jhhRf43d/93YIADYVCNDQ0ALBr1y46Ozvp7++v5mGuGfP9vcy+J42Ojhb+H7QZcByH5557bka1tNbeJyrCloGOWRKMMfzP//k/2bp1K7/yK79SeLzUt/Lcc89tuukH6XSa6enpwteHDx9m+/bt9PX18cQTTwDwxBNPcO2111bzMKvC7H+tbvb3CjDv+6Kvr48nn3wSYwxvvvkmsVhsU4mwl19+mUceeYQ//MM/JBKJFB6fnJzEdV0ABgYG6O/vp7Ozs1qHuabM9/fS19fH008/TS6XY3BwkP7+fvbs2VOtw1xzXn31VXp6embYhGrtfaJhrcvkxRdf5Dvf+U5hzNLtt99e7UNac44cOcI999zD9u3bC/9KvfPOO3nqqac4ffo0lmXR0dHBb/3Wb22qm8fA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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Calculate the ride distance\n", "train['distance_km'] = haversine_distance(train)\n", "\n", "# Draw a scatterplot\n", "plt.scatter(x=train['fare_amount'], y=train['distance_km'], alpha=0.5);\n", "plt.xlabel('Fare amount');\n", "plt.ylabel('Distance, km');\n", "plt.title('Fare amount based on the distance');\n", "\n", "# Limit on the distance\n", "plt.ylim(0, 50);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EDA plots II\n", "Another idea that comes to mind is that the price of a ride could change during the day.\n", "\n", "Your goal is to plot the median fare amount for each hour of the day as a simple line plot. The hour feature is calculated for you. Don't worry if you do not know how to work with the date features. We will explore them in the chapter on Feature Engineering." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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OkaPHo2nn376kjNJALBw4UIsXrwYjz32GEaNGoWnn34aTz31FObNm9ft1+xCkZGR+PDDD1FaWopx48bhRz/6EX7961/DarU6njNmzBg8++yzWLlyJUaNGoXly5d3GiJ//OMfo6WlBbfddhvCw8O7PHdQUBBWrFiBN954A/369cOVV17Zqz/LxbKzs7FhwwZs374dV199NdLT0/HLX/4SZrPZ6VInka9T0tECBSIiok7s2LED6enpKCgoaHdDCBH1DAMZERG5pKGhAcePH8fPf/5z1NfXY8OGDVqXRBQweMmSiIhcsmbNGqSkpODo0aNYtWqV1uUQBRTOkBERERFpjDNkRERERBpjICMiIiLSGAMZERERkcb8vlN/V/2I3CU2NhZlZWUcl+NyXI7LcQNkXE+OzXE5bmf69u3b6WOcISMiIiLSGAMZERERkcYYyIiIiIg0xkBGREREpDEGMiIiIiKNMZARERERaYyBjIiIiEhjDGREREREGmMgIyIiItIYAxkRERGRxhjIiIiIiDTGQEZERESkMQYyIiIiIo0xkBERERFpjIGMiIiISGNGrQsg/bJtyYG8vwanKsuAmFio2XNhmJCldVlERERex0BGmrBtyYGsWQk0NtgPVJyBrFkJG8BQRkREusNLlqQJeX/NN2GsTWOD/TgREZHOMJCRNirKuneciIgogDGQkTYssd07TkREFMAYyEgbs+e2P2YKgeroOBERUYDjon7ShCF5MGwAoBQgAljieJclERHpFmfISBNSkAsAUFnXAwAMj77AMEZERLrFQEaakMI8YHAKMHCY/UBVpbYFERERaYiBjLxOzpYDh4qh0sdDRVvsB89WaFsUERGRhriGjLxOCrcCAFRGpn39GAA5WwGlZVFEREQaYiAjr5PCPCAuEeg7ADhfaz9YVa5tUURERBriJUvyKqmvA/YUQqVnQikFhEcCwSagkpcsiYhIvxjIyLuK8oHmJqiM8QAApRSCLLFcQ0ZERLrGQEZeJQW59lmxYaMcxwwxsZAqBjIiItIvBjLyGmlpgezcBjV6HFRQkOO4gTNkRESkcwxk5D0H9gC1Nfa7Ky8QZI1jICMiIl1jICOvkcI8wGgEUsc4HTfExAINdZD68xpVRkREpC0GMvIKEbGvH7tsNFRouNNjBkus/QPeaUlERDrFQEbeUXocOH0SKn18u4eC2gLZ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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create hour feature\n", "train['pickup_datetime'] = pd.to_datetime(train.pickup_datetime)\n", "train['hour'] = train.pickup_datetime.dt.hour\n", "\n", "# Find median fare_amount for each hour\n", "hour_price = train.groupby('hour', as_index=False)['fare_amount'].median()\n", "\n", "# Plot the line plot\n", "plt.plot(hour_price['hour'], hour_price['fare_amount'], marker='o');\n", "plt.xlabel('Hour of the day');\n", "plt.ylabel('Median fare amount');\n", "plt.title('Fare amount based on day time');\n", "plt.xticks(range(24));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that prices are a bit higher during the night. It is a good indicator that we should include the `\"hour\"` feature in the final model, or at least add a binary feature `\"is_night\"`. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Local Validation\n", "- Holdout set\n", "![holdout](image/holdout_set.png)\n", "- K-fold cross-validation\n", "![kfold_cv](image/kfold_cv.png)\n", "- Stratified K-fold\n", "![stratified](image/stratified_kfold.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### K-fold cross-validation\n", "You will start by getting hands-on experience in the most commonly used K-fold cross-validation.\n", "\n", "The data you'll be working with is from the \"Two sigma connect: rental listing inquiries\" Kaggle competition. The competition problem is a multi-class classification of the rental listings into 3 classes: low interest, medium interest and high interest. For faster performance, you will work with a subsample consisting of 1,000 observations.\n", "\n", "You need to implement a K-fold validation strategy and look at the sizes of each fold obtained." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "train = pd.read_csv('./dataset/twosigma_rental_train.csv')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fold: 0\n", "CV train shape: (666, 9)\n", "Medium interest listings in CV train: 175\n", "\n", "Fold: 1\n", "CV train shape: (667, 9)\n", "Medium interest listings in CV train: 165\n", "\n", "Fold: 2\n", "CV train shape: (667, 9)\n", "Medium interest listings in CV train: 162\n", "\n" ] } ], "source": [ "from sklearn.model_selection import KFold\n", "\n", "# Create a KFold object\n", "kf = KFold(n_splits=3, shuffle=True, random_state=123)\n", "\n", "# Loop through each split\n", "fold = 0\n", "for train_index, test_index in kf.split(train):\n", " # Obtain training and test folds\n", " cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]\n", " print(\"Fold: {}\".format(fold))\n", " print(\"CV train shape: {}\".format(cv_train.shape))\n", " print(\"Medium interest listings in CV train: {}\\n\".format(\n", " sum(cv_train.interest_level == 'medium')\n", " ))\n", " fold += 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Stratified K-fold\n", "As you've just noticed, you have a pretty different target variable distribution among the folds due to the random splits. It's not crucial for this particular competition, but could be an issue for the classification competitions with the highly imbalanced target variable.\n", "\n", "To overcome this, let's implement the stratified K-fold strategy with the stratification on the target variable." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fold: 0\n", "CV train shape: (666, 9)\n", "Medium interest listings in CV train: 167\n", "\n", "Fold: 1\n", "CV train shape: (667, 9)\n", "Medium interest listings in CV train: 167\n", "\n", "Fold: 2\n", "CV train shape: (667, 9)\n", "Medium interest listings in CV train: 168\n", "\n" ] } ], "source": [ "from sklearn.model_selection import StratifiedKFold\n", "\n", "# Create a StratifiedKFold object\n", "str_kf = StratifiedKFold(n_splits=3, shuffle=True, random_state=123)\n", "\n", "# Loop through each split\n", "fold = 0\n", "for train_index, test_index in str_kf.split(train, train['interest_level']):\n", " # Obtain training and test folds\n", " cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]\n", " print('Fold: {}'.format(fold))\n", " print('CV train shape: {}'.format(cv_train.shape))\n", " print('Medium interest listings in CV train: {}\\n'.format(\n", " sum(cv_train.interest_level == 'medium')\n", " ))\n", " fold += 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Validation usage\n", "- Data Leakage\n", " - Leak in **features** - using data that will not be available in the real setting\n", " - Leak in **validation strategy** - validation strategy differs from the real-world situation\n", "- Time K-fold cross-validation\n", " - Time-series data cannot use with KFold Cross validation\n", "![time kfold](image/time_kfold.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Time K-fold\n", "Remember the \"Store Item Demand Forecasting Challenge\" where you are given store-item sales data, and have to predict future sales?\n", "\n", "It's a competition with time series data. So, time K-fold cross-validation should be applied. Your goal is to create this cross-validation strategy and make sure that it works as expected." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "train = pd.read_csv('./dataset/demand_forecasting_train_1_month.csv')" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fold : 0\n", "Train date range: from 2017-12-01 to 2017-12-08\n", "Test date range: from 2017-12-08 to 2017-12-16\n", "\n", "Fold : 1\n", "Train date range: from 2017-12-01 to 2017-12-16\n", "Test date range: from 2017-12-16 to 2017-12-24\n", "\n", "Fold : 2\n", "Train date range: from 2017-12-01 to 2017-12-24\n", "Test date range: from 2017-12-24 to 2017-12-31\n", "\n" ] } ], "source": [ "from sklearn.model_selection import TimeSeriesSplit\n", "\n", "# Create TimeSeriesSplit object\n", "time_kfold = TimeSeriesSplit(n_splits=3)\n", "\n", "# sort train data by date\n", "train = train.sort_values('date')\n", "\n", "# Iterate through each split\n", "fold = 0\n", "for train_index, test_index in time_kfold.split(train):\n", " cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]\n", " \n", " print('Fold :', fold)\n", " print('Train date range: from {} to {}'.format(cv_train.date.min(), cv_train.date.max()))\n", " print('Test date range: from {} to {}\\n'.format(cv_test.date.min(), cv_test.date.max()))\n", " fold += 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Overall validation score\n", "Now it's time to get the actual model performance using cross-validation! How does our store item demand prediction model perform?\n", "\n", "Your task is to take the Mean Squared Error (MSE) for each fold separately, and then combine these results into a single number.\n", "\n", "For simplicity, you're given `get_fold_mse()` function that for each cross-validation split fits a Random Forest model and returns a list of MSE scores by fold. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestRegressor\n", "\n", "def get_fold_mse(train, kf):\n", " mse_scores = []\n", " \n", " for train_index, test_index in kf.split(train):\n", " fold_train, fold_test = train.loc[train_index], train.loc[test_index]\n", "\n", " # Fit the data and make predictions\n", " # Create a Random Forest object\n", " rf = RandomForestRegressor(n_estimators=10, random_state=123)\n", "\n", " # Train a model\n", " rf.fit(X=fold_train[['store', 'item']], y=fold_train['sales'])\n", "\n", " # Get predictions for the test set\n", " pred = rf.predict(fold_test[['store', 'item']])\n", " \n", " fold_score = round(mean_squared_error(fold_test['sales'], pred), 5)\n", " mse_scores.append(fold_score)\n", " \n", " return mse_scores" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean validation MSE: 955.49186\n", "MSE by fold: [890.30336, 961.65797, 1014.51424]\n", "Overall Validation MSE: 1006.38784\n" ] } ], "source": [ "# Initialize 3-fold time cross-validation\n", "kf = TimeSeriesSplit(n_splits=3)\n", "\n", "# Get MSE scores for each cross-validation split\n", "mse_scores = get_fold_mse(train, kf)\n", "\n", "print('Mean validation MSE: {:.5f}'.format(np.mean(mse_scores)))\n", "print('MSE by fold: {}'.format(mse_scores))\n", "print('Overall Validation MSE: {:.5f}'.format(np.mean(mse_scores) + np.std(mse_scores)))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }