{ "metadata": { "name": "", "signature": "sha256:78547353f3f8241e5b59c6405ea034f347c8de7405b28bf0e945c00859a6526d" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "4. Obtaining a sample and improving the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The size of the dataset makes impossible to perform the learning in a relatively short time. A solution for this may be select a sample from the dataset and learning from it. Let's select a random portion of 1,000,000 trips equally distributed throughout the year." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "4.1. Preparing the notebook" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "%config InlineBackend.figure_format='retina'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import datetime\n", "import os\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "from __future__ import division\n", "\n", "sns.set(font='sans')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "read_path = '../data/cleaned/cleaned_{0}.csv'\n", "save_path = '../data/dataset/dataset.csv'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# This auxiliary function applies another one to every row in a DataFrame for creating new columns.\n", "def iterate_and_apply(dataframe, function, necesary_columns):\n", " perform = True\n", " step = 100000\n", " start = 0\n", " to = step\n", " \n", " while perform:\n", " new_columns = dataframe[start:to][necesary_columns].apply(function, axis=1)\n", " if len(new_columns) == 0:\n", " perform = False\n", " else:\n", " dataframe.update(new_columns)\n", " new_columns = None\n", " start += step\n", " to += step\n", " \n", " return dataframe" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "4.2. Obtaining the subdataset" ] }, { "cell_type": "code", "collapsed": false, "input": [ "complete_length = 88156805\n", "final_length = 1000000\n", "current_length = 0\n", "\n", "first = True\n", "data = None" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "months = range(1, 13)\n", "for month in months:\n", " \n", " data_aux = pd.read_csv(read_path.format(month), index_col=0)\n", " \n", " if month != 12:\n", " this_length = int(final_length * (data_aux.shape[0] / complete_length))\n", " else:\n", " this_length = final_length - current_length\n", " current_length += this_length\n", " \n", " data_aux = data_aux.ix[np.random.choice(data_aux.index, this_length, replace=False)].copy()\n", " data_aux = data_aux.reset_index(drop=True)\n", " \n", " if first:\n", " data = data_aux.copy()\n", " first = False\n", " else:\n", " data = data.append(data_aux, ignore_index=True)\n", " data_aux = None" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have obtained the sample from the dataset, let's create new attributes. This new task would be impossible to do in the entire dataset. Now it's the perfect time: the data is clean and *small*." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "4.3. Getting `datetime` attributes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The date and time attribute that currently exists can't fit in the `scikit-learn`'s algorithms, we need to decompose it. Here it's proposed a possible list of extracted attributes from `pickup_datetime`, explaining those that they need it:\n", "\n", "* **pickup_month**\n", "* **pickup_weekday**\n", "* **pickup_day**\n", "* **pickup_time_in_mins**: Time showed in minutes. For example, 16:30 p.m. would be 992.\n", "* **pickup_non_working_today**: A boolean value that shows if that day was a holiday or not.\n", "* **pickup_non_working_tomorrow**: A boolean value that shows if the day following was a holiday or not.\n", "\n", "For creating the last two attributes, the dataset `nyc_2013_holidays.csv` (mentioned in the [first notebook](1. Preparing the environment.ipynb)) has to be used." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# A mini-dataset with the 2013 holidays in NYC.\n", "annual_holidays = pd.read_csv('../data/nyc_2013_holidays.csv')\n", "\n", "# Columns needed.\n", "datetime_necesary_columns = ['pickup_datetime']\n", "datetime_column_names = ['pickup_month', 'pickup_weekday', 'pickup_day', 'pickup_time_in_mins', 'pickup_non_working_today',\n", " 'pickup_non_working_tomorrow']\n", "\n", "# It says if a day is a holiday in NYC.\n", "def is_in_annual_holidays(the_day):\n", " return annual_holidays[(annual_holidays.month == the_day.month) & (annual_holidays.day == the_day.day)].shape[0]\n", "\n", "# It calculates data related with 'pickup_datetime'.\n", "def calculate_datetime_extra(row):\n", " dt = datetime.datetime.strptime(row.pickup_datetime, '%Y-%m-%d %H:%M:%S')\n", " pickup_month = dt.month\n", " pickup_weekday = dt.weekday()\n", " pickup_day = dt.day\n", " pickup_time_in_mins = (dt.hour * 60) + dt.minute\n", " pickup_non_working_today = int((pickup_weekday == 5) or (pickup_weekday == 6) or is_in_annual_holidays(dt))\n", " pickup_non_working_tomorrow = int((pickup_weekday == 4) or (pickup_weekday == 5) or\n", " is_in_annual_holidays(dt + datetime.timedelta(days=1)))\n", " \n", " return pd.Series({\n", " datetime_column_names[0]: pickup_month,\n", " datetime_column_names[1]: pickup_weekday,\n", " datetime_column_names[2]: pickup_day,\n", " datetime_column_names[3]: pickup_time_in_mins,\n", " datetime_column_names[4]: pickup_non_working_today,\n", " datetime_column_names[5]: pickup_non_working_tomorrow\n", " })" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "for column in datetime_column_names:\n", " data[column] = np.nan\n", "\n", "data = iterate_and_apply(data, calculate_datetime_extra, datetime_necesary_columns)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "4.4. Getting a label to predict" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Predict the tip percentage of a trip is a regression problem. Given the human nature of the data, even the noise that we couldn't clean, perform a regression could give us disastrous results. Maybe, we could change the problem to a classification one. Let's create a new attribute to predict it. It could be a total of six labels, denoting a few ranges of tips:\n", "\n", "$$\n", "[0,\\:10),\\:[10,\\:15),\\:[15,\\:20),\\:[20,\\:25),\\:[25,\\:30)\\:and\\:[30,\\:+\\infty)\n", "$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "tip_label_column_name = 'tip_label'\n", "\n", "tip_labels = ['[0-10)', '[10-15)', '[15-20)', '[20-25)', '[25-30)', '[30-inf)']\n", "tip_ranges_by_label = [[0.0, 10.0], [10.0, 15.0], [15.0, 20.0], [20.0, 25.0], [25.0, 30.0], [30.0, 51.0]]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "data[tip_label_column_name] = ''\n", "\n", "for i, tip_label in enumerate(tip_labels):\n", " tip_mask = ((data.tip_perc >= tip_ranges_by_label[i][0]) & (data.tip_perc < tip_ranges_by_label[i][1]))\n", " data.tip_label[tip_mask] = tip_label\n", " \n", " tip_mask = None" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "ax = data.groupby('tip_label').size().plot(kind='bar')\n", "\n", "ax.set_xlabel('tip_label', fontsize=18)\n", "ax.set_ylabel('Number of trips', fontsize=18)\n", "ax.tick_params(labelsize=12)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": { "png": { "height": 407, "width": 533 } }, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "These are the classes that we are going to predict!" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "4.5. Saving the file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we are going to save this dataset with a particular column order, and use it in the [next notebook](5. Learning, badly.ipynb)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "tip_label_order = ['medallion', 'hack_license', 'vendor_id', 'pickup_datetime', 'pickup_month', 'pickup_weekday',\n", " 'pickup_day', 'pickup_time_in_mins', 'pickup_non_working_today', 'pickup_non_working_tomorrow',\n", " 'fare_amount', 'surcharge', 'tip_amount', 'tip_perc', 'tip_label', 'tolls_amount', 'total_amount',\n", " 'passenger_count', 'trip_time_in_secs', 'trip_distance', 'pickup_longitude', 'pickup_latitude',\n", " 'dropoff_longitude', 'dropoff_latitude']\n", "\n", "data = data.reindex_axis(tip_label_order, axis=1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "if not os.path.exists('../data/dataset/'):\n", " os.makedirs('../data/dataset/')\n", "\n", "data.to_csv(save_path, index=False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 } ], "metadata": {} } ] }