Skip to content
Snippets Groups Projects
training.ipynb 51.1 KiB
Newer Older
{
 "cells": [
  {
   "cell_type": "code",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:26.744932200Z",
     "start_time": "2023-12-11T17:07:26.740214500Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import sklearn as sk\n",
    "import matplotlib.pyplot as plt\n",
    "import json\n",
    "import math"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:55.590798700Z",
     "start_time": "2023-12-11T17:07:26.744932200Z"
    }
   },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>FlightDate</th>\n",
       "      <th>Airline</th>\n",
       "      <th>Origin</th>\n",
       "      <th>Dest</th>\n",
       "      <th>Cancelled</th>\n",
       "      <th>Diverted</th>\n",
       "      <th>CRSDepTime</th>\n",
       "      <th>DepTime</th>\n",
       "      <th>DepDelayMinutes</th>\n",
       "      <th>DepDelay</th>\n",
       "      <th>...</th>\n",
       "      <th>WheelsOff</th>\n",
       "      <th>WheelsOn</th>\n",
       "      <th>TaxiIn</th>\n",
       "      <th>CRSArrTime</th>\n",
       "      <th>ArrDelay</th>\n",
       "      <th>ArrDel15</th>\n",
       "      <th>ArrivalDelayGroups</th>\n",
       "      <th>ArrTimeBlk</th>\n",
       "      <th>DistanceGroup</th>\n",
       "      <th>DivAirportLandings</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2018-01-23</td>\n",
       "      <td>Endeavor Air Inc.</td>\n",
       "      <td>ABY</td>\n",
       "      <td>ATL</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1202</td>\n",
       "      <td>1157.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1211.0</td>\n",
       "      <td>1249.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>1304</td>\n",
       "      <td>-8.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1300-1359</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2018-01-24</td>\n",
       "      <td>Endeavor Air Inc.</td>\n",
       "      <td>ABY</td>\n",
       "      <td>ATL</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1202</td>\n",
       "      <td>1157.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1210.0</td>\n",
       "      <td>1246.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>1304</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1300-1359</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2018-01-25</td>\n",
       "      <td>Endeavor Air Inc.</td>\n",
       "      <td>ABY</td>\n",
       "      <td>ATL</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1202</td>\n",
       "      <td>1153.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-9.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1211.0</td>\n",
       "      <td>1251.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1304</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1300-1359</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2018-01-26</td>\n",
       "      <td>Endeavor Air Inc.</td>\n",
       "      <td>ABY</td>\n",
       "      <td>ATL</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1202</td>\n",
       "      <td>1150.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1207.0</td>\n",
       "      <td>1242.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1304</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1300-1359</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2018-01-27</td>\n",
       "      <td>Endeavor Air Inc.</td>\n",
       "      <td>ABY</td>\n",
       "      <td>ATL</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1400</td>\n",
       "      <td>1355.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1412.0</td>\n",
       "      <td>1448.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1500</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1500-1559</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 61 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   FlightDate            Airline Origin Dest  Cancelled  Diverted  CRSDepTime  \\\n",
       "0  2018-01-23  Endeavor Air Inc.    ABY  ATL      False     False        1202   \n",
       "1  2018-01-24  Endeavor Air Inc.    ABY  ATL      False     False        1202   \n",
       "2  2018-01-25  Endeavor Air Inc.    ABY  ATL      False     False        1202   \n",
       "3  2018-01-26  Endeavor Air Inc.    ABY  ATL      False     False        1202   \n",
       "4  2018-01-27  Endeavor Air Inc.    ABY  ATL      False     False        1400   \n",
       "\n",
       "   DepTime  DepDelayMinutes  DepDelay  ...  WheelsOff  WheelsOn  TaxiIn  \\\n",
       "0   1157.0              0.0      -5.0  ...     1211.0    1249.0     7.0   \n",
       "1   1157.0              0.0      -5.0  ...     1210.0    1246.0    12.0   \n",
       "2   1153.0              0.0      -9.0  ...     1211.0    1251.0    11.0   \n",
       "3   1150.0              0.0     -12.0  ...     1207.0    1242.0    11.0   \n",
       "4   1355.0              0.0      -5.0  ...     1412.0    1448.0    11.0   \n",
       "\n",
       "   CRSArrTime  ArrDelay  ArrDel15  ArrivalDelayGroups  ArrTimeBlk  \\\n",
       "0        1304      -8.0       0.0                -1.0   1300-1359   \n",
       "1        1304      -6.0       0.0                -1.0   1300-1359   \n",
       "2        1304      -2.0       0.0                -1.0   1300-1359   \n",
       "3        1304     -11.0       0.0                -1.0   1300-1359   \n",
       "4        1500      -1.0       0.0                -1.0   1500-1559   \n",
       "\n",
       "   DistanceGroup  DivAirportLandings  \n",
       "0              1                 0.0  \n",
       "1              1                 0.0  \n",
       "2              1                 0.0  \n",
       "3              1                 0.0  \n",
       "4              1                 0.0  \n",
       "\n",
       "[5 rows x 61 columns]"
      ]
Fadi Gattoussi's avatar
Fadi Gattoussi committed
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cf_2018 = pd.read_csv('flight_data/Combined_Flights_2018.csv')\n",
    "cf_2018.head()"
   ]
  },
  {
   "cell_type": "code",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:56.493778700Z",
     "start_time": "2023-12-11T17:07:55.953264900Z"
    }
   },
   "outputs": [],
   "source": [
Fadi Gattoussi's avatar
Fadi Gattoussi committed
    "# Filter the dataframe to include only the delays from JFK\n",
    "import RegressionModel\n",
    "\n",
    "filtered_df = cf_2018[(cf_2018['Origin'] == 'JFK')]\n",
    "\n",
    "RegressionModel.destinations = list(cf_2018['DestCityName'].unique())"
   ]
  },
  {
   "cell_type": "code",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:56.527530200Z",
     "start_time": "2023-12-11T17:07:56.498869700Z"
    }
   },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "outputs": [],
Fadi Gattoussi's avatar
Fadi Gattoussi committed
    "relevant_columns = ['FlightDate', 'Airline', 'Dest', 'DepDelayMinutes', 'ArrDelayMinutes']\n",
    "jfk_flights_2018 = filtered_df[relevant_columns].copy()\n",
    "jfk_flights_2018.dropna(inplace=True)"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:56.542402200Z",
     "start_time": "2023-12-11T17:07:56.526530600Z"
    }
   },
   "outputs": [
    {
     "data": {
Fadi Gattoussi's avatar
Fadi Gattoussi committed
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>FlightDate</th>\n",
       "      <th>Airline</th>\n",
       "      <th>Dest</th>\n",
       "      <th>DepDelayMinutes</th>\n",
       "      <th>ArrDelayMinutes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5544</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>SJC</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5547</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>MSY</td>\n",
       "      <td>86.0</td>\n",
       "      <td>77.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5548</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>JAX</td>\n",
       "      <td>29.0</td>\n",
       "      <td>11.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5554</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>ROC</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5565</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>BUF</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5666920</th>\n",
       "      <td>2018-09-10</td>\n",
       "      <td>Delta Air Lines Inc.</td>\n",
       "      <td>SFO</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5666921</th>\n",
       "      <td>2018-09-10</td>\n",
       "      <td>Delta Air Lines Inc.</td>\n",
       "      <td>MSP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5667057</th>\n",
       "      <td>2018-09-10</td>\n",
       "      <td>Delta Air Lines Inc.</td>\n",
       "      <td>LAX</td>\n",
       "      <td>13.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5667231</th>\n",
       "      <td>2018-09-10</td>\n",
       "      <td>Delta Air Lines Inc.</td>\n",
       "      <td>SEA</td>\n",
       "      <td>48.0</td>\n",
       "      <td>44.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5672362</th>\n",
       "      <td>2018-09-04</td>\n",
       "      <td>Endeavor Air Inc.</td>\n",
       "      <td>BNA</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>83754 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         FlightDate               Airline Dest  DepDelayMinutes  \\\n",
       "5544     2018-01-22       JetBlue Airways  SJC              0.0   \n",
       "5547     2018-01-22       JetBlue Airways  MSY             86.0   \n",
       "5548     2018-01-22       JetBlue Airways  JAX             29.0   \n",
       "5554     2018-01-22       JetBlue Airways  ROC              0.0   \n",
       "5565     2018-01-22       JetBlue Airways  BUF              0.0   \n",
       "...             ...                   ...  ...              ...   \n",
       "5666920  2018-09-10  Delta Air Lines Inc.  SFO              0.0   \n",
       "5666921  2018-09-10  Delta Air Lines Inc.  MSP              0.0   \n",
       "5667057  2018-09-10  Delta Air Lines Inc.  LAX             13.0   \n",
       "5667231  2018-09-10  Delta Air Lines Inc.  SEA             48.0   \n",
       "5672362  2018-09-04     Endeavor Air Inc.  BNA              0.0   \n",
       "\n",
       "         ArrDelayMinutes  \n",
       "5544                 0.0  \n",
       "5547                77.0  \n",
       "5548                11.0  \n",
       "5554                 0.0  \n",
       "5565                 0.0  \n",
       "...                  ...  \n",
       "5666920              3.0  \n",
       "5666921              0.0  \n",
       "5667057              0.0  \n",
       "5667231             44.0  \n",
       "5672362              0.0  \n",
       "\n",
       "[83754 rows x 5 columns]"
      ]
Fadi Gattoussi's avatar
Fadi Gattoussi committed
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:56.666500700Z",
     "start_time": "2023-12-11T17:07:56.546471Z"
    }
   },
   "outputs": [
    {
Fadi Gattoussi's avatar
Fadi Gattoussi committed
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>FlightDate</th>\n",
       "      <th>Airline</th>\n",
       "      <th>DepDelayMinutes</th>\n",
       "      <th>ArrDelayMinutes</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Dest_ABQ</th>\n",
       "      <th>Dest_ACK</th>\n",
       "      <th>Dest_ATL</th>\n",
       "      <th>...</th>\n",
       "      <th>Dest_SFO</th>\n",
       "      <th>Dest_SJC</th>\n",
       "      <th>Dest_SJU</th>\n",
       "      <th>Dest_SLC</th>\n",
       "      <th>Dest_SMF</th>\n",
       "      <th>Dest_SNA</th>\n",
       "      <th>Dest_SRQ</th>\n",
       "      <th>Dest_STT</th>\n",
       "      <th>Dest_SYR</th>\n",
       "      <th>Dest_TPA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5544</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>1</td>\n",
       "      <td>22</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5547</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>86.0</td>\n",
       "      <td>77.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>1</td>\n",
       "      <td>22</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5548</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>29.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>1</td>\n",
       "      <td>22</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5554</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>1</td>\n",
       "      <td>22</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5565</th>\n",
       "      <td>2018-01-22</td>\n",
       "      <td>JetBlue Airways</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>1</td>\n",
       "      <td>22</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 78 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     FlightDate          Airline  DepDelayMinutes  ArrDelayMinutes  Year  \\\n",
       "5544 2018-01-22  JetBlue Airways              0.0              0.0  2018   \n",
       "5547 2018-01-22  JetBlue Airways             86.0             77.0  2018   \n",
       "5548 2018-01-22  JetBlue Airways             29.0             11.0  2018   \n",
       "5554 2018-01-22  JetBlue Airways              0.0              0.0  2018   \n",
       "5565 2018-01-22  JetBlue Airways              0.0              0.0  2018   \n",
       "\n",
       "      Month  Day  Dest_ABQ  Dest_ACK  Dest_ATL  ...  Dest_SFO  Dest_SJC  \\\n",
       "5544      1   22     False     False     False  ...     False      True   \n",
       "5547      1   22     False     False     False  ...     False     False   \n",
       "5548      1   22     False     False     False  ...     False     False   \n",
       "5554      1   22     False     False     False  ...     False     False   \n",
       "5565      1   22     False     False     False  ...     False     False   \n",
       "\n",
       "      Dest_SJU  Dest_SLC  Dest_SMF  Dest_SNA  Dest_SRQ  Dest_STT  Dest_SYR  \\\n",
       "5544     False     False     False     False     False     False     False   \n",
       "5547     False     False     False     False     False     False     False   \n",
       "5548     False     False     False     False     False     False     False   \n",
       "5554     False     False     False     False     False     False     False   \n",
       "5565     False     False     False     False     False     False     False   \n",
       "\n",
       "      Dest_TPA  \n",
       "5544     False  \n",
       "5547     False  \n",
       "5548     False  \n",
       "5554     False  \n",
       "5565     False  \n",
       "\n",
       "[5 rows x 78 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    "# Convert 'FlightDate' into numerical components\n",
    "jfk_flights_2018['FlightDate'] = pd.to_datetime(jfk_flights_2018['FlightDate'])\n",
    "jfk_flights_2018['Year'] = jfk_flights_2018['FlightDate'].dt.year\n",
    "jfk_flights_2018['Month'] = jfk_flights_2018['FlightDate'].dt.month\n",
    "jfk_flights_2018['Day'] = jfk_flights_2018['FlightDate'].dt.day\n",
    "\n",
    "# One-hot encoding for categorical variables\n",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
    "df_jfk_encoded = pd.get_dummies(jfk_flights_2018, columns=['Dest'])\n",
    "df_jfk_encoded.head()\n"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:56.737639800Z",
     "start_time": "2023-12-11T17:07:56.666500700Z"
    }
   },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAGzCAYAAAAczwI+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHQUlEQVR4nO3de1hVZf7//xcHN+JhgydAEtRS83xOpHNJYpKTZo2aKZnVR0NTKVN/lVmfJs2m0vJU06R+ZqbxcI1ZSeIQnjqQBzyiSVYqlmywFLaaArLv3x99WbmFSpElos/Hda1rWut+73vd62Zwv657r73wMcYYAQAAoEL5VvYAAAAALkeELAAAABsQsgAAAGxAyAIAALABIQsAAMAGhCwAAAAbELIAAABsQMgCAACwASELAADABoQsAAAAG/hX5smbNGmiAwcOlDr+2GOPafbs2Tp16pSeeOIJLVq0SAUFBYqNjdWcOXMUGhpq1WZlZWnkyJFas2aNatWqpfj4eE2dOlX+/r9e2tq1a5WYmKhdu3YpIiJCzzzzjB588EGvc86ePVuvvPKKXC6XOnTooDfffFPdunU752vxeDw6dOiQateuLR8fn/OfDAAAcNEZY3Ts2DGFh4fL17eC155MJcrNzTXZ2dnWlpKSYiSZNWvWGGOMGTFihImIiDCpqalm8+bNpnv37ub666+3Xn/69GnTtm1bExMTY7Zu3Wo+/vhjU79+fTNp0iSr5rvvvjM1atQwiYmJZvfu3ebNN980fn5+Jjk52apZtGiRcTgc5t133zW7du0yjzzyiAkODjY5OTnnfC0HDx40ktjY2NjY2Niq4Hbw4MELDzZn8THm0vkD0WPHjtWKFSu0d+9eud1uNWjQQO+9957uvfdeSdKePXvUqlUrpaWlqXv37lq5cqXuuusuHTp0yFrdmjdvniZMmKDDhw/L4XBowoQJSkpKUkZGhnWegQMHKi8vT8nJyZKkqKgoXXfddZo1a5akX1alIiIiNHr0aE2cOPGcxp6fn6/g4GAdPHhQTqezIqcFAADYxO12KyIiQnl5eQoKCqrQviv148IzFRYW6p///KcSExPl4+Oj9PR0FRUVKSYmxqpp2bKlIiMjrZCVlpamdu3aeX18GBsbq5EjR2rXrl3q1KmT0tLSvPooqRk7dqx13vT0dE2aNMlq9/X1VUxMjNLS0n5zvAUFBSooKLD2jx07JklyOp2ELAAAqhg7bvW5ZG58X758ufLy8qx7pVwulxwOh4KDg73qQkND5XK5rJozA1ZJe0nb79W43W6dPHlSP/74o4qLi8usKemjLFOnTlVQUJC1RUREnPc1AwCAy9clE7L+/ve/684771R4eHhlD+WcTJo0Sfn5+dZ28ODByh4SAAC4hFwSHxceOHBAn3zyiZYtW2YdCwsLU2FhofLy8rxWs3JychQWFmbVbNy40auvnJwcq63kf0uOnVnjdDoVGBgoPz8/+fn5lVlT0kdZAgICFBAQcP4XCwAArgiXxErW/PnzFRISori4OOtYly5dVK1aNaWmplrHMjMzlZWVpejoaElSdHS0du7cqdzcXKsmJSVFTqdTrVu3tmrO7KOkpqQPh8OhLl26eNV4PB6lpqZaNQAAAOer0leyPB6P5s+fr/j4eK9nWwUFBWn48OFKTExU3bp15XQ6NXr0aEVHR6t79+6SpJ49e6p169YaMmSIpk+fLpfLpWeeeUYJCQnWKtOIESM0a9YsPfXUU3rooYe0evVqLVmyRElJSda5EhMTFR8fr65du6pbt26aMWOGTpw4oWHDhl3cyQAAAJePCn8oxHlatWqVkWQyMzNLtZ08edI89thjpk6dOqZGjRqmX79+Jjs726tm//795s477zSBgYGmfv365oknnjBFRUVeNWvWrDEdO3Y0DofDXH311Wb+/PmlzvXmm2+ayMhI43A4TLdu3cyXX355XteRn59vJJn8/Pzzeh0AAKg8dr5/X1LPyarK3G63goKClJ+fzyMcAACoIux8/74k7skCAAC43BCyAAAAbEDIAgAAsAEhCwAAwAaELAAAABsQsgAAAGxAyAIAALABIQsAAMAGlf5ndXBumkxM8trfPy3uNyoBAMClgJUsAAAAGxCyAAAAbEDIAgAAsAEhCwAAwAaELAAAABsQsgAAAGxAyAIAALABIQsAAMAGhCwAAAAbELIAAABsQMgCAACwASELAADABoQsAAAAGxCyAAAAbEDIAgAAsAEhCwAAwAaELAAAABsQsgAAAGxAyAIAALABIQsAAMAGhCwAAAAbELIAAABsQMgCAACwASELAADABoQsAAAAGxCyAAAAbEDIAgAAsAEhCwAAwAaELAAAABsQsgAAAGxAyAIAALABIQsAAMAGlR6yfvjhBz3wwAOqV6+eAgMD1a5dO23evNlqN8Zo8uTJatiwoQIDAxUTE6O9e/d69XHkyBENHjxYTqdTwcHBGj58uI4fP+5Vs2PHDt10002qXr26IiIiNH369FJjWbp0qVq2bKnq1aurXbt2+vjjj+25aAAAcNmr1JB19OhR3XDDDapWrZpWrlyp3bt369VXX1WdOnWsmunTp+uNN97QvHnztGHDBtWsWVOxsbE6deqUVTN48GDt2rVLKSkpWrFihdavX69HH33Uane73erZs6caN26s9PR0vfLKK5oyZYrefvttq+aLL77QoEGDNHz4cG3dulV9+/ZV3759lZGRcXEmAwAAXFZ8jDGmsk4+ceJEff755/r000/LbDfGKDw8XE888YSefPJJSVJ+fr5CQ0O1YMECDRw4UF999ZVat26tTZs2qWvXrpKk5ORk9e7dW99//73Cw8M1d+5cPf3003K5XHI4HNa5ly9frj179kiSBgwYoBMnTmjFihXW+bt3766OHTtq3rx5f3gtbrdbQUFBys/Pl9PpvKB5KUuTiUle+/unxVX4OQAAuNLY+f5dqStZH374obp27ar77rtPISEh6tSpk/72t79Z7fv27ZPL5VJMTIx1LCgoSFFRUUpLS5MkpaWlKTg42ApYkhQTEyNfX19t2LDBqrn55putgCVJsbGxyszM1NGjR62aM89TUlNynrMVFBTI7XZ7bQAAACUqNWR99913mjt3rpo3b65Vq1Zp5MiRevzxx7Vw4UJJksvlkiSFhoZ6vS40NNRqc7lcCgkJ8Wr39/dX3bp1vWrK6uPMc/xWTUn72aZOnaqgoCBri4iIOO/rBwAAl69KDVkej0edO3fWSy+9pE6dOunRRx/VI488ck4fz1W2SZMmKT8/39oOHjxY2UMCAACXkEoNWQ0bNlTr1q29jrVq1UpZWVmSpLCwMElSTk6OV01OTo7VFhYWptzcXK/206dP68iRI141ZfVx5jl+q6ak/WwBAQFyOp1eGwAAQIlKDVk33HCDMjMzvY59/fXXaty4sSSpadOmCgsLU2pqqtXudru1YcMGRUdHS5Kio6OVl5en9PR0q2b16tXyeDyKioqyatavX6+ioiKrJiUlRddee631Tcbo6Giv85TUlJwHAADgfFRqyBo3bpy+/PJLvfTSS/rmm2/03nvv6e2331ZCQoIkycfHR2PHjtWLL76oDz/8UDt3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CwAAwAaELAAAABsQsgAAAGxAyAIAALABIQsAAMAGhCwAAAAbELIAAABsQMgCAACwASELAADABoQsAAAAGxCyAAAAbEDIAgAAsAEhCwAAwAaELAAAABsQsgAAAGxQrpD13XffVfQ4AAAALivlClnNmjXTbbfdpn/+8586depURY8JAACgyitXyNqyZYvat2+vxMREhYWF6X/+53+0cePGih4bAABAlVWukNWxY0fNnDlThw4d0rvvvqvs7GzdeOONatu2rV577TUdPny4oscJAABQpVzQje/+/v665557tHTpUr388sv65ptv9OSTTyoiIkJDhw5Vdnb2Ofc1bdo0+fj4aOzYsdaxU6dOKSEhQfXq1VOtWrXUv39/5eTkeL0uKytLcXFxqlGjhkJCQjR+/HidPn3aq2bt2rXq3LmzAgIC1KxZMy1YsKDU+WfPnq0mTZqoevXqioqKYmUOAABckAsKWZs3b9Zjjz2mhg0b6rXXXtOTTz6pb7/9VikpKTp06JDuvvvuc+pn06ZNeuutt9S+fXuv4+PGjdNHH32kpUuXat26dTp06JDuueceq724uFhxcXEqLCzUF198oYULF2rBggWaPHmyVbNv3z7FxcXptttu07Zt2zR27Fg9/PDDWrVqlVWzePFiJSYm6rnnntOWLVvUoUMHxcbGKjc390KmBwAAXMlMObz66qumbdu2plq1aubuu+82H330kSkuLvaqOXjwoPHz8/vDvo4dO2aaN29uUlJSzC233GLGjBljjDEmLy/PVKtWzSxdutSq/eqrr4wkk5aWZowx5uOPPza+vr7G5XJZNXPnzjVOp9MUFBQYY4x56qmnTJs2bbzOOWDAABMbG2vtd+vWzSQkJFj7xcXFJjw83EydOvUcZ8SY/Px8I8nk5+ef82vOR+MJK7w2AABw4ex8/y7XStbcuXN1//3368CBA1q+fLnuuusu+fp6dxUSEqK///3vf9hXQkKC4uLiFBMT43U8PT1dRUVFXsdbtmypyMhIpaWlSZLS0tLUrl07hYaGWjWxsbFyu93atWuXVXN237GxsVYfhYWFSk9P96rx9fVVTEyMVVOWgoICud1urw0AAKCEf3letHfv3j+scTgcio+P/92aRYsWacuWLdq0aVOpNpfLJYfDoeDgYK/joaGhcrlcVs2ZAaukvaTt92rcbrdOnjypo0ePqri4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Zngdv2hzYXDJWrRokXE4HObdd981u3btMo888ogJDg42OTk5lT20ChMbG2vmz59vMjIyzLZt20zv3r1NZGSkOX78uFUzYsQIExERYVJTU83mzZtN9+7dzfXXX2+1nz592rRt29bExMSYrVu3mo8//tjUr1/fTJo0qTIuqUJs3LjRNGnSxLRv396MGTPGOn6lzMWRI0dM48aNzYMPPmg2bNhgvvvuO7Nq1SrzzTffWDXTpk0zQUFBZvny5Wb79u3mT3/6k2natKk5efKkVdOrVy/ToUMH8+WXX5pPP/3UNGvWzAwaNKgyLqnc/vKXv5h69eqZFStWmH379pmlS5eaWrVqmZkzZ1o1l+tcfPzxx+bpp582y5YtM5LM+++/79VeEdedn59vQkNDzeDBg01GRob597//bQIDA81bb711sS7znPzeXOTl5ZmYmBizePFis2fPHpOWlma6detmunTp4tXHlTAXZ1q2bJnp0KGDCQ8PN6+//rpX28WaC0LWJaxbt24mISHB2i8uLjbh4eFm6tSplTgqe+Xm5hpJZt26dcaYX/7xqFatmlm6dKlV89VXXxlJJi0tzRjzyy+cr6+vcblcVs3cuXON0+k0BQUFF/cCKsCxY8dM8+bNTUpKirnllluskHUlzcWECRPMjTfe+JvtHo/HhIWFmVdeecU6lpeXZwICAsy///1vY4wxu3fvNpLMpk2brJqVK1caHx8f88MPP9g3+AoWFxdnHnroIa9j99xzjxk8eLAx5sqZi7PfTCvquufMmWPq1Knj9fsxYcIEc+2119p8ReX3e8GixMaNG40kc+DAAWPMlTcX33//vbnqqqtMRkaGady4sVfIuphzwceFl6jCwkKlp6crJibGOubr66uYmBilpaVV4sjslZ+fL0mqW7euJCk9PV1FRUVe89CyZUtFRkZa85CWlqZ27dp5PTQ2NjZWbrdbu3btuoijrxgJCQmKi4vzumbpypqLDz/8UF27dtV9992nkJAQderUSX/729+s9n379snlcnnNRVBQkKKiorzmIjg4WF27drVqYmJi5Ovrqw0bNly8i7lA119/vVJTU/X1119LkrZv367PPvtMd955p6Qray7OVFHXnZaWpptvvlkOh8OqiY2NVWZmpo4ePXqRrqbi5efny8fHx/qbulfSXHg8Hg0ZMkTjx49XmzZtSrVfzLkgZF2i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lClT1LFjR7311luKiIhQjRo19Oc//9lrRWHTpk264447VL9+fQUFBemWW27Rli1bvMbj4+OjuXPn6k9/+pNq1qypRx55RLfddpskqU6dOvLx8dGDDz4oqeyVkI4dO2rKlCm/2d9f/vIXSdIHH3ygzp07q3r16rr66qv1/PPP/2Go9Pf3V1hYmMLDw9WuXTuNHj1a69atU0ZGhl5++WWrrqCgQE8++aSuuuoq1axZU1FRUVq7du1v9vvtt9/q7rvvVmhoqGrVqqXrrrtOn3zyidX+wgsvqG3btqVe17FjRz377LO/2e+iRYvUp08fr2O33nqrRo8erbFjx6pOnToKDQ3V3/72N504cULDhg1T7dq11axZM61cudJ6zdkriSUfd65atUqtWrVSrVq1rLB+5nnGjh3rde6+fftaP7tbb71VBw4c0Lhx46wVwhKfffaZbrrpJgUGBioiIkKPP/64Tpw4YbXPmTNHzZs3V/Xq1RUaGqp7773X6zx9+vTRokWLfnNegKqEkAVcZm6//XZ16NBBy5Yts47dd999ys3N1cqVK5Wenq7OnTurR48eOnLkiFXzzTffaMmSJfroo4+UnJysrVu36rHHHrPajx07pvj4eH322Wf68ssv1bx5c/Xu3bvUKtCUKVPUr18/7dy5U88//7z+85//SJIyMzOVnZ2tmTNnntf1nNnfQw89pE8//VRDhw7VmDFjtHv3br311ltasGCBFcDOR8uWLXXnnXd6zdWoUaOUlpamRYsWaceOHbrvvvvUq1cv7d27t8w+jh8/rt69eys1NVVbt25Vr1691KdPH2VlZUmSHnroIX311VfatGmT9ZqtW7dqx44dGjZsWJl9HjlyRLt371bXrl1LtS1cuFD169fXxo0bNXr0aI0cOVL33Xefrr/+em3ZskU9e/bUkCFD9PPPP//mdf/888/661//qn/84x9av369srKy9OSTT57TnEnSsmXL1KhRI73wwgvKzs62Atq3336rXr16qX///tqxY4cWL16szz77TKNGjZIkbd68WY8//rheeOEFZWZmKjk5WTfffLNX3926ddPGjRsv2Y9xgfNy3n9SGsAlIT4+3tx9991ltg0YMMC0atXKGGPMp59+apxOpzl16pRXzTXXXGPeeustY4wxzz33nPHz8zPff/+91b5y5Urj6+trsrOzyzxHcXGxqV27tvnoo4+sY5LM2LFjverWrFljJJmjR496HW/cuLF5/fXXvY516NDBPPfcc7/bX48ePcxLL73kdewf//iHadiwYZnjLLm+Dh06lNk2YcIEExgYaIwx5sCBA8bPz8/88MMPpc45adIkY4wx8+fPN0FBQb95LmOMadOmjXnzzTet/TvvvNOMHDnS2h89erS59dZbf/P1W7duNZJMVlaW1/FbbrnF3Hjjjdb+6dOnTc2aNc2QIUOsY9nZ2UaSSUtLM8aUnv/58+cbSeabb76xXjN79mwTGhrqdZ4xY8Z4nfvuu+828fHx1n5ZP7/hw4ebRx991OvYp59+anx9fc3JkyfNf/7zH+N0Oo3b7f7Na9++fbuRZPbv3/+bNUBV4V958Q6AXYwx1kc427dv1/Hjx1WvXj2vmpMnT+rbb7+19iMjI3XVVVdZ+9HR0fJ4PMrMzFRYWJhycnL0zDPPaO3atcrNzVVxcbF+/vlna8WmRFmrLxfi7P62b9+uzz//3Gvlqri4WKdOndLPP/+sGjVqnFf/Z87Vzp07VVxcrBYtWnjVFBQUlJq/EsePH9eUKVOUlJSk7OxsnT59WidPnvSal0ceeUQPPfSQXnvtNfn6+uq9997T66+//ptjOnnypCSpevXqpdrat29v/befn5/q1aundu3aWcdCQ0MlSbm5ub/Zf40aNXTNNddY+w0bNvzd+nO1fft27dixQ//617+sY8YYeTwe7du3T3fccYcaN26sq6++Wr169VKvXr3Ur18/r59ZYGCgJP3uShxQVRCygMvQV199paZNm0r6JQQ0bNiwzPuKzudRBPHx8frpp580c+ZMNW7cWAEBAYqOjlZhYaFXXc2aNc+pP19fXxljvI6VdWP72f0dP35czz//vO65555StWWFkj9y9lz5+fkpPT1dfn5+XnW1atUq8/VPPvmkUlJS9Ne//lXNmjVTYGCg7r33Xq956dOnjwICAvT+++/L4XCoqKio1L1IZ6pfv74k6ejRo2rQoIFXW7Vq1bz2S75deua+pN/9hmlZfZz5szjXn83Zjh8/rv/5n//R448/XqotMjJSDodDW7Zs0dq1a/Xf//5XkydP1pQpU7Rp0ybr/4slH2Gffd1AVUTIAi4zq1ev1s6dOzVu3DhJUufOneVyueTv768mTZr85uuysrJ06NAhhYeHS5K+/PJL+fr66tprr5Ukff7555ozZ4569+4tSTp48KB+/PHHPxyPw+GQ9Mtq05kaNGjgdbO12+3Wvn37/rC/zp07KzMzU82aNfvD2j+yZ88eJScna9KkSZKkTp06qbi4WLm5ubrpppvOqY/PP/9cDz74oPr16yfpl6Cxf/9+rxp/f3/Fx8dr/vz5cjgcGjhwoLViU5ZrrrlGTqdTu3fvLrWqdjGc/bMpLi5WRkaG9SUG6Zef69k/086dO2v37t2/+7Px9/dXTEyMYmJi9Nxzzyk4OFirV6+2QnNGRoYaNWpkBU2gKiNkAVVYQUGBXC6XiouLlZOTo+TkZE2dOlV33XWXhg4dKkmKiYlRdHS0+vbtq+nTp6tFixY6dOiQkpKS1K9fP+vjuOrVqys+Pl5//etf5Xa79fjjj+vPf/6zwsLCJEnNmzfXP/7xD3Xt2lVut1vjx4//3aBQonHjxvLx8dGKFSvUu3dvBQYGqlatWrr99tu1YMEC9enTR8HBwZo8eXKp1aOyTJ48WXfddZciIyN17733ytfXV9u3b1dGRoZefPHF33zd6dOn5XK55PF49NNPP2nt2rV68cUX1bFjR40fP16S1KJFCw0ePFhDhw7Vq6++qk6dOunw4cNKTU1V+/btFRcXV6rf5s2ba9myZerTp498fHz07LPPlrmK9PDDD6tVq1aSfglmv8fX11cxMTH67LPP1Ldv3z+ck4p2++23KzExUUlJSbrmmmv02muvlXrOWZMmTbR+/XoNHDhQAQEBql+/viZMmKDu3btr1KhRevjhh1WzZk3t3r1bKSkpmjVrllasWKHvvvtON998s+rUqaOPP/5YHo/HCvKS9Omnn6pnz54X+YoBe/DtQqAKS05OVsOGDdWkSRP16tVLa9as0RtvvKEPPvjACiw+Pj76+OOPdfPNN2vYsGFq0aKFBg4cqAMHDlj370hSs2bNdM8996h3797q2bOn2rdvrzlz5ljtf//733X06FF17txZQ4YM0eOPP66QkJA/HONVV12l559/XhMnTlRoaKj1TbNJkybplltu0V133aW4uDj17dvX6z6h3xIbG6sVK1bov//9r6677jp1795dr7/++h8+T2rXrl1q2LChIiMjdeutt2rJkiWaNGmSPv30U6+PAufPn6+hQ4fqiSee0LXXXqu+fftq06ZNioyMLLPf1157TXXq1NH111+vPn36KDY2Vp07dy5V17x5c11//fVq2bKloqKi/vA6H374YS1atKhSHiz70EMPKT4+XkOHDtUtt9yiq6++2msVS/rl0RT79+/XNddcY3201759e61bt05ff/21brrpJnXq1EmTJ0+2VkeDg4O1bNky3X777WrVqpXmzZunf//732rTpo0k6dSpU1q+fLkeeeSRi3vBgE18zNkfvAO44kyZMkXLly/Xtm3bKnsoly1jjJo3b67HHntMiYmJ51QfFRWlcePGadCgQRdhhJVv7ty5ev/99/Xf//63socCVAhWsgDAZocPH9asWbPkcrl+89lYZ/Px8dHbb799STy5/2KpVq2a3nzzzcoeBlBhuCcLAGwWEhKi+vXr6+2331adOnXO+XUdO3ZUx44d7RvYJebhhx+u7CEAFYqPCwEAAGzAx4UAAAA2IGQBAADYgJAFAABgA0IWAACADQhZAAAANiBkAQAA2ICQBQAAYANCFgAAgA0IWQAAADb4/wESmFCokH7ykQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Choose your target variable, e.g., 'DepDelayMinutes'\n",
    "X = df_jfk_encoded.drop('DepDelayMinutes', axis=1)\n",
    "y = df_jfk_encoded['DepDelayMinutes']\n",
    "\n",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
    "# plot the distribution of the target variable\n",
    "plt.hist(y, bins=100)\n",
    "plt.xlabel('Departure Delay (minutes)')\n",
    "plt.ylabel('Frequency')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "# Splitting the dataset into training and testing sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "X_train = X_train.apply(pd.to_numeric, errors='coerce')\n",
    "y_train = pd.to_numeric(y_train, errors='coerce')\n",
    "X_test = X_test.apply(pd.to_numeric, errors='coerce')\n",
    "y_test = pd.to_numeric(y_test, errors='coerce')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "# Splitting the dataset into training and testing sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "X_train = X_train.apply(pd.to_numeric, errors='coerce')\n",
    "y_train = pd.to_numeric(y_train, errors='coerce')\n",
    "X_test = X_test.apply(pd.to_numeric, errors='coerce')\n",
    "y_test = pd.to_numeric(y_test, errors='coerce')"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:07:57.060977300Z",
     "start_time": "2023-12-11T17:07:56.738640200Z"
    }
   },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# Initialize the model\n",
    "model = LinearRegression()\n",
    "\n",
    "# Train the model\n",
    "model.fit(X_train, y_train)\n"
   ]
  },
  {
   "cell_type": "code",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:08:11.323526900Z",
     "start_time": "2023-12-11T17:08:10.881732300Z"
    }
   },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "\n",
    "# Predict on the test set\n",
    "y_pred = model.predict(X_test)\n",
    "\n",
    "# Evaluate the model\n",
    "mse = mean_squared_error(y_test, y_pred)\n",
    "r2 = r2_score(y_test, y_pred)\n",
    "print(\"Mean Squared Error:\", mse)\n",
    "print(\"R^2 Score:\", r2)\n"
   ]
  },
  {
   "cell_type": "code",
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:15:24.634324900Z",
     "start_time": "2023-12-11T17:15:24.628684100Z"
    }
   },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "outputs": [],
   "source": [
    "print(list(X_test))"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:28:49.141033600Z",
     "start_time": "2023-12-11T17:28:49.133184200Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "\n",
    "i = X_test.iloc[[3]].copy()\n",
    "i['FlightDate'] = 1640995200000000000\n",
    "i['Year'] = 2022\n",
    "i['Month'] = 1\n",
    "i['Day'] = 1\n",
    "print(i)\n"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   ]
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:17:36.066986Z",
     "start_time": "2023-12-11T17:17:36.055529500Z"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "X_mike = X_test.iloc[[3]]"
   ]
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-12-11T17:29:00.458780500Z",
     "start_time": "2023-12-11T17:29:00.448275500Z"
Fadi Gattoussi's avatar
Fadi Gattoussi committed
    },
Fadi Gattoussi's avatar
Fadi Gattoussi committed
   },
   "outputs": [],
   "source": [
    "model.predict(i)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "sas2",
   "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.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}