[bd22c4]: / eda / JGM / regression_variable_importance.ipynb

Download this file

4187 lines (4186 with data), 725.9 kB

{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 310,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "import numpy as np\n",
    "#sys.path.insert(0, os.path.abspath('../module-subdirectory'))\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.dummy import DummyRegressor\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn import linear_model\n",
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "import matplotlib.pyplot as plt\n",
    "import covid_data # ians py file in local directory\n",
    "import importlib\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 311,
   "metadata": {},
   "outputs": [],
   "source": [
    "# functions\n",
    "def evaluate(model, test_features, test_labels):\n",
    "    predictions = model.predict(test_features)\n",
    "    errors = abs(predictions - test_labels)\n",
    "    mse = mean_squared_error(test_labels, predictions)\n",
    "    r2 = r2_score(test_labels, predictions)\n",
    "    plt.scatter(predictions, test_labels)\n",
    "    plt.xlabel(\"prediction\")\n",
    "    plt.ylabel(\"True\")\n",
    "    plt.xlim(0,45)\n",
    "    plt.ylim(0,45)\n",
    "    print('Model Performance')\n",
    "    print('Average Error: {:0.4f} days.'.format(np.mean(errors)))\n",
    "    print('r2: {:0.4f}'.format(r2))\n",
    "    print('MSE = {:0.2f} days.'.format(mse))    \n",
    "    return r2, mse\n",
    "\n",
    "## check which columns are numbers, set those TRUE\n",
    "def is_int(val):\n",
    "    try:\n",
    "        num = int(val)\n",
    "    except ValueError:\n",
    "        return False\n",
    "    return True\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 312,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'covid_data' from 'C:\\\\Users\\\\jesse\\\\Documents\\\\COVID_ML\\\\covid_data.py'>"
      ]
     },
     "execution_count": 312,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "importlib.reload(covid_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_dict ={}\n",
    "quant_range_dict = {}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['proteomics', 'lipidomics', 'metabolomics', 'transcriptomics'])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "covid_data.omics_id_dict.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "ome_names = ['proteomics', 'lipidomics', 'metabolomics']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "proteomics\n",
      "lipidomics\n",
      "metabolomics\n"
     ]
    }
   ],
   "source": [
    "for key in ome_names:\n",
    "    print(key)\n",
    "    df_dict[key], quant_range_dict[key] = covid_data.get_omics_data(with_metadata=True, dataset=key)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_dict, quant_range_dict = covid_data.get_combined_data(df_dict, quant_range_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['proteomics', 'lipidomics', 'metabolomics', 'combined'])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_dict.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "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>7593</th>\n",
       "      <th>7596</th>\n",
       "      <th>7597</th>\n",
       "      <th>7599</th>\n",
       "      <th>7600</th>\n",
       "      <th>7601</th>\n",
       "      <th>7602</th>\n",
       "      <th>7605</th>\n",
       "      <th>7606</th>\n",
       "      <th>7607</th>\n",
       "      <th>...</th>\n",
       "      <th>Vent_free_days</th>\n",
       "      <th>DM</th>\n",
       "      <th>Hospital_free_days_45</th>\n",
       "      <th>Ferritin_NG/ML</th>\n",
       "      <th>CRP_MG/L</th>\n",
       "      <th>DDIMER_mg/L_FEU</th>\n",
       "      <th>Procalcitonin_NG/ML</th>\n",
       "      <th>Lactate_MMol/L</th>\n",
       "      <th>Fibrinogen</th>\n",
       "      <th>SOFA</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sample_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1.0</th>\n",
       "      <td>37.995543</td>\n",
       "      <td>27.176361</td>\n",
       "      <td>28.294477</td>\n",
       "      <td>24.783368</td>\n",
       "      <td>23.926601</td>\n",
       "      <td>23.490571</td>\n",
       "      <td>25.490816</td>\n",
       "      <td>29.287382</td>\n",
       "      <td>29.505121</td>\n",
       "      <td>29.909421</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>946</td>\n",
       "      <td>73.1</td>\n",
       "      <td>1.3</td>\n",
       "      <td>36</td>\n",
       "      <td>0.9</td>\n",
       "      <td>513</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.0</th>\n",
       "      <td>37.353091</td>\n",
       "      <td>29.419228</td>\n",
       "      <td>29.048510</td>\n",
       "      <td>27.573331</td>\n",
       "      <td>24.671039</td>\n",
       "      <td>22.343591</td>\n",
       "      <td>27.166913</td>\n",
       "      <td>29.576452</td>\n",
       "      <td>30.081443</td>\n",
       "      <td>29.514012</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>39</td>\n",
       "      <td>1060</td>\n",
       "      <td></td>\n",
       "      <td>1.03</td>\n",
       "      <td>0.37</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.0</th>\n",
       "      <td>37.527875</td>\n",
       "      <td>27.174171</td>\n",
       "      <td>28.953215</td>\n",
       "      <td>25.619161</td>\n",
       "      <td>24.528623</td>\n",
       "      <td>20.714471</td>\n",
       "      <td>25.589237</td>\n",
       "      <td>29.621968</td>\n",
       "      <td>29.398338</td>\n",
       "      <td>29.436129</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>18</td>\n",
       "      <td>1335</td>\n",
       "      <td>53.2</td>\n",
       "      <td>1.48</td>\n",
       "      <td>0.07</td>\n",
       "      <td></td>\n",
       "      <td>513</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.0</th>\n",
       "      <td>37.673128</td>\n",
       "      <td>28.879702</td>\n",
       "      <td>29.527460</td>\n",
       "      <td>23.893562</td>\n",
       "      <td>25.875326</td>\n",
       "      <td>24.170967</td>\n",
       "      <td>25.280226</td>\n",
       "      <td>30.966780</td>\n",
       "      <td>30.360452</td>\n",
       "      <td>30.041791</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>39</td>\n",
       "      <td>583</td>\n",
       "      <td>251.1</td>\n",
       "      <td>1.32</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.87</td>\n",
       "      <td>949</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5.0</th>\n",
       "      <td>37.983542</td>\n",
       "      <td>27.262485</td>\n",
       "      <td>28.605867</td>\n",
       "      <td>18.440251</td>\n",
       "      <td>20.888495</td>\n",
       "      <td>17.354782</td>\n",
       "      <td>25.654472</td>\n",
       "      <td>29.020542</td>\n",
       "      <td>29.175695</td>\n",
       "      <td>29.628988</td>\n",
       "      <td>...</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>27</td>\n",
       "      <td>800</td>\n",
       "      <td>355.8</td>\n",
       "      <td>0.69</td>\n",
       "      <td>4.92</td>\n",
       "      <td>1.48</td>\n",
       "      <td>929</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 536 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                7593       7596       7597       7599       7600       7601  \\\n",
       "sample_id                                                                     \n",
       "1.0        37.995543  27.176361  28.294477  24.783368  23.926601  23.490571   \n",
       "2.0        37.353091  29.419228  29.048510  27.573331  24.671039  22.343591   \n",
       "3.0        37.527875  27.174171  28.953215  25.619161  24.528623  20.714471   \n",
       "4.0        37.673128  28.879702  29.527460  23.893562  25.875326  24.170967   \n",
       "5.0        37.983542  27.262485  28.605867  18.440251  20.888495  17.354782   \n",
       "\n",
       "                7602       7605       7606       7607  ...  Vent_free_days  \\\n",
       "sample_id                                              ...                   \n",
       "1.0        25.490816  29.287382  29.505121  29.909421  ...               0   \n",
       "2.0        27.166913  29.576452  30.081443  29.514012  ...              28   \n",
       "3.0        25.589237  29.621968  29.398338  29.436129  ...              28   \n",
       "4.0        25.280226  30.966780  30.360452  30.041791  ...              28   \n",
       "5.0        25.654472  29.020542  29.175695  29.628988  ...              23   \n",
       "\n",
       "           DM  Hospital_free_days_45  Ferritin_NG/ML  CRP_MG/L  \\\n",
       "sample_id                                                        \n",
       "1.0         0                      0             946      73.1   \n",
       "2.0         0                     39            1060             \n",
       "3.0         1                     18            1335      53.2   \n",
       "4.0         0                     39             583     251.1   \n",
       "5.0         0                     27             800     355.8   \n",
       "\n",
       "           DDIMER_mg/L_FEU  Procalcitonin_NG/ML  Lactate_MMol/L  Fibrinogen  \\\n",
       "sample_id                                                                     \n",
       "1.0                    1.3                   36             0.9         513   \n",
       "2.0                   1.03                 0.37                               \n",
       "3.0                   1.48                 0.07                         513   \n",
       "4.0                   1.32                 0.98            0.87         949   \n",
       "5.0                   0.69                 4.92            1.48         929   \n",
       "\n",
       "           SOFA  \n",
       "sample_id        \n",
       "1.0           8  \n",
       "2.0              \n",
       "3.0              \n",
       "4.0              \n",
       "5.0           7  \n",
       "\n",
       "[5 rows x 536 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_dict[\"proteomics\"].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfc = df_dict[\"combined\"]\n",
    "X = dfc[dfc.columns[[is_int(x) for x in dfc.columns]]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfp = df_dict['proteomics']\n",
    "X = dfp[dfp.columns[[is_int(x) for x in dfp.columns]]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C2754BC40>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C275548B0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C2740C9A0>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C279B60A0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C275C7700>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27824CA0>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C278B5A00>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C2791BDC0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C278EFF70>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27AED520>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C2757C7F0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27606AC0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['figure.figsize'] = 10,10\n",
    "X.iloc[:,0:12].hist(sharex=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27E43EE0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27C16CD0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27C0EB50>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27E80EB0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27EAF5B0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27C5E370>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27C67160>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27C81940>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27C78A30>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27CB97C0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27D0B490>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27D0B5E0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X.T.iloc[:,0:10].hist(sharex=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C27DE7FD0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C280ED5E0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C28357760>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C2839EEE0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C281477F0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C281A75B0>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C281B53A0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C281DDB80>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C281D0C70>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x0000012C28232A00>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C282A26D0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x0000012C282A2820>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.log2(X.T.iloc[:,0:10]).hist(sharex=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfc_covid = dfc[dfc['COVID']==1]\n",
    "X = dfc_covid[dfc.columns[[is_int(x) for x in dfc.columns]]]\n",
    "y = dfc_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "regr = linear_model.LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "regr.fit(X_train, y_train)\n",
    "y_pred = regr.predict(X_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sample_id\n",
       "31.0      0\n",
       "69.0     42\n",
       "64.0     16\n",
       "48.0      0\n",
       "43.0      0\n",
       "41.0     20\n",
       "92.0      0\n",
       "46.0     39\n",
       "11.0     37\n",
       "1.0       0\n",
       "19.0     38\n",
       "32.0      0\n",
       "99.0      0\n",
       "87.0     39\n",
       "78.0     31\n",
       "5.0      27\n",
       "81.0      0\n",
       "34.0     36\n",
       "13.0     39\n",
       "27.0      0\n",
       "102.0     0\n",
       "Name: Hospital_free_days_45, dtype: int64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_valid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Coefficients: \n",
      " [-0.00467527  0.00533826  0.02447892 ... -0.00183349 -0.0033168\n",
      " -0.01636789]\n",
      "Mean squared error: 139.41\n",
      "Coefficient of determination: 0.55\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# The coefficients\n",
    "print('Coefficients: \\n', regr.coef_)\n",
    "# The mean squared error\n",
    "print('Mean squared error: %.2f'\n",
    "      % mean_squared_error(y_valid, y_pred))\n",
    "# The coefficient of determination: 1 is perfect prediction\n",
    "print('Coefficient of determination: %.2f'\n",
    "      % r2_score(y_valid, y_pred))\n",
    "\n",
    "# Plot outputs\n",
    "plt.rcParams['figure.figsize'] = 5,5\n",
    "plt.scatter(y_valid, y_pred,  color='black')\n",
    "#plt.plot(X_valid, y_pred, color='blue', linewidth=3)\n",
    "plt.xlabel('true')\n",
    "plt.ylabel('pred')\n",
    "plt.title('linear regression, all')\n",
    "plt.xticks(())\n",
    "plt.yticks(())\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestRegressor(bootstrap=False, ccp_alpha=0.0, criterion='mse',\n",
       "                      max_depth=None, max_features='sqrt', max_leaf_nodes=None,\n",
       "                      max_samples=None, min_impurity_decrease=0.0,\n",
       "                      min_impurity_split=None, min_samples_leaf=1,\n",
       "                      min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "                      n_estimators=400, n_jobs=None, oob_score=False,\n",
       "                      random_state=None, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf = RandomForestRegressor(n_estimators=400,\n",
    "                           min_samples_leaf=1, \n",
    "                           min_samples_split=2, \n",
    "                           max_features='sqrt', \n",
    "                           max_depth=None, \n",
    "                           bootstrap=False)\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred_rf = rf.predict(X_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "def model_eval(model, model_name, XTRAIN, XTEST,YTRAIN, YTEST):\n",
    "    model.fit(XTRAIN, YTRAIN)\n",
    "    YPRED = model.predict(XTEST)\n",
    "    \n",
    "    print('Mean squared error: %.2f'\n",
    "      % mean_squared_error(YTEST, YPRED))\n",
    "    # The coefficient of determination: 1 is perfect prediction\n",
    "    print('Coefficient of determination: %.2f'\n",
    "      % r2_score(YTEST, YPRED))\n",
    "\n",
    "    # Plot outputs\n",
    "    plt.rcParams['figure.figsize'] = 5,5\n",
    "    plt.scatter(YTEST, YPRED,  color='black')\n",
    "    #plt.plot(X_valid, y_pred, color='blue', linewidth=3)\n",
    "    plt.xlabel('true')\n",
    "    plt.ylabel('pred')\n",
    "    plt.title(model_name)\n",
    "    plt.xticks(())\n",
    "    plt.yticks(())\n",
    "\n",
    "    plt.show()\n",
    "    return mean_squared_error(YTEST, YPRED), r2_score(YTEST, YPRED)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "## try many models\n",
    "from sklearn.ensemble import ExtraTreesRegressor, AdaBoostRegressor, GradientBoostingRegressor\n",
    "from sklearn.linear_model import Lasso, Ridge, ElasticNet\n",
    "from sklearn.model_selection import KFold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_dict = {\n",
    "    'extratrees': ExtraTreesRegressor(),\n",
    "    'rf' : RandomForestRegressor(),\n",
    "    'adaboost': AdaBoostRegressor(),\n",
    "    'linear': linear_model.LinearRegression(),\n",
    "    'gboost': GradientBoostingRegressor() , \n",
    "    'lasso' : Lasso(),\n",
    "    'elastic': ElasticNet(),\n",
    "    'ridge': Ridge()\n",
    "    \n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# k-fold cross validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[37.99554289, 27.17636051, 28.29447674, ..., 15.16741815,\n",
       "        14.05324713, 10.56985561],\n",
       "       [37.35309104, 29.41922775, 29.04851028, ..., 17.5951409 ,\n",
       "        17.06381637, 13.86302471],\n",
       "       [37.52787482, 27.17417108, 28.95321485, ..., 15.70455212,\n",
       "        14.2511865 , 11.55074679],\n",
       "       ...,\n",
       "       [37.06898003, 32.41540953, 28.43013858, ..., 17.12565562,\n",
       "        15.93387504, 13.13249973],\n",
       "       [38.00467456, 26.63699361, 28.3468033 , ..., 14.4252159 ,\n",
       "        13.35810171, 10.5980525 ],\n",
       "       [38.31857615, 27.79958855, 25.86114656, ..., 15.51422091,\n",
       "        13.65508345, 11.79766153]])"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.asarray(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "xa = np.asarray(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([37.99554289, 27.17636051, 28.29447674, ..., 15.16741815,\n",
       "       14.05324713, 10.56985561])"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xa[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([37.80015001, 27.99512544, 28.51739493, ..., 16.836149  ,\n",
       "       16.18495281, 13.33035672])"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xa[35]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[37.35309104, 29.41922775, 29.04851028, ..., 17.5951409 ,\n",
       "        17.06381637, 13.86302471],\n",
       "       [37.67312772, 28.87970215, 29.52746006, ..., 15.85574448,\n",
       "        15.15165083, 11.84156435],\n",
       "       [37.98354217, 27.26248545, 28.60586678, ..., 16.78596325,\n",
       "        15.6909801 , 13.10164745],\n",
       "       ...,\n",
       "       [37.78755632, 26.96906061, 28.10314571, ..., 16.60819706,\n",
       "        15.47990654, 12.82376528],\n",
       "       [37.06898003, 32.41540953, 28.43013858, ..., 17.12565562,\n",
       "        15.93387504, 13.13249973],\n",
       "       [38.00467456, 26.63699361, 28.3468033 , ..., 14.4252159 ,\n",
       "        13.35810171, 10.5980525 ]])"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xa[train_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "ya = np.asarray(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'extratrees': None,\n",
       " 'rf': None,\n",
       " 'adaboost': None,\n",
       " 'linear': None,\n",
       " 'gboost': None,\n",
       " 'lasso': None,\n",
       " 'elastic': None,\n",
       " 'ridge': None}"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "mse = {}\n",
    "mse = mse.fromkeys(model_dict.keys(),[])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'extratrees': [],\n",
       " 'rf': [],\n",
       " 'adaboost': [],\n",
       " 'linear': [],\n",
       " 'gboost': [],\n",
       " 'lasso': [],\n",
       " 'elastic': [],\n",
       " 'ridge': []}"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import defaultdict\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fold=0\n",
      "TRAIN: [  1   3   4   5   6   7   8   9  10  11  13  14  15  16  17  18  19  20\n",
      "  21  23  24  25  26  27  28  29  32  34  35  36  38  39  40  41  43  44\n",
      "  45  46  47  48  51  52  53  56  58  59  60  61  62  63  64  65  66  67\n",
      "  68  69  70  71  72  74  77  78  79  80  81  82  84  85  87  88  89  90\n",
      "  92  93  94  95  96  97  98  99 100] TEST: [  0   2  12  22  30  31  33  37  42  49  50  54  55  57  73  75  76  83\n",
      "  86  91 101]\n",
      "Mean squared error: 181.58\n",
      "Coefficient of determination: 0.36\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "181.57926666666668\n",
      "0.3620524163094916\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668]})\n",
      "Mean squared error: 213.82\n",
      "Coefficient of determination: 0.25\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "213.82110476190476\n",
      "0.24877625276843907\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476]})\n",
      "Mean squared error: 273.61\n",
      "Coefficient of determination: 0.04\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "273.61457507038944\n",
      "0.03870215893594964\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944]})\n",
      "Mean squared error: 186.91\n",
      "Coefficient of determination: 0.34\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "186.91075006684227\n",
      "0.3433211645808907\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227]})\n",
      "Mean squared error: 197.69\n",
      "Coefficient of determination: 0.31\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "197.68845098928438\n",
      "0.30545556248088457\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227], 'gboost': [197.68845098928438]})\n",
      "Mean squared error: 204.34\n",
      "Coefficient of determination: 0.28\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "204.33958899018347\n",
      "0.28208793084343065\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347]})\n",
      "Mean squared error: 200.58\n",
      "Coefficient of determination: 0.30\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200.5773760754689\n",
      "0.29530582010100404\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689]})\n",
      "Mean squared error: 187.14\n",
      "Coefficient of determination: 0.34\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "187.14313333525595\n",
      "0.3425047258580338\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "fold=1\n",
      "TRAIN: [  0   1   2   3   4   5   6   7   8   9  11  12  13  14  15  17  18  19\n",
      "  20  21  22  23  27  29  30  31  32  33  34  36  37  38  39  40  41  42\n",
      "  43  44  45  47  48  49  50  51  52  53  54  55  57  58  59  60  61  62\n",
      "  63  64  66  68  69  70  72  73  74  75  76  79  81  82  83  84  86  88\n",
      "  89  91  93  94  95  97  98 100 101] TEST: [10 16 24 25 26 28 35 46 56 65 67 71 77 78 80 85 87 90 92 96 99]\n",
      "Mean squared error: 147.20\n",
      "Coefficient of determination: 0.46\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "147.20063809523808\n",
      "0.45741895488206485\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 179.04\n",
      "Coefficient of determination: 0.34\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "179.03508095238095\n",
      "0.34007730813593884\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944], 'linear': [186.91075006684227], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 176.63\n",
      "Coefficient of determination: 0.35\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "176.63408622874763\n",
      "0.34892736641916955\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 204.55\n",
      "Coefficient of determination: 0.25\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "204.54883345327366\n",
      "0.2460337042769788\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 300.13\n",
      "Coefficient of determination: -0.11\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "300.13386592362116\n",
      "-0.10629239625145814\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 248.71\n",
      "Coefficient of determination: 0.08\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "248.71431006040703\n",
      "0.08323990959161909\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 215.59\n",
      "Coefficient of determination: 0.21\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "215.58669117955304\n",
      "0.2053481987079545\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595]})\n",
      "Mean squared error: 204.55\n",
      "Coefficient of determination: 0.25\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "204.5544289216952\n",
      "0.24601307939964567\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "fold=2\n",
      "TRAIN: [  0   1   2   4   5   7   8  10  11  12  13  14  16  18  19  22  23  24\n",
      "  25  26  27  28  29  30  31  33  34  35  37  38  39  40  41  42  44  45\n",
      "  46  47  48  49  50  52  54  55  56  57  58  59  60  64  65  66  67  69\n",
      "  71  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89\n",
      "  90  91  92  93  95  96  97  98  99 101] TEST: [  3   6   9  15  17  20  21  32  36  43  51  53  61  62  63  68  70  72\n",
      "  94 100]\n",
      "Mean squared error: 126.97\n",
      "Coefficient of determination: 0.57\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "126.96831000000002\n",
      "0.5656232979815258\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 138.26\n",
      "Coefficient of determination: 0.53\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "138.25755999999998\n",
      "0.527001163188505\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 97.48\n",
      "Coefficient of determination: 0.67\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "97.48332095430726\n",
      "0.6664956518839984\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 102.22\n",
      "Coefficient of determination: 0.65\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "102.22373414548458\n",
      "0.6502780220818181\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 200.07\n",
      "Coefficient of determination: 0.32\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200.07112864509745\n",
      "0.31552812642799366\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 127.37\n",
      "Coefficient of determination: 0.56\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "127.36766089427768\n",
      "0.5642570616001448\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 143.08\n",
      "Coefficient of determination: 0.51\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "143.0849927123351\n",
      "0.5104858271900955\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952]})\n",
      "Mean squared error: 102.23\n",
      "Coefficient of determination: 0.65\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "102.22809434741627\n",
      "0.6502631052089761\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "fold=3\n",
      "TRAIN: [  0   2   3   4   5   6   8   9  10  12  14  15  16  17  18  20  21  22\n",
      "  24  25  26  27  28  29  30  31  32  33  34  35  36  37  39  40  41  42\n",
      "  43  44  45  46  49  50  51  53  54  55  56  57  61  62  63  64  65  67\n",
      "  68  70  71  72  73  75  76  77  78  80  83  84  85  86  87  88  89  90\n",
      "  91  92  93  94  95  96  97  99 100 101] TEST: [ 1  7 11 13 19 23 38 47 48 52 58 59 60 66 69 74 79 81 82 98]\n",
      "Mean squared error: 139.29\n",
      "Coefficient of determination: 0.46\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "139.288685\n",
      "0.45603106693743656\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 141.83\n",
      "Coefficient of determination: 0.45\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "141.83390000000003\n",
      "0.44609115051159864\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 174.95\n",
      "Coefficient of determination: 0.32\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "174.95424023215864\n",
      "0.3167451369516572\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 153.18\n",
      "Coefficient of determination: 0.40\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "153.1831503510387\n",
      "0.4017685294421671\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 168.13\n",
      "Coefficient of determination: 0.34\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "168.13190028406174\n",
      "0.3433886577987122\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 165.14\n",
      "Coefficient of determination: 0.36\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "165.13627302717276\n",
      "0.35508758483491076\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 186.81\n",
      "Coefficient of determination: 0.27\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "186.80654135537353\n",
      "0.27045793425223175\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627]})\n",
      "Mean squared error: 153.16\n",
      "Coefficient of determination: 0.40\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "153.1646320851208\n",
      "0.4018408494684027\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "fold=4\n",
      "TRAIN: [  0   1   2   3   6   7   9  10  11  12  13  15  16  17  19  20  21  22\n",
      "  23  24  25  26  28  30  31  32  33  35  36  37  38  42  43  46  47  48\n",
      "  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  65  66  67\n",
      "  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  85  86\n",
      "  87  90  91  92  94  96  98  99 100 101] TEST: [ 4  5  8 14 18 27 29 34 39 40 41 44 45 64 84 88 89 93 95 97]\n",
      "Mean squared error: 125.75\n",
      "Coefficient of determination: 0.46\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "125.74522999999999\n",
      "0.4599964356265568\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 144.33\n",
      "Coefficient of determination: 0.38\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "144.33331500000003\n",
      "0.3801712831744395\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 162.78\n",
      "Coefficient of determination: 0.30\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "162.7792204098408\n",
      "0.30095671042754957\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 177.19\n",
      "Coefficient of determination: 0.24\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "177.19423527363867\n",
      "0.23905249818071506\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387, 177.19423527363867], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 168.83\n",
      "Coefficient of determination: 0.27\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAATMAAAE8CAYAAACsDlaLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAOvklEQVR4nO3db6xkd13H8c9nuhQybC3CIsSmd46UWEK0EHNjCZEAPtE0JEQtFRyl/sukwZqo4YF1aiLEMcZEEysBHBP8A8O/Gn0iCcYYxEoM5W4QIYHEyM5cbUulpM0uHcR279cHd2a5u3t378zdOXPmfM/7lWy4c87M7G9h7pszv5lzfo4IAUDdtaoeAACsAjEDkAIxA5ACMQOQAjEDkAIxA5ACMcNK2X6D7f+uehxoHmKG2rP9T7Z/uepxoFrEDEAKxAzHYvuHbH/e9jnbD9r+mO3fPbD/t2w/YXtsu3tg+422/8r2121PbN9vuzXb15rdntj+n9n9bpzte57tD9n+hu2nbH/O9ktsDyS9TtJ7bH/T9nvW/d8FNgMxw9JsXy/pbyX9haQXSvqIpJ84cJeXSjol6SZJd0sa2r51tu9PJN0o6WWSXi/p7ZJ+Ybbv52d/3jjbf1LSPE53zx53s6QXSbpH0rcioi/pIUn3RsTJiLh3pf9Y1AYxw3G8RtIJSQ9ExDMR8TeSHr7kPr8dEd+OiE9L+oSku2xfJ+mnJd0XEeciYizpDyX93OwxXUl/FBFfjYhvSrpP0lttn5D0jPYj9vKIOB8RpyPibNn/UNQHMcNxfK+kR+LiqxT814Gfn4yIpw/cnswec0rS9bPbB/fddOB5L913QtJLJH1Q0t9L+qjtR23/ge3nrOIfgxyIGY7jMUk32faBbTcf+Pm7bT//wO0tSY9KekL7R1idS/Y9Mvv50UP2PSvp8dkR4Lsi4pWSXivpTdp/iypJXPoFxAzH8q+Szku61/YJ22+W9MOX3Oddtq+3/Trth+fBiDgv6eOSBrZvsN2R9BuSPjR7zEck/brt77N9UtLvSfpYRDxr+422f3D2VvWs9qN4fva4x7U/x4YGI2ZYWkT8n6SflPRLkp6S9LOS/k7St2d3+ZqkJ7V/pDWSdE9EfGW271clPS3pq5L+RdKHJX1gtu8D2n87+c+Szkj639n9pf0PFf5a+yH7sqRP6zsR/GNJd9p+0vYDK/7noibMxRmxCrY/K+n9EfHnVY8FzcSRGY7F9uttv3T2NvNuSbdJ+mTV40Jznah6AKitW7U//3VS0n9KujMiHqt2SGgy3mYCSIG3mQBSIGYAUihlzuzUqVNRFEUZTw2gwU6fPv1ERLz4sH2lxKwoCu3s7JTx1AAazPbkSvt4mwkgBWIGIAViBiAFYgYgBWIGIAViBiAFYgYgBWIGYCGj0UhFUajVaqkoCo1Go6qHdBGumgHgSKPRSL1eT9PpVJI0mUzU6/UkSd1u92oPXRuOzAAcqd/vXwjZ3HQ6Vb/fr2hElyNmAI60u7u71PYqEDMAR9ra2lpqexWIGYAjDQYDtdvti7a1220NBoOKRnQ5YgbgSN1uV8PhUJ1OR7bV6XQ0HA43ZvJfKumy2dvb28ElgACsmu3TEbF92D6OzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMyAmdFopKIo1Gq1VBSFRqNR1UPCEk5UPQBgE4xGI/V6vQurdk8mE/V6PUnaqBWIcGUcmQGS+v3+hZDNTadT9fv9ikaEZREzQNLu7u5S27F5iBkgaWtra6nt+I5NmWskZoCkwWCgdrt90bZ2u63BYFDRiOphPtc4mUwUERfmGqsIGjEDtD/JPxwO1el0ZFudTkfD4ZDJ/yNs0lyjI2LlT7q9vR07Ozsrf14Am6XVaumwhtjW3t7eyv8+26cjYvvQsaz8bwPQGJs010jMABzbJs01EjNsnE35dAxH26S5RubMsFEu/Sa+tP//9EzGQ2LODDWySZ+OoV6IGTYK38THcREzbJRN+nQM9ULMsFE26dMx1Asxw0bZpE/HUC98mgmgNvg0E0B6xAxACsQMQArEDEAKxAxACsQMSK4pJ+6z1ByQWJOW0OPIDEisSSfuEzMgsSaduE/MgMSadOI+MQMSa9KJ+8QMSKxJJ+5zojmA2uBEcwDpETMAKRAzACkQMwApVB6zppw3BqBclZ6b2aTzxgCUq9IjsyadNwagXJXGrEnnjQHLYgpmOZXGrEnnjQHLmE/BTCYTRcSFKRiCdmWVxqxJ540By2AKZnmVxqxJ540By2AKZnmcmwlsoKIoNJlMLtve6XQ0Ho/XP6ANwbmZQM0wBbM8YgZsIKZglsfbTAC1wdtMAOkRMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQM9QeV2SFVPGCJsC1YlEczHFkhlrjiqyYI2aoNa7IijlihlpjURzMETPUGldkxRwxQ61xRVbMcaVZALXBlWYBpEfMAKxVWV9y5kuzANamzC85c2QGYG3K/JIzMQOwNmV+yZmYAVibMr/kTMwArE2ZX3ImZgDWpswvOfOlWQC1wZdmAaRHzACkQMwApEDMAKRAzACkQMwApEDMAKSQJmasnYima/rvQIpLALF2IpqO34EkZwAURaHJZHLZ9k6no/F4vLZxAFVpyu9A+jMAWDsRTcfvQJKYsXYimo7fgSQxY+1ENB2/A0lixtqJaDp+B5J8AACgGdJ/AAAAxAxACsQMQArEDEAKVz2dyfY5SVf8hCAivmvlIwKAY7hqzCLiBkmy/W5JX5P0QUmW1JV0Q+mjA4AFLfo288ci4r0RcS4izkbE+yT9VJkDA4BlLBqz87a7tq+z3bLdlXS+zIEBwDIWjdnPSLpL0uOzP2+ZbQOQTF2vi7bQ9cwiYizpzeUOBUDV6nxdtIWOzGx/v+1/tP2l2e3bbN9f7tAArFu/378QsrnpdKp+v1/RiBa36NvMP5N0n6RnJCki/l3SW8saFIBq1Pm6aIvGrB0RD1+y7dlVDwZAtep8XbRFY/aE7Vs0+wKt7TslPVbaqABUos7XRVs0Zr8i6U8lvcL2I5J+TdI9pY0KQCXqfF20I69nZrsl6c6I+Ljt50tqRcS5qz2G65kBKMM1Xc8sIvYk3Tv7+emjQgYAVVj0beY/2H6n7Zttv3D+p9SRAcASFl0E+Be1P/n/jku2v2y1wwGA41k0Zq/Ufsh+RPtRe0jS+8saFAAsa9GY/aWks5IemN1+22zbXWUMCgCWtWjMbo2IVx24/SnbXyhjQABwHIt+APB526+Z37B9u6TPlDMkAFjeokdmt0t6u+35CVpbkr5s+4uSIiJuK2V0ALCgRWP246WOAgCu0aLXM5uUPRAAuBYsNQcgBWIGIAViBiAFYgYgBWIGIAViBiAFYgYgBWIGIAViBiCFymNW16XgAV67m2XRczNLUeel4NFsvHY3z5GrMx3HoqszFUWhyeTy0z47nY7G4/HKxwWsCq/dalzT6kxlqvNS8Gg2Xrubp9KY1XkpeDQbr93NU2nM6rwUPJqN1+7mqTRmdV4KHs3Ga3fzVPoBAAAsY2M/AACAVSFmAFIgZgBSIGYAUiBmAFIgZgBSIGYAUiBmAFIgZgBSIGYAUiBmAFIgZgBSIGYAUiBmAFIgZgBSIGYAUiBmAFIgZigdi+ViHSpdBBj5sVgu1oUjM5Sq3+9fCNncdDpVv9+vaETL48iyHjgyQ6nqvlguR5b1wZEZSlX3xXIzHFk2BTFDqeq+WG7djyybhJihVHVfLLfuR5ZNQsxQum63q/F4rL29PY3H49qETKr/kWWTEDPgKup+ZNkkjoiVP+n29nbs7Oys/HkBNJvt0xGxfdg+jswApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRAzACkQMwApEDMAKRQecxGo5GKolCr1VJRFBqNRlUPCUANnajyLx+NRur1eppOp5KkyWSiXq8nSSzlBWAplR6Z9fv9CyGbm06n6vf7FY0IQF1VGrPd3d2ltgPAlVQas62traW2A8CVVBqzwWCgdrt90bZ2u63BYFDRiADUVaUx63a7Gg6H6nQ6sq1Op6PhcMjkP4ClOSJW/qTb29uxs7Oz8ucF0Gy2T0fE9mH7Kv+eGQCsAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxA5ACMQOQAjEDkAIxQ+lGo5GKolCr1VJRFBqNRlUPCQlVHjNe6LmNRiP1ej1NJhNFhCaTiXq9Hv87Y+UcESt/0u3t7djZ2TnyfvMX+nQ6vbCt3W5rOByq2+2ufFxYv6IoNJlMLtve6XQ0Ho/XPyDUmu3TEbF96L4qY8YLPb9Wq6XDXmO2tbe3V8GIUGdXi1mlbzN3d3eX2o762draWmo7cFyVxowXen6DwUDtdvuibe12W4PBoKIRIatKY3bHHXcstR310+12NRwO1el0ZFudToc5UZSCOTMAtcGcGYD0mDMDkEKlMWNyGMCqVBozJocBrEqlHwAAwDI29gMAAFgVYgYgBWIGIAViBiAFYgYgBWIGIAViBiAFYgYghVK+NGv765IuvxwGAFybTkS8+LAdpcQMANaNt5kAUiBmAFIgZiiN7RfYfkfV40AzEDOU6QWSLouZ7esqGAuSI2Yo0+9LusX2v9n+nO1P2f6wpC/aLmx/aX5H2++0/Tuzn2+x/Unbp20/ZPsVFY0fNXKi6gEgtd+U9AMR8Wrbb5D0idntM7aLqzxuKOmeiPgP27dLeq+kHy17sKg3YoZ1ejgizlztDrZPSnqtpAdtzzc/t+yBof6IGdbp6QM/P6uLpzmeN/vPlqSnIuLVaxsVUmDODGU6J+mGK+x7XNL32H6R7edKepMkRcRZSWdsv0WSvO9Vaxktao0jM5QmIr5h+zOzif5vaT9g833P2H63pM9KOiPpKwce2pX0Ptv3S3qOpI9K+sL6Ro464nQmACnwNhNACsQMQArEDEAKxAxACsQMQArEDEAKxAxACsQMQAr/D6H6e01Soz6bAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "168.82818137997396\n",
      "0.274979896160895\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387, 177.19423527363867], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174, 168.82818137997396], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 222.77\n",
      "Coefficient of determination: 0.04\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "222.7670534323248\n",
      "0.04334341049418189\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387, 177.19423527363867], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174, 168.82818137997396], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276, 222.7670534323248], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 245.52\n",
      "Coefficient of determination: -0.05\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "245.51916763747067\n",
      "-0.05436385655531506\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387, 177.19423527363867], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174, 168.82818137997396], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276, 222.7670534323248], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353, 245.51916763747067], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208]})\n",
      "Mean squared error: 177.34\n",
      "Coefficient of determination: 0.24\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "177.3424669349747\n",
      "0.2384159283046693\n",
      "defaultdict(<class 'list'>, {'extratrees': [181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], 'rf': [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], 'adaboost': [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], 'linear': [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387, 177.19423527363867], 'gboost': [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174, 168.82818137997396], 'lasso': [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276, 222.7670534323248], 'elastic': [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353, 245.51916763747067], 'ridge': [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208, 177.3424669349747]})\n"
     ]
    }
   ],
   "source": [
    "fold=0\n",
    "mse = defaultdict(list)\n",
    "r2 = defaultdict(list)\n",
    "\n",
    "kf = KFold(n_splits=5, shuffle=True, random_state=22)\n",
    "for train_index, test_index in kf.split(xa):\n",
    "    print('fold='+str(fold))\n",
    "    print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n",
    "    X_train, X_test = xa[train_index], xa[test_index]\n",
    "    y_train, y_test = ya[train_index], ya[test_index]\n",
    "    for key in model_dict.keys():\n",
    "        tmp_mse, tmp_r2 = model_eval(model_dict[key], key, X_train, X_test, y_train, y_test)\n",
    "        print(tmp_mse)\n",
    "        print(tmp_r2)\n",
    "        mse[key].append(tmp_mse)\n",
    "        r2[key].append(tmp_r2)\n",
    "        print(mse)\n",
    "    fold+=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[181.57926666666668,\n",
       " 147.20063809523808,\n",
       " 126.96831000000002,\n",
       " 139.288685,\n",
       " 125.74522999999999]"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse['extratrees']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "extratrees\n",
      "MSE= 144.15642595238097+/-20.33634481939401\n",
      "Rsq= 0.4602244343474151+/-0.0644549030092863\n",
      "rf\n",
      "MSE= 163.45619214285716+/-29.14620115646878\n",
      "Rsq= 0.3884234315557842+/-0.09427208882796283\n",
      "adaboost\n",
      "MSE= 177.09308857908877+/-56.327230773645255\n",
      "Rsq= 0.33436540492366484+/-0.19968270902001556\n",
      "linear\n",
      "MSE= 164.81214065805557+/-35.42093054824064\n",
      "Rsq= 0.3760907837125139+/-0.15007076454870877\n",
      "gboost\n",
      "MSE= 206.97070544440777+/-48.53131732509255\n",
      "Rsq= 0.2266119693234055+/-0.16788327082401505\n",
      "lasso\n",
      "MSE= 193.6649772808732+/-42.89645285428794\n",
      "Rsq= 0.2656031794728574+/-0.1898046965955696\n",
      "elastic\n",
      "MSE= 198.31495379204023+/-33.8066899575071\n",
      "Rsq= 0.24544678473919412+/-0.18157725202546382\n",
      "ridge\n",
      "MSE= 164.8865511248926+/-35.461335031175615\n",
      "Rsq= 0.37580753764794556+/-0.15022364985088596\n"
     ]
    }
   ],
   "source": [
    "mse_means = []\n",
    "r2_means = []\n",
    "for key in mse.keys():\n",
    "    print(key)\n",
    "    print('MSE= '+ str(np.mean(mse[key])) +'+/-' + str(np.std(mse[key])))\n",
    "    mse_means.append(np.mean(mse[key]))\n",
    "    print('Rsq= '+ str(np.mean(r2[key])) +'+/-' + str(np.std(r2[key])) )\n",
    "    r2_means.append(np.mean(r2[key]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(dict_values([[181.57926666666668, 147.20063809523808, 126.96831000000002, 139.288685, 125.74522999999999], [213.82110476190476, 179.03508095238095, 138.25755999999998, 141.83390000000003, 144.33331500000003], [273.61457507038944, 176.63408622874763, 97.48332095430726, 174.95424023215864, 162.7792204098408], [186.91075006684227, 204.54883345327366, 102.22373414548458, 153.1831503510387, 177.19423527363867], [197.68845098928438, 300.13386592362116, 200.07112864509745, 168.13190028406174, 168.82818137997396], [204.33958899018347, 248.71431006040703, 127.36766089427768, 165.13627302717276, 222.7670534323248], [200.5773760754689, 215.58669117955304, 143.0849927123351, 186.80654135537353, 245.51916763747067], [187.14313333525595, 204.5544289216952, 102.22809434741627, 153.1646320851208, 177.3424669349747]]),\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array(mse.values())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [],
   "source": [
    "### get numpy array from values\n",
    "#y = np.zeros(len(mse))\n",
    "mse_arr = np.zeros((len(mse), 5))\n",
    "i = 0\n",
    "for key, values in mse.items():\n",
    "    #y[i] = key\n",
    "    mse_arr[i, :] = values\n",
    "    i += 1\n",
    "    \n",
    "r2_arr = np.zeros((len(r2), 5))\n",
    "i = 0\n",
    "for key, values in r2.items():\n",
    "    #y[i] = key\n",
    "    r2_arr[i, :] = values\n",
    "    i += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[181.57926667, 147.2006381 , 126.96831   , 139.288685  ,\n",
       "        125.74523   ],\n",
       "       [213.82110476, 179.03508095, 138.25756   , 141.8339    ,\n",
       "        144.333315  ],\n",
       "       [273.61457507, 176.63408623,  97.48332095, 174.95424023,\n",
       "        162.77922041],\n",
       "       [186.91075007, 204.54883345, 102.22373415, 153.18315035,\n",
       "        177.19423527],\n",
       "       [197.68845099, 300.13386592, 200.07112865, 168.13190028,\n",
       "        168.82818138],\n",
       "       [204.33958899, 248.71431006, 127.36766089, 165.13627303,\n",
       "        222.76705343],\n",
       "       [200.57737608, 215.58669118, 143.08499271, 186.80654136,\n",
       "        245.51916764],\n",
       "       [187.14313334, 204.55442892, 102.22809435, 153.16463209,\n",
       "        177.34246693]])"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [],
   "source": [
    "mse_hm = np.c_[mse_arr, mse_means]\n",
    "r2_hm = np.c_[r2_arr, r2_means]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['figure.figsize'] = 7,7\n",
    "sns.heatmap(mse_hm, cmap='viridis',\n",
    "            yticklabels=mse.keys(), \n",
    "            xticklabels=['fold 1','fold 2', 'fold 3' , 'fold 4', 'fold 5', 'average'])\n",
    "plt.savefig('MSE_hm.svg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 258,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['figure.figsize'] = 7,7\n",
    "sns.heatmap(r2_hm, cmap='viridis',\n",
    "            yticklabels=mse.keys(), annot=True,\n",
    "            xticklabels=['fold 1','fold 2', 'fold 3' , 'fold 4', 'fold 5', 'average'])\n",
    "plt.title('Regression R squared values')\n",
    "plt.savefig('r2heatmap.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x12c1df80730>"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAATkAAAEvCAYAAAA+brZ3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAWtklEQVR4nO3dfbBcdX3H8feHC/GBICLIU26UWIM0oIWSBmewgjzUoA6xU6iBWsEB79iaomN9CGMHBWtHxWKZadoxaFps1YjUaa+aGhBFwQreqwIlgZRLpOQSNPIgIE8h7Ld/7ELPWfbevXt2zz27v/t5OWfY87B7vgfMN9/fOb/f+SkiMDNL1W5VB2BmViYnOTNLmpOcmSXNSc7MkuYkZ2ZJc5Izs6TtXvYJdpx43ED1Udnz2IOqDqFju73u9VWH0LHa9T+oOoTO7KaqI+jYnh/7SqGgn7pva6E/s3vs94q+/JfkSs7MklZ6JWdmA6b2dNUR9JSTnJnlRa3qCHrKSc7M8mpOcmaWsHAlZ2ZJcyVnZklzJWdmSfPTVTNLmis5M0ua78mZWcr8dNXM0uZKzsySNtcqOUmHASuABUAA24HRiLit5NjMrAqJPV2d9i0kkj4MrAcE/BgYa3z+iqTV5YdnZrMuasWWPtWukjsHODwinspulHQJsAn4ZFmBmVlFErsn1+59cjXg4BbbD2rsa0nSiKRxSeNfvOfebuIzs9k2xyq59wHXSLoD2NbY9jLglcCqqb4UEWuBtTB4bwY2s7RMm+Qi4tuSDgWWUX/wIGASGIuItO5OmlldYs3Vtk9Xo94z8IZZiMXM+kCZ9Yuk5cClwBDw+Yh4zn19SX8MfIx6b46bI+LMbs7pfnJmllfS/TVJQ8Aa4GQaLUJJoxGxOXPMYuB84NiIeFDS/t2e10nOzPLKa64uAyYiYiuApPXU++BuzhzzLmBNRDwIEBE7uj2pZ+sys7yCT1ezvSoay0jTLy/g/x9gQr2aW9B0zKHAoZJ+KOmGRvO2K67kzCyv4IiHbK+KKbSal7W598XuwGLgeGAYuE7SERHx60JB4SRnZs3K6/M2CSzMrA9THybafMwNjQEIP5e0hXrSGyt6UjdXzSyvViu2tDcGLJa0SNI8YCUw2nTMvwNvAJC0H/Xm69ZuLseVnJnllVTJRcQuSauAjdS7kKyLiE2SLgLGI2K0se8PJG0GngY+GBH3d3NeJzkzyyuxM3BEbAA2NG27IPM5gPc3lp5wkjOzvLk24sHM5pbURmw6yZlZnis5M0taH782qYjSk9zNtx5Y9il669bgsJfdV3UUHdnvVYP3zr54cmfVIXRk5+1dPeCrxJ5Fv+hKLm2DluDMei6xSs6dgc0saa7kzCzPzVUzS1pizVUnOTPLcyVnZklzkjOzpLm5amZJcyVnZklzJWdmSXMlZ2ZJcyVnZklzJWdmSXOSM7OkRfMsgYPNSc7M8lzJmVnSEktyhV+1JOmdvQzEzPpE1Iotfaqb98ldONUOSSOSxiWNf+vxO7s4hZnNuvIml67EtM1VSbdMtQs4YKrvRcRaYC3A1Qe8La27mGY2UNrdkzsAeCPwYNN2Af9VSkRmVq059nT1m8D8iLipeYeka0uJyMyq1cdNzyKmvScXEedExPVT7DuznJDMrFIl3pOTtFzSFkkTkla32H+2pF9JuqmxnNvt5bgLiZnllfSkVNIQsAY4GZgExiSNRsTmpkO/GhGrenVeJzkzy4laaffklgETEbEVQNJ6YAXQnOR6ylMSmlleec3VBcC2zPpkY1uzP5J0i6QrJS3s9nKc5Mwsr2Bn4Gz/2MYy0vTLanW2pvVvAIdExGuA7wCXd3s5bq6aWV7B5mq2f+wUJoFsZTYMbG/6jfszq5cBnyoUTIYrOTPLK6+5OgYslrRI0jxgJTCaPUDSQZnVU4Hbur0cV3JmlldSP7mI2CVpFbARGALWRcQmSRcB4xExCpwn6VRgF/AAcHa353WSM7O8Ekc8RMQGYEPTtgsyn88Hzu/lOZ3kzCwvsREPTnJmlldeP7lKOMmZWV4fvxuuiNKT3CXzHi77FD31hT0G7z/w7m8cvPeX3vOJP6s6hI488cReVYfQsZcU/aIrOTNLWSR2T8795Mwsaa7kzCzPzVUzS5ofPJhZ0lzJmVnSEnvw4CRnZnmu5Mwsab4nZ2ZJcyVnZilLrTOwk5yZ5bmSM7OkOcmZWdL84MHMkuZKzsxSVuLk0pVo+xYSSYdJOlHS/Kbty8sLy8wqU4tiS5+aNslJOg/4D+AvgFslrcjs/psyAzOzipQ3JWEl2jVX3wUcHRG/kXQIcKWkQyLiUlrPhg1AY+bsEYDDX3w4C+cvnOpQM+s3fVyVFdEuyQ1FxG8AIuIuScdTT3QvZ5okl51J+5SFp6T1b8wsdYkluXb35H4h6chnVhoJ7y3AfsCrywzMzKwX2lVy76A+k/WzImIX8A5JnystKjOrTJQ4uXQVpk1yETE5zb4f9j4cM6vcHGuumtlcU2IXEknLJW2RNCFp9TTHnSYpJC3t9nLcGdjMcsrqDCxpCFgDnAxMAmOSRiNic9NxewHnATf24ryu5Mwsr7xKbhkwERFbI2InsB5Y0eK4jwOfBp7oxeU4yZlZXq3g0t4CYFtmfbKx7VmSjgIWRsQ3u7mELDdXzSynaHM1OwigYW2jz+yzh7Q6Xeb7uwGfBc4uFMAUnOTMLK9gkssOApjCJJAd/jQMbM+s7wUcAVwrCeBAYFTSqRExXigonOTMrFl5w1DHgMWSFgH3ACuBM5/ZGREPUR9oAICka4EPdJPgwEnOzJqU9XQ1InZJWgVsBIaAdRGxSdJFwHhEjJZxXic5M8sr8YUiEbEB2NC07YIpjj2+F+d0kjOznNRemukkZ2Z5/ftquEJKT3KXHfxk2afoqVvvPKDqEDp2/BOPVh1Cx1569K72B/WRH161T9UhdOyIgt9LbB4bV3Jm1sRJzsxSllol52FdZpY0V3JmlpdYJeckZ2Y5qTVXneTMLMdJzsyS5iRnZmmLKWcbHUhOcmaW40rOzJIWNVdyZpYwV3JmlrTwPTkzS5krOTNL2py7JydpGRARMSZpCbAcuL3xhk8zS0yk9c7M6ZOcpI8CpwC7S7oaOAa4Flgt6aiI+ET5IZrZbJprldxpwJHA84BfAMMR8bCki4EbASc5s8SkluTavWppV0Q8HRGPAXdGxMMAEfE407yrQNKIpHFJ41/asX2qw8ysD0UUW/pVu0pup6QXNpLc0c9slLQ30yS57CSzk8ec0MeXb2bNUqvk2iW510fEkwARuQfLewBnlRaVmVmPTJvknklwLbbfB9xXSkRmVil3BjazpLkzsJklrZZYJeeJbMwsJ0KFlpmQtFzSFkkTkla32P9uSf8t6SZJ1zcGIHTFSc7McqKmQks7koaANdQHGCwBzmiRxL4cEa+OiCOBTwOXdHs9TnJmllNiP7llwEREbI2IncB6YEX+3PW+uA17Al13QfM9OTPLKbGf3AJgW2Z9kvpQ0RxJ7wHeD8wDTuj2pK7kzCynFiq0ZEc6NZaRpp9ulT2fU6lFxJqI+C3gw8BfdXs9ruTMLKdoP7nsSKcpTAILM+vDwHTjPtcD/1gomAxXcmaWU+I9uTFgsaRFkuYBK4HR7AGSFmdW3wzc0e31uJIzs5yy+slFxC5Jq4CNwBCwLiI2SboIGI+IUWCVpJOAp4AH6cHwUSc5M8spc1hX42W7G5q2XZD5/N5en9NJzsxy+vm1SUWUnuQeeeD5ZZ+ip9704HVVh9CxzSd/sOoQOvbCFw3Wn6R9h3ZWHcKsSW1Ylys5M8vxW0jMLGmpVXLuQmJmSXMlZ2Y5g3W3tD0nOTPLSa256iRnZjl+8GBmSUvs7edOcmaWFy1fFjK4nOTMLKeW2JMHJzkzy6m5kjOzlLm5amZJ84MHM0uaKzkzS1pqlVzHY1clfbGMQMysP9QKLv1q2kpO0mjzJuANkl4MEBGnlhWYmVVjrjVXh4HNwOepj9sVsBT425LjMrOKlDftajXaNVeXAj8BPgI8FBHXAo9HxPcj4vtTfSk7/+IVD93du2jNrHQ1VGjpV9NWchFRAz4r6WuNf/6y3Xca33t2/sXbFr8psf7TZmlL7Q/sjJ6uRsQkcLqkNwMPlxuSmVnvdNSFJCK+BXyrpFjMrA/085PSItxPzsxyaurf+2tFOMmZWc6cvCdnZnNHas1Vz9ZlZjk1FVtmQtJySVskTUha3WL/+yVtlnSLpGskvbzb63GSM7OcsvrJSRoC1gCnAEuAMyQtaTrsZ8DSiHgNcCXw6W6vx0nOzHKi4DIDy4CJiNgaETuB9cCK3LkjvhcRjzVWb6A+6qorvidnZjklDutaAGzLrE8Cx0xz/DnAf3Z7Uic5M8sp+uBB0ggwktm0tjH66dlDWnytZREo6e3Uh5UeVzCcZznJmVlO0S4k2eGcU5gEFmbWh4HtzQdJOon6ePnjIuLJguE8y0nOzHJKbK6OAYslLQLuAVYCZ2YPkHQU8DlgeUTs6MVJneTMLKesfnIRsUvSKmAjMASsi4hNki4CxiNiFLgYmA98TfWRF3d3+95KJzkzyymzM3BEbAA2NG27IPP5pF6fs/Qk9+jj88o+RU/9ycGvrTqEji289MSqQ+jYQ399RdUhdOTC3Z+oOoSObWh/SEuR1tBVV3JmlpfasC4nOTPLcZIzs6Sl9hYSD+sys6S5kjOznNRm63KSM7Mc35Mzs6Q5yZlZ0lJ78OAkZ2Y5vidnZklzc9XMkubmqpklrZZYmnOSM7McN1fNLGlp1XEdJjlJr6M+486tEXFVOSGZWZVSq+SmHbsq6ceZz+8C/h7YC/hoq4lhzWzwlTm5dBXaVXJ7ZD6PACdHxK8kfYb6nIifLC0yM6tEag8e2r2FZDdJ+0jaF1BE/AogIh4Fdk31JUkjksYljX/90bt6F62Zla7EyaUr0a6S2xv4CfX5EkPSgRHxC0nzaT2HIpCfmmx8+K39fP1m1iS1e3LTJrmIOGSKXTXgD3sejZlVLrXmaqEuJBHxGPDzHsdiZtZz7idnZjlp1XFOcmbWZE7dkzOzucf35MwsaWmlOM/WZWZNagWXmZC0XNIWSROtRk1Jer2kn0raJem07q/GSc7MmkTB/7UjaQhYA5wCLAHOkLSk6bC7gbOBL/fqetxcNbOcEh88LAMmImIrgKT1wApg8zMHRMRdjX09C8NJzsxySnzwsADYllmfBI4p62TPcHPVzHKKjl3NjllvLCNNP91qKGjpzzlcyZlZTtFKLjtmfQqTwMLM+jCwvdDJOuBKzsxySny6OgYslrRI0jxgJTDa2+ify0nOzHLKeroaEbuAVcBG4DbgiojYJOkiSacCSPo9SZPA6cDnJG3q9npKb64+b4+nyz5FT5385PyqQ+jctq1VR9CxrXfsW3UIHbn5idurDmHWlDmsKyI2ABuatl2Q+TxGvRnbM74nZ2Y5M6nKBomTnJnleIC+mSWtFmlVcn7wYGZJcyVnZjlp1XFOcmbWxO+TM7Ok+emqmSXNT1fNLGlurppZ0txcNbOkublqZkmLxDoDO8mZWY7vyZlZ0lJrrk47rEvSMZJe1Pj8AkkXSvqGpE9J2nt2QjSz2VTW++Sq0m7s6jrgscbnS4G9gU81tv1TiXGZWUVqRKGlX7Vrru7WeJsnwNKI+N3G5+sl3VRiXGZWkdQePLSr5G6V9M7G55slLQWQdCjw1FRfys7ac+Uj/9ujUM1sNpQ4x0Ml2iW5c4HjJN1JfcbrH0naClzW2NdSRKyNiKURsfS0vV7eu2jNrHSp3ZObtrkaEQ8BZ0vaC3hF4/jJiPjlbARnZrOvn++vFTGjLiQR8Qhwc8mxmJn1nPvJmVlOag8enOTMLGdONlfNbO7o54cIRTjJmVlOarN1OcmZWU5aKc5JzsyapHZPzvOumllOmWNXJS2XtEXShKTVLfY/T9JXG/tvlHRIt9fjJGdmORFRaGlH0hCwBjiF+giqMyQtaTrsHODBiHgl8FnqLwTpipOcmeWUWMktAyYiYmtE7ATWAyuajlkBXN74fCVwoiR1cz1OcmaWU3TsavbFHI1lpOmnFwDbMuuTjW0tj2m8AekhYN9urscPHswsp+iIh4hYC6yd5pBWFVnzyWZyTEec5Mwsp8Snq5PAwsz6MLB9imMmJe1O/UW9D3Rz0tKT3D77P1r2KXpq/7v2rDqEjg298ayqQ+jY4de+r+oQOnLZVa+uOoRZU+LY1TFgsaRFwD3ASuDMpmNGgbOAHwGnAd+NLgNyJWdmOWVVchGxS9IqYCMwBKyLiE2SLgLGI2IU+ALwL5ImqFdwK7s9r5OcmeWUOXY1IjYAG5q2XZD5/ARwei/P6SRnZjmpjV11FxIzS5orOTPL8auWzCxpqTVXneTMLMeVnJklzZWcmSXNlZyZJc2VnJklzZWcmSUtolZ1CD3lJGdmOanN8eAkZ2Y5Jb6FpBLTDuuSdJ6khdMdY2ZpKXMimyq0G7v6ceBGSddJ+nNJL52NoMysOmVNZFOVdkluK/W3d34cOBrYLOnbks6StFfp0ZnZrKtFFFr6VbskFxFRi4irIuIc4GDgH4Dl1BNgS9kJLb60o/ntxmbWz4pOZNOv2j14yE0qERFPUX898aikF0z1peyEFpPHnNC/V29mz9HPTc8i2iW5t021IyIe73EsZtYH+vkhQhHTJrmI+J/ZCsTM+kNqlZzfDGxmSXNnYDPL6ecnpUU4yZlZTmrNVSc5M8uZUw8ezGzucSVnZknzPTkzS1o/j14owl1IzCynirGrkl4i6WpJdzT+uc8Ux31b0q8lfXOmv+0kZ2Y5Fb2FZDVwTUQsBq5prLdyMfCnnfywk5yZ5VQ0QH8FcHnj8+XAW1vGFnEN8EgnP+x7cmaWU9HT1QMi4t7G+e+VtH+vfthJzsxyiiY5SSPASGbT2sYbiZ7Z/x3gwBZf/UihE86Qk5yZ5RSt47KvWJti/0lT7ZP0S0kHNaq4g4AdBcN47m8Pcsc/SSPZvyn63aDFC4MX86DFC4MZc69Juhi4PyI+KWk18JKI+NAUxx4PfCAi3jKj3x7wJDceEUurjmOmBi1eGLyYBy1eGMyYe03SvsAVwMuAu4HTI+IBSUuBd0fEuY3jrgMOA+YD9wPnRMTG6X7bzVUzq1xE3A+c2GL7OHBuZv33O/1tdyExs6QNepIbtPsYgxYvDF7MgxYvDGbMA2Og78mZmbUz6JWcmdm0BjLJSVouaYukicbj5r4maZ2kHZJurTqWmZC0UNL3JN0maZOk91YdUzuSni/px5JubsR8YdUxzYSkIUk/62TAuXVm4JKcpCFgDXAKsAQ4Q9KSaqNq65+pT8g9KHYBfxkRvw28FnjPAPw7fhI4ISJ+BzgSWC7ptRXHNBPvBW6rOoiUDVySA5YBExGxNSJ2AuupD+7tWxHxA+CBquOYqYi4NyJ+2vj8CPU/hAuqjWp6UfebxuoejaWvbzhLGgbeDHy+6lhSNohJbgGwLbM+SZ//ARxkkg4BjgJurDaS9hpNv5uoDwm6OiL6Pea/Az4E1KoOJGWDmOTUYltf/409qCTNB/4NeF9EPFx1PO1ExNMRcSQwDCyTdETVMU1F0luAHRHxk6pjSd0gJrlJYGFmfRjYXlEsyZK0B/UE96WI+HrV8XQiIn4NXEt/3wc9FjhV0l3Ub7mcIOlfqw0pTYOY5MaAxZIWSZoHrARGK44pKZIEfAG4LSIuqTqemZD0Ukkvbnx+AXAScHu1UU0tIs6PiOGIOIT6/4e/GxFvrzisJA1ckouIXcAqYCP1G+JXRMSmaqOanqSvAD8CXiVpUtI5VcfUxrHUXzF9gqSbGsubqg6qjYOA70m6hfpfhFdHhLtlmEc8mFnaBq6SMzPrhJOcmSXNSc7MkuYkZ2ZJc5Izs6Q5yZlZ0pzkzCxpTnJmlrT/A+Dcu6elpdZ1AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 360x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(r2_arr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([181.57926667, 147.2006381 , 126.96831   , 139.288685  ,\n",
       "       125.74523   ])"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array(mse['extratrees'],\n",
    "        mse[''])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import tree\n",
    "import matplotlib\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import svm\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "import statsmodels.formula.api as smf\n",
    "import statsmodels.api as sm\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import seaborn as sns\n",
    "from sklearn import neighbors\n",
    "from sklearn import linear_model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train with onlylipid data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {},
   "outputs": [],
   "source": [
    "# lipidomics data\n",
    "dfl = df_dict['lipidomics']\n",
    "dfl_covid = dfl[dfl['COVID']==1]\n",
    "X = dfl_covid[dfl.columns[[is_int(x) for x in dfl.columns]]]\n",
    "y = dfl_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R^2 Training Score: 0.92 \n",
      "OOB Score: 0.43 \n",
      "R^2 Validation Score: 0.31\n"
     ]
    }
   ],
   "source": [
    "\n",
    "et = ExtraTreesRegressor(n_estimators = 2000,\n",
    "                           max_depth=6,\n",
    "                           n_jobs = -1,\n",
    "                           random_state = 42)\n",
    "et.fit(X_train, y_train)\n",
    "\n",
    "print('R^2 Training Score: {:.2f} \\nOOB Score: {:.2f} \\nR^2 Validation Score: {:.2f}'.format(rf.score(X_train, y_train), \n",
    "                                                                                             rf.oob_score_,\n",
    "                                                                                             rf.score(X_valid, y_valid)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 45)"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb0AAAGtCAYAAACC+KrfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAeMUlEQVR4nO3df5BdZZ3n8feXJmqLSINGNmm0YCi2ccpIstuD7GZqionOhFVKI6VTsswsu2NNtJQq3B1bibW1o44WONkR98ess1EUasUfrMbgMK6R4oeO1BZOxw4EJqZQYF06GRJGm8HZLgzhu3/cc2Mn6dt9u9Pn/ujn/aq6de957rn3fOtUbj59nvOc50RmIklSCU7pdgGSJHWKoSdJKoahJ0kqhqEnSSqGoSdJKoahJ0kqRu2hFxEDETEREXdUyzdHxGMRsbt6rK27BkmSAE7twDauBfYCL53RNpaZX+3AtiVJOqrWI72IOAd4E/DZOrcjSVI76j7S+xTwAeD049o/HhH/AbgLuC4znz3+gxGxGdgMcNppp/3TCy+8sOZSJUn9ZNeuXU9l5sqFfCbqmoYsIi4H3piZ74mIS4H3Z+blEbEK+FvgBcA24MeZ+dG5vmt0dDTHx8drqVOS1J8iYldmji7kM3V2b64H3hwRjwNfBjZExBcy80A2PAt8Hri4xhokSTqqttDLzC2ZeU5mngu8A7g7M3+3OtIjIgLYBDxUVw2SJM3UidGbx7s1IlYCAewG3t2FGiRJBepI6GXmvcC91esNndimJEnHc0YWSVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMWoPvYgYiIiJiLijWj4vIu6PiEci4isR8YK6a5AkCTpzpHctsHfG8ieAGzPzAuBnwDs7UIMkSfWGXkScA7wJ+Gy1HMAG4KvVKrcAm+qsQZKkprqP9D4FfAB4vlp+GTCVmc9Vy08AwzXXIEkSUGPoRcTlwMHM3DWzeZZVs8XnN0fEeESMHzp0qJYaJUllqfNIbz3w5oh4HPgyjW7NTwFDEXFqtc45wP7ZPpyZ2zJzNDNHV65cWWOZkqRS1BZ6mbklM8/JzHOBdwB3Z+ZVwD3A26rVrgZur6sGSZJm6sZ1eh8E/l1E/IjGOb6bulCDJKlAp86/ysnLzHuBe6vXjwIXd2K7kiTN5IwskqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRi1BZ6EfGiiPh+RDwQEQ9HxEeq9psj4rGI2F091tZVgyRJM51a43c/C2zIzJ9HxArgexHxv6r3xjLzqzVuW5KkE9QWepmZwM+rxRXVI+vaniRJ86n1nF5EDETEbuAgcGdm3l+99fGIeDAiboyIF7b47OaIGI+I8UOHDtVZpiSpELWGXmYeycy1wDnAxRHxGmALcCHwa8BZwAdbfHZbZo5m5ujKlSvrLFOSVIiOjN7MzCngXuCyzDyQDc8Cnwcu7kQNkiTVOXpzZUQMVa8HgTcAP4yIVVVbAJuAh+qqQZKkmeocvbkKuCUiBmiE622ZeUdE3B0RK4EAdgPvrrEGSZKOqnP05oPAulnaN9S1TUmS5uKMLJKkYtTZvSlJ0lE7JibZunMf+6emWT00yNjGETatG+5oDYaeJKl2OyYm2bJ9D9OHjwAwOTXNlu17ADoafIaeJC1jvXB0BbB1576jgdc0ffgIW3fuM/QkSSevV46uAPZPTS+ovS4OZJGkZWquo6tOWz00uKD2uhh6krRM9crRFcDYxhEGVwwc0za4YoCxjSMdrcPQk6RlqleOrqDRnXr9FWsYHhokgOGhQa6/Yo2jNyVJS2Ns48gx5/SgO0dXTZvWDXdlEM1Mhp4kLVPNgOmF0Zu9wtCTpGWsF46ueonn9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScVwwmlJUkfsmJjs+h0fDD1JUu12TEwec2+/yalptmzfA9DR4LN7U5JUu6079x1zM1uA6cNH2LpzX0frMPQkSbXbPzW9oPa6GHqSpNqtHhpcUHtdDD1JUu3GNo4wuGLgmLbBFQOMbRzpaB0OZJEk1a45WMXRm5J6Wi8MM9fysGndcNf/7Rh6klrqlWHm0lLxnJ6klnplmLm0VGoLvYh4UUR8PyIeiIiHI+IjVft5EXF/RDwSEV+JiBfUVYOkk9Mrw8ylpVLnkd6zwIbMvAhYC1wWEZcAnwBuzMwLgJ8B76yxBkknoVeGmUtLpbbQy4afV4srqkcCG4CvVu23AJvqqkHSyemVYebSUqn1nF5EDETEbuAgcCfwY2AqM5+rVnkCmPVseERsjojxiBg/dOhQnWVKamHTumGuv2INw0ODBDA8NMj1V6xxEIv6Vq2jNzPzCLA2IoaArwOvnm21Fp/dBmwDGB0dnXUdSfXrhWHm0lLpyOjNzJwC7gUuAYYiohm25wD7O1GDJEl1jt5cWR3hERGDwBuAvcA9wNuq1a4Gbq+rBkmSZqqze3MVcEtEDNAI19sy846I+BvgyxHxMWACuKnGGiRJOqq20MvMB4F1s7Q/Clxc13YlSWrFGVkkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScXoi9DbM/k062+4mx0Tk90uRZLUx/oi9AAmp6bZsn2PwSdJWrRTu13AQkwfPsLWnfvYtG6426VIUl/YMTHJ1p372D81zeqhQcY2jhT9f2hfhR7A/qnpbpegHuQPWzrRjolJtmzfw/ThI8Ave8yAYn8ffdO92bR6aLDbJajHNH/Yk1PTJHaFS01bd+47GnhNzR6zUvVV6A2uGGBs40i3y1CP8Yctza5Vz1jJPWZ9E3rDQ4Ncf8WaYg/J1Zo/bGl2rXrGSu4x64tzemuGz+C+6zZ0uwz1qNVDg0zOEnAl/7DVfb1wnnls48gx5/TAHrO+OdKTWhnbOMLgioFj2kr/Yau7euU886Z1w1x/xRqGhwYJ7DGDPjnSk+bS/AF3+69qqWmu88yd/ne5ad2wv4UZDD0tC/6w1Us8z9y77N6UpCXmAJLeZehJ0hLzPHPvsntTkpaY55l7l6EnSTXwPHNvsntTklQMQ0+SVIzaQi8iXhkR90TE3oh4OCKurdo/HBGTEbG7eryxrhokSZqpznN6zwF/mJk/iIjTgV0RcWf13o2Z+R9r3LYkSSeoLfQy8wBwoHr9TETsBTyrK0nqmo6c04uIc4F1wP1V0zUR8WBEfC4izmzxmc0RMR4R44cOHepEmZKkZS4ys/WbEX8BtFwhM9887wYiXgJ8B/h4Zm6PiLOBp6rv/WNgVWb+/lzfMTo6muPj4/NtSpJUkIjYlZmjC/nMfN2bzfNuVwD/CPhCtXwl8HgbBa0AvgbcmpnbATLzyRnvfwa4YyEFS5K0WHOGXmZ+ByAi/jgzf2PGW38REd+d67MREcBNwN7M/OSM9lXV+T6AtwIPLapySZIWqN2BLCsj4lcy81GAiDgPWDnPZ9YDvwfsiYjdVduHgCsjYi2N7s3HgXctuGpJkhah3dD7t8C9EfFotXwu84RVZn4PiFne+mbb1UmStITaCr3M/FZEXABcWDX9MDOfra8sSZKWXluXLETEi4Ex4JrMfAB4VURcXmtlkiQtsXav0/s88Avgn1XLTwAfq6UiSZJq0m7onZ+ZfwIcBsjMaWY/XydJUs9qN/R+ERGDVBeqR8T5gOf0JEl9pd3Rmx8GvgW8MiJupXE5wr+pqyhJkurQ7ujNb0fELuASGt2a12bmU7VWJknSEmt39OZdmfl3mfmXmXlHZj4VEXfVXVzTnsmnWX/D3eyYmOzUJiVJy9CcR3oR8SLgxcDLq7shNAevvBRYXXNtx5icmmbL9j0AbFrnHYok9bcdE5Ns3bmP/VPTrB4aZGzjiP+3dcB8R3rvAnbRuCh914zH7cCf1VvaiaYPH2Hrzn2d3qwkLakdE5Ns2b6Hyalpkl/+UW9vVv3mDL3M/E+ZeR7w/sz8lcw8r3pclJn/tUM1HmP/1HQ3NitJS2brzn1MHz5yTJt/1HdGu5csPB8RQ82FiDgzIt5TU01zWj002I3NStKSafXHu3/U16/d0PuDzJxqLmTmz4A/qKek1gZXDDC2caTTm5WkJdXqj3f/qK9fu6F3SnV/PAAiYgB4QT0lzW54aJDrr1jjiV5JfW9s4wiDKwaOafOP+s5o9+L0ncBtEfHnNGZleTeNi9U7Ys3wGdx33YZObU6SatX8493Rm50XmTn/ShGn0BjJ+Xoaly18G/hsZh6Z84NLZHR0NMfHxzuxKUlSn4iIXZk5upDPtDsjy/PAp6uHJEl9ab6L02/LzN+JiD1Uk03PlJmvra0ySZKW2HxHetdWz94wVpLU9+YMvcw8UD3/n86UI0laCKczW5j5ujefYZZuzabMfOmSVyRJaktzOrPm7C7OUTy/+Y70TgeIiI8Cfwv8DxqjN68CTq+9OklSS3NNZ9YMPY8Ej9XudXobM/N1M5Y/HRH3A39SQ02SpDbMN52ZR4InandGliMRcVVEDETEKRFxFdCRa/QkSbObbzozJ7Y+Ubuh9y+B3wGerB5vr9okSV0y33RmTmx9onYvTn8ceEu9pUiSFmK+6cxWDw0yOUvAlTyxdVuhFxH/mMZsLGdn5msi4rXAmzPzY7VWJ0ma06Z1wy3Pz41tHDnmnB44sXW73ZufAbYAhwEy80HgHXUVJUk6eZvWDXP9FWsYHhok8G410P7ozRdn5vdn3F0I4Lka6pGEw8y1dOY6EixRu6H3VEScT3WhekS8DThQW1VSwRxmLtWn3e7N9wL/HbgwIiaB99G4p56kJeYwc6k+8x7pVffSG83MN0TEacApmflM/aVJZXKYuVSfeY/0qnvpXVO9/gcDT6rXfBccS1q8drs374yI90fEKyPirOaj1sqkQs13wbGkxWs39H4feA/wHWB8xqOlKiDviYi9EfFwRFxbtZ8VEXdGxCPV85nzbXzP5NOsv+FudkxMtlmu1L8cZi7VJzJb3jnolytFDNIIvV+nMYLzr4A/z8yWJxkiYhWwKjN/EBGnA7uATcC/Bn6amTdExHXAmZn5wbm2/8JVF+Sqqz/F4IoBf/ySJAAiYldmji7kM+0e6d0CvBr4z8B/qV7fMtcHMvNAZv6gev0MsBcYpjGdWfOzt9AIwrY4gk2SdDLavU5vJDMvmrF8T0Q80O5GIuJcYB1wP42pzJp3ZD8QEa9o8ZnNwGaAgZeuPNruCDZJ0mK1e6Q3ERGXNBci4nXAfe18MCJeAnwNeF9m/n27hWXmtswczczRgRefcbTdEWySpMVq90jvdcC/ioifVMuvAvZGxB4gM/O1s30oIlbQCLxbM3N71fxkRKyqjvJWAQfbLdYRbJKkk9Fu6F220C+OxkSdNwF7M/OTM976BnA1cEP1fHs73zfs/IOSpJPU1ujNRX1xxK/TGOW5B3i+av4QjfN6t9E4WvwJ8PbM/Olc3zU6Oprj43NeISFJKsxiRm+2e6S3YJn5PSBavP36urYrSVIr7Q5kkSSp7xl6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGIYepKkYhh6kqRiGHqSpGL0RejtmXya9TfczY6JyW6XIknqY30RegCTU9Ns2b7H4JMkLVpttxaqw/ThI2zduc8byaoWOyYm2bpzH/unplntTYulZamvQg9g/9R0t0vQMrRjYpIt2/cwffgI8MueBcDgk5aRvunebFo9NNjtErQMbd2572jgNTV7FiQtH30VeoMrBhjbONLtMrQMtepBsGdBWl76JvSGhwa5/oo1djWpFq16EOxZkJaXvgi9NcNncN91Gww81WZs4wiDKwaOabNnQVp++m4gi1SH5h9Ujt6UljdDT6psWjdsyEnLXF90b0qStBQMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMQw9SVIxDD1JUjEMPUlSMWoLvYj4XEQcjIiHZrR9OCImI2J39XhjXduXJOl4dR7p3QxcNkv7jZm5tnp8s8btS5J0jNpCLzO/C/x0Kb5rz+TTrL/hbnZMTC7F10mSCtWNc3rXRMSDVffnma1WiojNETEeEeNH/t/TTE5Ns2X7HoNPkrRonQ69TwPnA2uBA8CftloxM7dl5mhmjg68+AwApg8fYevOfR0pVJK0/HQ09DLzycw8kpnPA58BLl7od+yfml76wiRJReho6EXEqhmLbwUearVuK6uHBpeuIElSUU6t64sj4kvApcDLI+IJ4I+ASyNiLZDA48C7FvKdgysGGNs4ssSVSpJKUVvoZeaVszTftNjvGx4aZGzjCJvWDZ9EVZKkktUWektpzfAZ3Hfdhm6XIUnqc05DJkkqhqEnSSpGX3RvSlI7dkxMsnXnPvZPTbPacQCahaEnaVnYMTHJlu17mD58BODoLE6Awaej7N6UtCxs3bnvaOA1OYuTjmfoSVoWWs3W5CxOmsnQk7QstJqtyVmcNJOhJ2lZGNs4wuCKgWPanMVJx3Mgi6RloTlYxdGbmouhJ2nZ2LRu2JDTnPqie9M7p0uSlkJfhB7gndMlSSetb0IPvOZGknRy+ir0wGtuJEmL13eh5zU3kqTF6qvQ85obSdLJ6JtLFrxzuiTpZPVF6HnndEnSUuir7k1Jkk6GoSdJKoahJ0kqhqEnSSqGoSdJKoahJ0kqhqEnSSqGoSdJKkZfhJ7305MkLYW+CD3wfnqSpJPXN6EH3k9PknRy+ir0wPvpSZIWr+9Cz/vpSZIWq69Cz/vpSZJORm2hFxGfi4iDEfHQjLazIuLOiHikej6z3e8bHhrk+ivWeD89SdKi1XmkdzNw2XFt1wF3ZeYFwF3V8rya99Mz8CRJJ6O20MvM7wI/Pa75LcAt1etbgE11bV+SpON1+pze2Zl5AKB6fkWrFSNic0SMR8T4oUOHOlagJGn56tmBLJm5LTNHM3N05cqV3S5HkrQMdDr0noyIVQDV88EOb1+SVLBOh943gKur11cDt3d4+5KkgtV5ycKXgP8NjETEExHxTuAG4Lci4hHgt6plSZI64tS6vjgzr2zx1uvr2qYkSXPp2YEskiQtNUNPklQMQ0+SVAxDT5JUDENPklQMQ0+SVIzaLlnQ8rdjYpKtO/exf2qa1UODjG0c8U4YknqaoadF2TExyZbte5g+fASAyalptmzfA2DwSepZdm9qUbbu3Hc08JqmDx9h6859XapIkuZn6GlR9k9NL6hdknqBoadFWT00uKB2SeoFhp4WZWzjCIMrBo5pG1wxwNjGkS5VJEnzcyCLFqU5WMXRm5L6iaGnRdu0btiQk9RX7N6UJBXD0JMkFcPQkyQVw9CTJBXD0JMkFcPQkyQVw9CTJBXD0JMkFcPQkyQVw9CTJBXD0JMkFcPQkyQVw9CTJBXD0JMkFcPQkyQVw9CTJBXD0JMkFcPQkyQVw9CTJBXj1G5sNCIeB54BjgDPZeZoN+qQJJWlK6FX+c3MfKqL25ckFcbuTUlSMboVegl8OyJ2RcTmLtUgSSpMt7o312fm/oh4BXBnRPwwM787c4UqDDcDvOpVr+pGjZKkZaYrR3qZub96Pgh8Hbh4lnW2ZeZoZo6uXLmy0yVKkpahjodeRJwWEac3XwO/DTzU6TokSeXpRvfm2cDXI6K5/S9m5re6UIckqTAdD73MfBS4qNPblSTJSxYkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScUw9CRJxTD0JEnFMPQkScXoSuhFxGURsS8ifhQR13WjBklSeToeehExAPwZ8C+AXwWujIhf7XQdkqTydONI72LgR5n5aGb+Avgy8JYu1CFJKsypXdjmMPB/Zyw/Abzu+JUiYjOwuVp8NiIe6kBtS+HlwFPdLmIB+qnefqoV+qtea61PP9XbT7UCjCz0A90IvZilLU9oyNwGbAOIiPHMHK27sKXQT7VCf9XbT7VCf9VrrfXpp3r7qVZo1LvQz3Sje/MJ4JUzls8B9nehDklSYboRen8NXBAR50XEC4B3AN/oQh2SpMJ0vHszM5+LiGuAncAA8LnMfHiej22rv7Il00+1Qn/V20+1Qn/Va6316ad6+6lWWES9kXnC6TRJkpYlZ2SRJBXD0JMkFaOnQ6/fpiuLiMcjYk9E7F7MUNq6RcTnIuLgzGseI+KsiLgzIh6pns/sZo1NLWr9cERMVvt3d0S8sZs1NkXEKyPinojYGxEPR8S1VXvP7ds5au3VffuiiPh+RDxQ1fuRqv28iLi/2rdfqQbF9WqtN0fEYzP27dpu19oUEQMRMRERd1TLPbdfZ5ql3gXv254NvT6eruw3M3Ntj17rcjNw2XFt1wF3ZeYFwF3Vci+4mRNrBbix2r9rM/ObHa6pleeAP8zMVwOXAO+t/q324r5tVSv05r59FtiQmRcBa4HLIuIS4BM06r0A+Bnwzi7W2NSqVoCxGft2d/dKPMG1wN4Zy724X2c6vl5Y4L7t2dDD6cqWXGZ+F/jpcc1vAW6pXt8CbOpoUS20qLUnZeaBzPxB9foZGj/KYXpw385Ra0/Khp9XiyuqRwIbgK9W7b2yb1vV2pMi4hzgTcBnq+WgB/dr0/H1LlYvh95s05X17I+zksC3I2JXNY1aPzg7Mw9A4z9E4BVdrmc+10TEg1X3Z9e7C48XEecC64D76fF9e1yt0KP7turS2g0cBO4EfgxMZeZz1So983/D8bVmZnPffrzatzdGxAu7WOJMnwI+ADxfLb+MHt2vlePrbVrQvu3l0GtrurIesz4z/wmNLtn3RsRvdLugZebTwPk0uo4OAH/a3XKOFREvAb4GvC8z/77b9cxlllp7dt9m5pHMXEtj9qaLgVfPtlpnq5rd8bVGxGuALcCFwK8BZwEf7GKJAETE5cDBzNw1s3mWVXtiv7aoFxaxb3s59PpuurLM3F89HwS+TuMH2uuejIhVANXzwS7X01JmPln9p/I88Bl6aP9GxAoaIXJrZm6vmnty385Way/v26bMnALupXEucigimpNr9Nz/DTNqvazqUs7MfBb4PL2xb9cDb46Ix2mcOtpA40iqV/frCfVGxBcWs297OfT6arqyiDgtIk5vvgZ+G+iHO0N8A7i6en01cHsXa5lTM0Aqb6VH9m91LuQmYG9mfnLGWz23b1vV2sP7dmVEDFWvB4E30DgPeQ/wtmq1Xtm3s9X6wxl/+ASNc2Rd37eZuSUzz8nMc2n833p3Zl5FD+5XaFnv7y5m33bjLgttWeR0Zd10NvD1xr7nVOCLmfmt7pZ0rIj4EnAp8PKIeAL4I+AG4LaIeCfwE+Dt3avwl1rUemk1JDmBx4F3da3AY60Hfg/YU53PAfgQvblvW9V6ZY/u21XALdVo7lOA2zLzjoj4G+DLEfExYIJGkHdbq1rvjoiVNLoPdwPv7maR8/ggvbdf53LrQvet05BJkorRy92bkiQtKUNPklQMQ0+SVAxDT5JUDENPklQMQ0/qARExFBHv6XYd0nJn6Em9YQg4IfSqa74kLRFDT+oNNwDnV/cE++to3PPuizQuIj83jr2v4Psj4sPV6/Mj4lvVJOd/FREXdql+qS/07IwsUmGuA16TmWsj4lLgL6vlx6q7IbSyDXh3Zj4SEa8D/huNeRQlzcLQk3rT9zPzsblWqO6U8M+B/1lNfwfQK7etkXqSoSf1pn+Y8fo5jj0V8aLq+RQa9z9b27GqpD7nOT2pNzwDnN7ivSeBV0TEy6qbZF4OUN0H77GIeDs0ZpqPiIs6Uq3UpzzSk3pAZv5dRNxXDViZphF0zfcOR8RHadzh/DHghzM+ehXw6Yj498AKGvcae6BzlUv9xbssSJKKYfemJKkYhp4kqRiGniSpGIaeJKkYhp4kqRiGniSpGIaeJKkY/x9oZuZ3C8r77gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(y_valid, rf.predict(X_valid))\n",
    "plt.xlabel(\"true\")\n",
    "plt.ylabel(\"predicted\")\n",
    "plt.xlim(0,45)\n",
    "plt.ylim(0,45)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 45)"
      ]
     },
     "execution_count": 246,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(y_train, et.predict(X_train))\n",
    "plt.xlabel(\"true\")\n",
    "plt.ylabel(\"predicted\")\n",
    "plt.xlim(0,45)\n",
    "plt.ylim(0,45)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'n_estimators': [200, 650, 1100, 1550, 2000], 'max_features': ['auto', 'sqrt', 'log2'], 'max_depth': [5, 31, 57, 83, 110, None], 'min_samples_split': [2, 5, 10], 'min_samples_leaf': [1, 2, 4], 'bootstrap': [True, False]}\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "# Number of trees in random forest\n",
    "n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 5)]\n",
    "# Number of features to consider at every split\n",
    "max_features = ['auto', 'sqrt', 'log2']\n",
    "# Maximum number of levels in tree\n",
    "max_depth = [int(x) for x in np.linspace(5, 110, num = 5)]\n",
    "max_depth.append(None)\n",
    "# Minimum number of samples required to split a node\n",
    "min_samples_split = [2, 5, 10]\n",
    "# Minimum number of samples required at each leaf node\n",
    "min_samples_leaf = [1, 2, 4]\n",
    "# Method of selecting samples for training each tree\n",
    "bootstrap = [True, False]\n",
    "# Create the random grid\n",
    "random_grid = {'n_estimators': n_estimators,\n",
    "               'max_features': max_features,\n",
    "               'max_depth': max_depth,\n",
    "               'min_samples_split': min_samples_split,\n",
    "               'min_samples_leaf': min_samples_leaf,\n",
    "               'bootstrap': bootstrap}\n",
    "print(random_grid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([  0,   7,   8,   9,  14,  21,  26,  27,  30,  31,  35,  42,  43,\n",
       "         46,  47,  48,  49,  51,  53,  60,  74,  78,  79,  81,  90,  91,\n",
       "         95,  97, 100, 101], dtype=int64),)"
      ]
     },
     "execution_count": 248,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.where(y==0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 249,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 4 folds for each of 100 candidates, totalling 400 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done  25 tasks      | elapsed:   24.3s\n",
      "[Parallel(n_jobs=-1)]: Done 146 tasks      | elapsed:  4.2min\n",
      "[Parallel(n_jobs=-1)]: Done 349 tasks      | elapsed:  9.9min\n",
      "[Parallel(n_jobs=-1)]: Done 400 out of 400 | elapsed: 11.0min finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RandomizedSearchCV(cv=4, error_score=nan,\n",
       "                   estimator=ExtraTreesRegressor(bootstrap=False, ccp_alpha=0.0,\n",
       "                                                 criterion='mse',\n",
       "                                                 max_depth=None,\n",
       "                                                 max_features='auto',\n",
       "                                                 max_leaf_nodes=None,\n",
       "                                                 max_samples=None,\n",
       "                                                 min_impurity_decrease=0.0,\n",
       "                                                 min_impurity_split=None,\n",
       "                                                 min_samples_leaf=1,\n",
       "                                                 min_samples_split=2,\n",
       "                                                 min_weight_fraction_leaf=0.0,\n",
       "                                                 n_estimators=100, n_jobs=None,\n",
       "                                                 oob_score=False...\n",
       "                   iid='deprecated', n_iter=100, n_jobs=-1,\n",
       "                   param_distributions={'bootstrap': [True, False],\n",
       "                                        'max_depth': [5, 31, 57, 83, 110, None],\n",
       "                                        'max_features': ['auto', 'sqrt',\n",
       "                                                         'log2'],\n",
       "                                        'min_samples_leaf': [1, 2, 4],\n",
       "                                        'min_samples_split': [2, 5, 10],\n",
       "                                        'n_estimators': [200, 650, 1100, 1550,\n",
       "                                                         2000]},\n",
       "                   pre_dispatch='2*n_jobs', random_state=42, refit=True,\n",
       "                   return_train_score=False, scoring=None, verbose=2)"
      ]
     },
     "execution_count": 249,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "et = ExtraTreesRegressor()\n",
    "et_randoml = RandomizedSearchCV(estimator = et, param_distributions = random_grid, \n",
    "                               n_iter = 100, cv = 4, verbose=2, random_state=42, n_jobs = -1)\n",
    "# Fit the random search model\n",
    "et_randoml.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 250,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'n_estimators': 200,\n",
       " 'min_samples_split': 2,\n",
       " 'min_samples_leaf': 2,\n",
       " 'max_features': 'auto',\n",
       " 'max_depth': 110,\n",
       " 'bootstrap': False}"
      ]
     },
     "execution_count": 250,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "et_randoml.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 11.5248 days.\n",
      "r2: 0.3842\n",
      "MSE = 175.28 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## evaluate base model\n",
    "base_model = ExtraTreesRegressor(n_estimators = 100, random_state = 42)\n",
    "base_model.fit(X_train, y_train)\n",
    "base_accuracy = evaluate(base_model, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 252,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 11.4946 days.\n",
      "r2: 0.3819\n",
      "MSE = 175.92 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## best random search model\n",
    "best_random_lip = et_randoml.best_estimator_\n",
    "random_accuracy = evaluate(best_random_lip, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 15.3956 days.\n",
      "r2: -0.0079\n",
      "MSE = 286.88 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dummy_model = DummyRegressor()\n",
    "dummy_model.fit(X_train, y_train)\n",
    "dummy_accuracy = evaluate(dummy_model, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train proteins only"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "metadata": {},
   "outputs": [],
   "source": [
    "# proteomics data\n",
    "dfp = df_dict['proteomics']\n",
    "dfp_covid = dfp[dfp['COVID']==1]\n",
    "X = dfp_covid[dfp.columns[[is_int(x) for x in dfp.columns]]]\n",
    "y = dfp_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 4 folds for each of 100 candidates, totalling 400 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done  25 tasks      | elapsed:    9.5s\n",
      "[Parallel(n_jobs=-1)]: Done 146 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done 349 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 400 out of 400 | elapsed:  3.2min finished\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'n_estimators': 650, 'min_samples_split': 2, 'min_samples_leaf': 2, 'max_features': 'auto', 'max_depth': 110, 'bootstrap': False}\n"
     ]
    }
   ],
   "source": [
    "et = ExtraTreesRegressor()\n",
    "et_randomp = RandomizedSearchCV(estimator = et, param_distributions = random_grid, \n",
    "                               n_iter = 100, cv = 4, verbose=2, random_state=42, n_jobs = -1)\n",
    "# Fit the random search model\n",
    "et_randomp.fit(X_train, y_train)\n",
    "print(et_randomp.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 11.7071 days.\n",
      "r2: 0.3026\n",
      "MSE = 198.51 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## evaluate base model\n",
    "base_model = ExtraTreesRegressor(n_estimators = 100, random_state = 42)\n",
    "base_model.fit(X_train, y_train)\n",
    "base_accuracy = evaluate(base_model, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 11.7674 days.\n",
      "r2: 0.3172\n",
      "MSE = 194.34 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## best random search model\n",
    "best_random_prot = et_randomp.best_estimator_\n",
    "random_accuracy = evaluate(best_random_prot, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train metabolites only"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 4 folds for each of 100 candidates, totalling 400 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done  25 tasks      | elapsed:    8.6s\n",
      "[Parallel(n_jobs=-1)]: Done 146 tasks      | elapsed:   57.2s\n",
      "[Parallel(n_jobs=-1)]: Done 349 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 400 out of 400 | elapsed:  2.9min finished\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'n_estimators': 1100, 'min_samples_split': 10, 'min_samples_leaf': 1, 'max_features': 'auto', 'max_depth': 83, 'bootstrap': False}\n"
     ]
    }
   ],
   "source": [
    "# proteomics data\n",
    "dfm = df_dict['metabolomics']\n",
    "dfm_covid = dfm[dfm['COVID']==1]\n",
    "X = dfm_covid[dfm.columns[[is_int(x) for x in dfm.columns]]]\n",
    "y = dfm_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)\n",
    "et = ExtraTreesRegressor()\n",
    "et_random_m = RandomizedSearchCV(estimator = et, param_distributions = random_grid, \n",
    "                               n_iter = 100, cv = 4, verbose=2, random_state=42, n_jobs = -1)\n",
    "# Fit the random search model\n",
    "et_random_m.fit(X_train, y_train)\n",
    "print(et_random.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 13.8962 days.\n",
      "r2: 0.0529\n",
      "MSE = 269.58 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## evaluate base model\n",
    "base_model = ExtraTreesRegressor(n_estimators = 100, random_state = 42)\n",
    "base_model.fit(X_train, y_train)\n",
    "base_accuracy = evaluate(base_model, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 14.1319 days.\n",
      "r2: 0.0349\n",
      "MSE = 274.68 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## best random search model\n",
    "best_random_met = et_random_m.best_estimator_\n",
    "random_accuracy = evaluate(best_random_met, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 15.3956 days.\n",
      "r2: -0.0079\n",
      "MSE = 286.88 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dummy_model = DummyRegressor()\n",
    "dummy_model.fit(X_train, y_train)\n",
    "dummy_accuracy = evaluate(dummy_model, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# train all data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape X train(81, 4029)\n",
      "shape X valid(21, 4029)\n",
      "Fitting 4 folds for each of 100 candidates, totalling 400 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done  25 tasks      | elapsed:   26.7s\n",
      "[Parallel(n_jobs=-1)]: Done 146 tasks      | elapsed:  4.7min\n",
      "[Parallel(n_jobs=-1)]: Done 349 tasks      | elapsed: 10.7min\n",
      "[Parallel(n_jobs=-1)]: Done 400 out of 400 | elapsed: 12.2min finished\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'n_estimators': 650, 'min_samples_split': 2, 'min_samples_leaf': 2, 'max_features': 'auto', 'max_depth': 110, 'bootstrap': False}\n"
     ]
    }
   ],
   "source": [
    "# combined \n",
    "dfc = df_dict['combined']\n",
    "dfc_covid = dfc[dfc['COVID']==1]\n",
    "X = dfc_covid[dfc.columns[[is_int(x) for x in dfc.columns]]]\n",
    "y = dfc_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)\n",
    "print('shape X train'+str(X_train.shape))\n",
    "print('shape X valid'+str(X_valid.shape))\n",
    "et = ExtraTreesRegressor()\n",
    "et_randomc = RandomizedSearchCV(estimator = et,\n",
    "                               param_distributions = random_grid,\n",
    "                               n_iter = 100, cv = 4, verbose=2,\n",
    "                               random_state=42,\n",
    "                               n_jobs = -1)\n",
    "et_randomc.fit(X_train, y_train)\n",
    "print(et_randomc.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 10.9357 days.\n",
      "r2: 0.4594\n",
      "MSE = 153.87 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## evaluate base model\n",
    "base_model = ExtraTreesRegressor(n_estimators = 100, random_state = 42)\n",
    "base_model.fit(X_train, y_train)\n",
    "base_accuracy = evaluate(base_model, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 259,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 11.4213 days.\n",
      "r2: 0.3971\n",
      "MSE = 171.62 days.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## best random search model\n",
    "best_random_c = et_randomc.best_estimator_\n",
    "random_accuracy = evaluate(best_random_c, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# make nice plots of the correlations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 299,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.3970508821308173\n"
     ]
    }
   ],
   "source": [
    "X = dfc_covid[dfc.columns[[is_int(x) for x in dfc.columns]]]\n",
    "y = dfc_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)\n",
    "ypred= best_random_c.predict(X_valid)\n",
    "plt.rcParams['figure.figsize'] =5,5\n",
    "sns.regplot(y_valid, ypred)\n",
    "plt.xlabel('True hospital free days')\n",
    "plt.ylabel('Predicted hospital free days')\n",
    "plt.title('Combined metabolites, lipids, and proteins')\n",
    "plt.show()\n",
    "print(r2_score(y_valid, ypred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUcAAAFNCAYAAACT0q0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOy9e3xc5XXv/V1zv8qSfAffZWywsYHEEAIJEIITwE5CEhKwaZOmbUJyTk9J2uYk7TkvSUnznqaHNqVpT15oUkp7YpsAoVAbkjgQ4hASbgFsfMFY8hVsy7Yka+4ze+/1/rFHmrEtySNpZjSyn+/no89o9sze+9Htp+d51m+tJaqKwWAwGE7EM9YDMBgMhkbEiKPBYDAMgBFHg8FgGAAjjgaDwTAARhwNBoNhAIw4GgwGwwAYcTScVYjIVhG5ZqzHYWh8xPgcDeMZEVHgPFXdNdZjMZxZmJmjoWEREd9Yj8Fw9mLE0VB3RGSPiPy5iGwTkW4RuV9EQiJyjYgcEJGviMgh4P7i+z8rIrtEpEtEHheRc4rHNxUv+ZqIJEXkluLxlSLyqoj0iMhzIrL0pHtfV/z86yLyQxH5NxFJFJfcy8re+xUReav42hsi8v56fY8MY48RR8NYcRvwQaANWAD8z+LxaUArMBv4nIhcC/wv4JPAdGAvsA5AVa8qnnORqsZU9UEReQfwL8DtwETgXuBxEQkOMo4PF6/XDDwO/COAiCwE/gi4VFXjxbHuqcpXbhgXGHE0jBX/qKr7VbUL+CawqnjcAb6mqjlVzeCK6L+o6m9VNQf8OfBuEZkzyHU/C9yrqs+rqq2qDwA54PJB3v+sqj6hqjbw78BFxeM2EAQWiYhfVfeoavvovmTDeMKIo2Gs2F/2+V7gnOLnR1Q1W/baOcXXAVDVJHAMOHeQ684G/rS4pO4RkR5gZtn1T+ZQ2edpICQivmKA54vA14FOEVnXt5w3nB0YcTSMFTPLPp8FvF38/GT7xNu4ggeAiERxl8tvDXLd/cA3VbW57COiqmuHO0BVXaOq7yneX4FvDfcahvGLEUfDWPFfRWSGiLQCfwE8OMj71gCfEZGLi/uG/y/wvKruKb5+GJhX9v5/Bj4vIu8Sl6iIrBCR+HAGJyILReTa4j2zQAZ3qW04SzDiaBgr1gA/BTqKH3810JtU9Sng/wEeAQ7iBnBuLXvL14EHikvoT6rqS7j7jv8IdAO7gN8bwfiCwF8DR3GX3lNwRdxwlmBM4Ia6IyJ7gD9U1Z+N9VgMhsEwM0eDwWAYACOOBoPBMABmWW0wGAwDYGaOBoPBMABGHA0Gg2EAxkXVk0mTJumcOXPGehgGg+EM4+WXXz6qqpMHem1ciOOcOXN46aWXxnoYBoPhDENE9g72mllWGwwGwwAYcTQYDIYBMOJoMBgMA2DE0WAwGAbAiKPBYDAMgBFHg8FgGAAjjgaDwTAA48LnaDAYDOU8s6OTezd1sL87zcyWCLdfNY9rzp9S1XuYmaPBYBhXPLOjkzsf30pnIktz2E9nIsudj2/lmR2dVb2PEUeDwTCuuHdTB36vEAn4EHEf/V7h3k0dVb2PEUeDwTCu2N+dJuz3nnAs7PdyoDtd1fvUTBxFJCQiL4jIayKyVUT+snj8X0Vkt4i8Wvy4uFZjMBgMZx4zWyJkCif2OssUbGa0RKp6n1rOHHPAtap6EXAxcL2I9DVW/7KqXlz8eLWGYzAYDGcYt181j4KtpPMWqu5jwVZuv2re6U8eBjUTR3VJFp/6ix+m7LjBYBgV15w/hbs+vJgp8RDHMwWmxEPc9eHFVY9W19TKIyJe4GVgPvBPqvq8iHwB+KaI3Ak8BXxVVXO1HIfBYBgDdm6E5+6Bnr3QPBuuuAMWLK/Kpa85f0rVxfBkahqQUVVbVS8GZgCXiciFwJ8D5wOXAq3AVwY6V0Q+JyIvichLR44cqeUwDQZDtdm5EZ78M0gchlCL+/jkn7nHq3X9f10Jf7/EfazWdcuoS7RaVXuAZ4DrVfVgccmdA+4HLhvknPtUdZmqLps8ecBCvQaDoVF57h7wBCAQARH30RNwj4+WWgtvkVpGqyeLSHPx8zBwHbBDRKYXjwlwE/B6rcZgMBjGiJ694A+feMwfhp59o792LYW3jFruOU4HHijuO3qAH6rqehF5WkQmAwK8Cny+hmMwGAxjQfNsd0YXKLPXFDLQPGv01+7Z684Yy6mW8JZRM3FU1c3AJQMcv7ZW9zQYDA3CFXe4S908rnAVMuDk3eOjpZbCW4bJkDEYDNVnwXK44W6IT4Vsj/t4w93ViVZfcYcrtPk0qLqP1RLeMkxVHoPBUBsWLK+adeeU63J30Sa0z50xVtEm1IcRR4PBMP6olfCWYZbVBoPBMABm5mgwGMYfNcy+6cPMHA0Gw/hivJvADQaDoSbUyQRuxNFgMIwvapl9U4YRR4PBML5onu2avsupgQncBGQMBkNN+Ief7eR7z+4mlbeJBrz84Xvm8sfXLRj9hWuZfVOGmTkaDIaq8w8/28k9T+8iU7Dxedw2Bvc8vYt/+NnO0V+8ltk3ZZiZo8FgqDrfe3Y3HgGfx51/eQQsx+F7z+6uzuzRmMANBsN4JJW38ciJxzziHh8vGHE0GAxVJxrw4pzUMcpR9/h4wYijwWCoOn/4nrk46i6lHXWKj+7xqmEXwKpd+ymz52gwGKpO375iTaLVqpDuwkp14USnEPAFR3/NATDiaDAYasIfX7egOmJYTi4J6aMkUhmOZwo0hxwC1b1DP0YcDQZD41PIQqaLbCpBTybPy3u62bDlIDvT+5g8cRK3XzWv6q1azZ6jwWBoXKwc9L5NvmsfR7u7OZLM8vKebh749V560nmaQj46E1nufHwrz+zorOqtjTgaDIbGw7Eh2YnVtZeu7h4O92bJ5C0ANmw5iM8DQZ8XESES8OH3Cvdu6qjqEMyy2mAwNA6OA9ke7HQ3vekcyZwFnOgJ6kzmiJ1kCQr7vRzoTld1KEYcDQbD2FMURc30kMzkOJ4poCeJYh9TYkF60nmCvpJAZgo2M1oiA75/pJhltcFgGDscBzLd0LOH7PEjHOpJ0ZPJDyqMACuWTMdyIGfZqCrpvEXBVm6/al5Vh2ZmjgaDof4UZ4pke7Btm550nnRxT/F0LJ05gU8zmw1bDvJm2mLKxFBNotVGHA0GQ/2wcpDthVwvqg7JrEVvtoCjg88UB2LpzAksnTmBlqmziDW11GSoRhwNBkNtKG+C1TQD3vFpmLEMgFTeojdTwHKcMR7k4Jg9R4PBUH36mmD1HgR/FHrfhqfvIt/xSw4nsnSlcg0tjGDE0WAw1IJnvw14wOsDFPWHsMSH/dID5K3xUbbMLKsNBkP1yPa6gZbuDghOQAHbAcdR8ATxpQ6O9QgrxoijwWAYPdle15JjF9znTedgp45ie0IlD7eVxYpOH7MhDhezrDYYDCND1RXF7j2Q7ATbNW4n8wW6Fq7CKeSLXQIVrAziFEgsWjXWo64YM3M0GAzDo9+jeNzNgQZXFHMWyazlBlqmX4Z16ZeIb1uLL3UQKzqdxKJV5M69fIwHXzlntjiWWwmaZ7utG2vclMdgOGPpy2bJ9rizRkqimMhY2Hpi9Dl37uXjSgxP5swVxz4rgScAoRZIHHafU/0WjgbDGY1ju7PEbI8rkAwtimcKZ644PnePK4yBYjJ6IOI2AX/uHiOOBkMl2JY7U8z1VjRTPNOomTiKSAjYBASL93lYVb8mInOBdUAr8Fvgd1U1X/UB9Ox1Z4zl+MPQs6/qtzIYzigcGzI9JyyfAdJ5i+MNntVSTWoZrc4B16rqRcDFwPUicjnwLeDbqnoe0A38QU3u3jy7GCkro5CB5lk1uZ3BMO5xHEh3udHnTHe/MOZtm85klmPjIKulmtRMHNUlWXzqL34ocC3wcPH4A8BNNRnAFXeAk4d82v0h59Pu8yvuqMntDIZxi21B6hj07HHFsSiKtipdqTyHe7PkCo2X1SJWBt+2R9ymWzWgpnuOIuIFXgbmA/8EtAM9qtpXm+gAcO4g534O+BzArFkjmO0tWA7cXYxW73NnjCZabTCUKGTcQEs+dcLy2VElkbVIZAcvODtmqOLveoPYrvVE9j6Fp5CCQBDe8btVv1VNxVFVbeBiEWkGHgUuGOhtg5x7H3AfwLJly0b2E1qw3IihwXAy+TSkj7nlw8qwHIdkziaVG34JsVrjyfUS2bOR6K71BHra+4+rN4D0vlWTe9YlWq2qPSLyDHA50CwivuLscQbwdj3GYDCc9Vh5SB91xbGMnGWTzFmk8zaDzFXGBnUIHn6F6K4NRPZvQpxS3DY/YS6p+SvZO+9WLlq0GKnB7WsZrZ4MFIrCGAauww3G/By4GTdi/WngsVqNwWAwULTkdLmpfmXkbZueTKHh9hO96SNEOp4k1v4EvmRp7uT4wqTnXEdy3gqey83lB1uSvPyrvdz/mSm8b2F1q4BDbWeO04EHivuOHuCHqrpeRLYB60Tkr4BXgO/XcAwGw9mLbZXS/MqWyQXHoTdTqLgtQV1wLMJv/ZrorvWEDj6PlHkoc5MWk5r/IXpnXM3PDwhrfpXgzWPH+l//8ZZD40scVXUzcMkAxzuAy2p1X4Ohljyzo5N7N3WwvzvNzJZITXqXjJpBRNFR5XimMGC707HC17ufaPsGoh0/xpvt6j9uByeQmnc9qbYVJKOzeGJnmnWP9XIwUZrlXjI9yOeumsf1F8+tzdhqclWD4QzkmR2d3Pn4VvxeoTnspzOR5c7Ht3IXNIZAWnlXEMsyWqDxos9iZQnve4Zo+wZCna/1H1eE7PTLSM1fQebcK+kpeHh0W4pHth3ieM6dSQpw1Zwwq5fGWTQ5QMvUFkRqseNYgTiKSBtwQFVzInINsBT4N1XtqcmIDIYG5d5NHfi9QiTg/tlEAj7SeYt7N3WMrTjm0+5M8aRAi6PFVL8RNLAKvvWbqlfUcS04G4js2ehacIpY0Wmk5t1Aqu1G7OhUDiYsHnwhyYadKbKWO26/B64/L8qtS2LMmuAf1TgqpZKZ4yPAMhGZj7s/+DiwBrixlgMzGBqN/d1pmsMn/mGG/V4OdKcHOaOGqEI+6WayWKdm3yZyBXozI7PkBN/6DS0vfhv1+NFAE97MMVpe/DbdfGnYAim5BNE9G4m2byDQ/WZp+B4fmRnvJTl/Jblp7wTxsKsrz5oXj/F0Rwa7OOxYQLjpghgfXxRjUsQ77K9lNFQijo6qWiLyUeDvVfU7IvJKrQdmMDQaM1sidCay/TNHgEzBZkZLpH6D6K+QU6qlWE7OciPQo+nTEt+2FvX4wRd2D/jCqOUer0gcVQl2vkp013rC+3+Bxy6Jd2HCHJLzV5Ke8wGcUDOqyisHc6zZkuD5AyXf5eSIl09cGOPDC6NEA2NTk7sScSyIyCpc282HisfqM681GBqI26+ax52PbyWdtwj7vWQKNgVbuf2qebW/+SDZLH04qvRkCqRyhVHfypc6iAaaTjoYOm3/F0/6KNGOHxNt34A/WTJmO74w6dnvJzV/BfmJi0AE21E27U6zdnOC7UdLY57d7GP1kjjL2yL4vbXZS6yUSsTxM8DngW+q6u5iVZ3/W9thGQyNxzXnT+Eu3L3HA91pZtQ6Wt03S8wlSr1ZTkJRUnmL4+nqZbVY0el4M8dKM0cYvP+LYxF669fE2jcQevt5REsz1kLTbFQVsbN4E28huQQ5G558M8m6LQneKos8L5ka4Lalcd49M4SnRgGW4VKJOM4DvqjqGo9UdTfw1zUdlcHQoFxz/pTaBl9U3dlhrtedLQ4ieH2imMhYVa+Uk1i0yt1ztABfCKzsKf1fhrLgpOd+kHx8Bk3b1oLHjwabSabSrP3FZh6wp9OVL+0dvmdWiFVL4yydGqzq11ANKhHHW4F7ROQR4H5V3V7jMRkMZx+FrDtDzCf6q20PRC1FsY/cuZfTzan9X/JTLyGy+6euUbvz1bIxCdnpy0i1rSQz40rwBpi08Q7U4+egTOX+3sv5YfqdpDUAgM8DH5wf4dYlceY0N+4O3WnFUVV/R0SagFXA/SKiwP3AWlVN1HqAhvHDuDBINxJWviSI9tDZKvWuwF3e/8Xf9QbRXRuY9Ku78BRK5cGsyFRSbTeQmncjdmzaCefvPu5wX/5W1meWYOHOFKOS49bgc6y4aTWTo/WNPI+EikzgqtpbnDmGgS8CHwW+LCL/oKrfqeUADeODhjdINwqqriDmet3Z4unePkZtCSSfILrnZ24VnFMsOO8h1baC7LRl4CmJnKry2qE8a7Yk+PXxr/Qfn+xJ8Kno86wKPEs0GuVotPrlxWpBJSbwDwG/D7QB/w5cpqqdIhIBtgNGHA2Na5BuFOyCK4plTapORypv0VvPtgSqBDtfI9q+gfC+n59owWmaTWr+ClJzr8cJNZ9wmqPKs3uzrNmcYOuR0jlzPEf4g8gmboptJ2gnEadA96I/rM/XUgUqmTl+Aretwabyg6qaFpHfr82wDOONhjJINwq25Rq188mKZol9FByHnnSBbKE+hSE8mT4LzhP4Ewf6j7sWnPeRaltJftJiOCmKnLeVn+5Ks3ZLgn3HS2NdNNmNPF/rO0Dz9g58qa4zs2+1qn5qiNeequ5wDOOVhjBINwKFLBTSbsT5pGKyp8NyHHqzFql6FIZwLEJvP0+sfT2ht35zggUnN2kxqbYVpGdfi/pP/fkl8w6PbU/y0LYkx9KlWe3lM0LctjTORdMCiAgWl3N0xvgRw5OpZFl9Oe7S+QIgAHiBlKo2DXmi4axiTA3SY42qu4eY6T5tYGUg8rZNIlufYrO+xAGi7U8Q7XjS9TIWsQNNpOd+gNT8lRSaB/6ZHU3ZPLQ1wWM7UqQK7ji9Asvb3MhzW2vjRp5HQiXL6n/EtfM8BCwDPoXbE8Zg6KfuBulGoH8fceBUvtORLdgcz44u1a8SxMoR3v8LtwrO4VLmb8mCs4LMjPeANzDg+Xt7CqzdkuAnu9JYxYli2Cd8aGGUT14YY2rszCzuVWm0epeIeIs9Ye4XkedqPC7DOKTmBulGoD/anDi19W+FVCP/uRL8XW8SbV9PdM9GPPlyC84UUm03DmjBKef1wzl+sDnBs/tK+6XNIQ+fWBzjoxfEiAfHJue5XlQijmkRCQCvisjfAAeBaG2HZTA0EI7t7iH27SWOME0vbzv0ZgtkaliBW/IJInueIta+gUDXG/3H1eMjc+6VrgVn+qUnWHDKcVT59X438rz5cCnyfG7cy61L4txwXpSgrzHS+2pNJeL4u7j7jH8EfAmYCXy8loMyGBoCK+9ab3KJEQsiQKZgkcrbZGq1p3iCBecZPHYpEFSy4HwQJ9Qy6CUKtvKzjjRrNifY01MS74WT/Ny2NM5Vs8N4PWeHKPZRSbR6b/HTDPCXtR2OwdAA5JLuPuIIl80AtiqpnEUyWzvztidzrFQFp9yC4w2RnnMtqbYV5CddeIoFp5x03uHxN1L88PUkR9KlZf6l5wa5bWmcd0wP1qzSdqMzqDiKyBaG+DenqktrMiKDYSwoZF0/Yi4xouBKH3nbJpm1SeVrZMdxLEJvv+DOEt967kQLzsQLXAvOnPej/qF3vroyNg9vTfLo9iTJfCnyfO28MKuXxJk/ceDgzNnEUDPHlcXH/1p8/Pfi423AWezsNZwRqJb2EPOpUQkiQDpvkchZNQuyeBNvEWt/gkjHk/gyR/uP91tw2lZQaGk77XX2Hy+wbkuSH+9KkS8ONegVVi6McsuFMabHz8zI80gY9DvRt5wWkStV9cqyl74qIr8C7qr14AyGquI4xWyV0QVWyknnLY7XKsXPzhHZt4lo+/oTLDgA2WnLSLatIDPzvYNacMrZfiTPDzYn2LQn0z+fnRD08PFFMT66KEpzqPELQdSbSv5NREXkPar6LICIXIGJVhvGE30NqIaojzhcamnH8XfvIrprPZE9G/HmS4WvrPBk14LTdgN27JzTXkdVeeEt147zysFSkGZazMstF8ZZsSBC2H9m23FGQyXi+AfAv4jIBNxNlOO4hSgMhsalz4+Y7RmwAdVIyVmucTtXqK4oSj5ZtOCsP9GCI14yM/osOJcNasEpx3KUpzsyrNmSoL2rVEH8vFY/q5fGuWZuGN8ZEHlWBKR24l5JtPpl4KJiTUdR1eM1G43BMBrsgpvPbOXcdL5R7iOWkylY9GarvKeoSuDIZmLtGwjv/flJFpxZpNqKFpxwa0WXSxccNryR4sHXkxxOlcb5znPcyPOyc8Z35FkR1BtEfeHiRwgC4dOfOEIq3n1V1d6ajcJgGC7lARUr6wpjlZbMfViOQzpvk8pVt+q2J9PlWnA6nsDfu6//uOMNkZn9PpJtK8hPXjKkBaec7ozNI9uS/GhbkkQx8uwRuHpOmNuWxlk4aXxGnlW8qDeA+kKotyiGdRR3E5oyVI+dG+G5e6BnLzTPhivugAXLq3sP23KXytnjVRfDPkqm7SpmsjgWoYMvuu1KT7HgnE+qbWVFFpxy3u61WPd6gg07S5HngBduPC/KLUvizGgaP3/eKj5XCL3B4kcAvGNbyGL8fPcMjc3OjfDkn4EnAKEWSBx2n3P36ATSyoOVcWeGdr6qQZWTqUXk2Zt8262C0/4kvsyR/uN2IF604KysyIJTzhtH86zZnOCZPRmc4rciHhA+tijGxxfFaAk3duT5hOWxN4j6guBpPCmqpGRZBPhTYJaqflZEzgMWqur6mo/OMH547h5XGAPF+n+BCOSLx4cjjqquABbSru1mBCXAhoOipPM2yWp6FO0ckf2/dKvgHHr5hJey097pGrVnvhe8lXfcU1VeftuNPL/0dmlvckrUyy0Xxli5MEqkQSPPA+4VjoO9z0rk+n7gZeDdxecHcMuXNbw4moZPdaRnrztjLMcfhp59A7+/nL52pPkUFFIVtxEYDTnLJlNwSOeql97n724n2r6eyO6fDmDBKTaiip/eglOO5SjP7HYjz28eK0We57X4WLUkznVtkYaLPNdDDP1eD5GAl5BvDKPVQJuq3iIiqwBUNSPjIOT1zI5OvvzwaySy7mb60USOLz/8Gv/75ouMQNaC5tnuUjpQVjm6kIHmWYOfU8i6UeVRFnaohLztkLNs8pZDruBUTRClkCKy5ymi7esJHtvRf9y14FxBqm1lsQrO8JaNWcvhiZ1p1r2e4GCiNKO9eFqA1UvjXD4jVJXI8+b9x9mw5SCdyRxTYkFWLJnO0pkThn0dxxuq+czQ7/UQDfqIBX0EaiiKfVTyE8uLSJhioqiItAHDq/8+BnzrxzvoThfwegSf14MqdKcLfOvHO4w41oIr7nD3GPO4M8ZCBpy8e7wc23JbkWZ73X3EGtIXbU7nLQp2FWejqgSObCmz4JTqHRbiM10LzrwP4oQnDvvSx7M2P9qe4pFtSY5n3TELcNWcMKuWxFg8pfKl+OnYvP84D/x6Lz4PxAJeetJ5Hvj1Xj7N7CEFsjQzDJWJYW3ESkSIBrzEQ37CgfrupVYijl8DfgzMFJEfAFcCv1fLQVWDjqMpPAKe4n8wEVBROo6mxnhkZygLlgN3F6PV+9wZ4xV3wLyr3fYBhaxruami93AwahJtpmjB2f0TtwrOCRacYNGCs3JYFpxyDiUsHnw9yfqdKbKWO4v2e+CD86OsWhJjVnP1I7cbthzE54GgzxWdoM8Lls2GLQdPEMd+MfSHh2WpeaGji3Uv7udgb4bpTWFuvXQml807vWfT7/UQDniJBLyE/d4x82ZWYgLfKCK/BS7H/Sd2h6oePc1phrORBcvhvOvcWWPf/mEle45VwFYlnbNIVtmTiGO7Fpz29YQP/OoEC06+dSHJ+StJz34/GoiN6PK7uvKs2Zzk6Y40dnFnIRYQPnJ+jJsXx5gUqd1sqTOZI3bSbCzg89CZzOMUZ4Qj9Re+0NHFPU+/ic8jNIV8HEvluOfpN7mD804RSJ/HQyjgIex3xdDnbYzAUiXRagFuAOap6l0iMktELlPVF05z3kzg34BpgAPcp6r3iMjXgc8Cfb6Gv1DVJ0bzRQzE3IkRdh1JIY66s0YFR2H+pLOsG149cOxiC9K0G2Wu8f5hOem8RbpQ/UKyrgXnSaIdT+BLlyw4TiBGau4Hi1VwRtZKSVV59ZAbeX7+QGmHalLEwycvjPPhhVGigdoLxJRYkJ50Ho8/RJYQeQnQW/DQPCFSUe72UKx7cT8+jxD2u+Lb13Rt3Yv7ubxtIuGAl1BRDOuxfzgSKllW/x9ccbsWtxJPAngEuPQ051nAn6rqb0UkDrwsIhuLr31bVe8e4Zgr4qs3XMCfPfwayZyF7Shej9Ac9PPVGy6o5W3PDhzH9R72tSEdZgvS0VKzQrJ2jvD+Z4m1byB06KUTXspOvYTU/A8N24JzwuUd5Zd7M6zZnGD70dJ+6+xmN/L8gbYIfm/tl5CKB/WFeP87L+Tbm95CbB8hv4dswcFS5dZLZ454SdzHwd4MTaGSvPTtHR5NZpkzaXzUralEHN+lqu8QkVcAVLW72FNmSFT1IG6/GVQ1ISLbgXNHNdphcM35U7j75ovOrm54tUC1mK+cLT3WOJAyGLYqvZkCqZyFVnGWWLLgbMSbL2XJ2uGJpObdSLLtRuz4yH91c5by410p1m1JcqC3tA+6ZGqA1UviXDEr1L83XgtUvMUlcqj4GAQRLlkIf+SPs+7F/RzqzTCtKIJAxUviwZjeFKYrnSMa9OEVQURI5y1mto4PYYTKxLEgIl5K0erJuDPJihGROcAlwPO4AZ0/EpFPAS/hzi67h3O9SjkruuFVm77CDf1CmK/rMnkg8rZDMmtVtbq2FFJE9j5NdNd6gse29x9X8ZI5992uBeecy0aVuZHIOTy6PcnDW5N0Z0t/Mu+ZFWLV0jhLp1Yv8lyOK4YRHJ8rhkPVe7xsXuspgvcnD7426JJ4KHEUEUJ+DxG/j/927Xz+cv028pZD2O8tOgbGVx/zSn7y/wA8CkwRkW8CNwP/s9IbiEgMdxn+RVXtFZHvAt/A/S3/BvC3DFACTUQ+B3wOYNasIbxyhpFj5cHOnTgzHGMhLCdTsEjmbLKFKkWdVQkceZ1o+wYie58+yYIzg1TbyhFbcMrpTFn88PUkj7+RIlNwv58+Dyxvi7BqSZy5Ldq+Lv0AACAASURBVNWPPKv4cAIx1B91BXEUnLwkBgj5PRzqPbWnTsBXDKQEvIR8XjxFQ/r7F03F65FxvXKrJFr9AxF5GXg/brT6JlXdfprTABARP64w/kBVf1S83uGy1/+ZQTJtVPU+4D6AZcuWNc5f7HjFtk5cGlvZhhLCPhxVUnl3P7FaUWdPtrvUiOpkC86sa0i1rSA35aJRG5d3dxdYsyXBxl2lyHPEL3z4/CifXBxncrS6kWf1BHH8Eddi46te6a7pTWGOpXL9M0eAbMFhWpN7j6DfSyzgIxocOrI83lduQ4qjiHiAzap6IbBjqPcOcK4A3we2q+rflR2fXtyPBPgo8Prwhmw4Lf0zwr7HbF1S8kZDwSkunau1n9hvwdlA+MCzJ1lwFpDsq4ITiI/qNqrK5sNuIYjn9pdmoq1hD59YHOMj58eIB6sXjXW8IdQfwfHHala15tZLZ3LP02+SKdilQI2jfObKOZzbEu73RZ7pDCmOquqIyGsiMktVh2tYuxK35/UWEXm1eOwvgFUicjHusnoPcPswr1s59SihNdb0B0wyxYINtataU21sVTIFi3TerlplbW/yINGOJ4m2bzjVgjNnuVsFp/W8Ud/HUeXZvVnWbknwemep0viMJh+rlsT44PwoQd/ogyzqcesZOsXUvEoqgY+Wy+a1cgfnse6l/XT2ZpnREuELV8/jfRdMrfm9GwnR0/whicjTuLadF4D+9BJV/XBth1Zi2bJl+tJLL53+jeWUl9AqT2e7YZQltMYSVTdAcnLkeJyIIbiiki5YZPIO2UKVvIl2nvD+XxJr30Dw0MtI2TWzUy8h1baCzMyr3dJYoyRvKz/dlWbtlgT7jpf2QhdNDnDb0jhXzgrhHUUhiP5gSt9Suc6lvESESDE7JRrw9e8hnqmIyMuqumyg14bqWx1U1RzwlzUbWS2pVgmtscQunLRP2FgBk0qwVckVbHKWW/ihmjnO/p4ON7iy+6d4c6XuHa4F5wZSbTdixWdU5V7JvMNjO1I8tDXBsXTpa7h8RojVS+NcPC0w4jQ3RVB/FCcQdwWxzulyXo8QKe4hjmW6XqMx1L+lXwPvAP5QVX+3TuOpHqMpoTVW2JabcpdPu8vkBt8nHIy+cmDZQpULPgBSSBPZ+xTRXRsIHtvWf1zFS/bcy0m2rSR7zruqNuM6mrJ5aGuCx3akSBUjz16B64qR57bWke/7Od6QK4iBWE0bRQ1EnyDGgq4B3AjiqQz1GxQQkU8DV4jIx05+sS/63LCMpIRWvXEcN2CST7uiWMUuefUmW7BJ520yBQun2rNbVQJH+yw4P8djlSwlhfi5pOatINV2PU54UtVuua/HjTz/dFeaQlHfwz5h5cIot1wYY2psZOLrWm7iOIF43dsAlAtivSvcjEeG+gl/HrgNaAY+dNJrCjS2OFZaQque2JabblfIFEv/17bKdS1RlFzBIVPMa65qGl8RT7aHyO6fENu1Hn/v3v7jjjdAZuY1pOavHNCCE3zrN8S3rcWXOogVnU5i0Spy515e0T1fP5xjzZYEz+7N9u9cNoc83LwoxkcXxWgaYeTZ8YZwQi2ov/65/QGfhwlhP7Ggz8wQh8Gg4qiqzwLPishLqvr9Oo6pOgxWQquW+42q7j6hU+x3YlvFzwvgWONuv/BkFNeDWI1gyqAC5tiEDr1UsuA4pX8g+dYFbq3EOdcNasEJvvUbWl78Nurxo4EmvJljtLz4bbr50qAC6ajy6/1Z1mxOsPlwafZ+TtzLrUvi3HjeyCPP6glih1rQQP3T5kJ+L80RP5FA4/VnGQ+cNlrdCIwoWl0PrJMjx2OfaldtCo4rhDnLIZu3q+JBLBcwfCGwsoiVIT/lIoJHNuNLd/a/1/HHSM+5juT8FRRaF5722pM23oE3cwzKTdFWBjs8kaPL7znxa7OVn3WkWbs5we6ekggvmOjntqVxrp4TPiXyXMmsVMWL44+hgdios1WGi9cj/dWyQ/76LZ3Ha0uSEUWrDSdxBkSOKyVv22TyDul8lWsjFolvW+sKozeI5JN4cz2Ilca/92f978lOudi14My6elgC40sdRANNJx0M4Usd7H+azjs8/kaKh7Ym6UyV/JWXnhNk9UVx3jk9OODyc6hZaXbGe4rpe5GqZqtUStDvpSnkG5Ol8zM7Ornz8a34vUJz2E9nIsudj2/lLhgXAjkYRhwHwrFPTbUbp5HjSslZbkAlW7BrIojl+BL78Dg2nnzihMwVFQ+JC1a5FpymmSO6thWdPsDMMYsVnU5XxubhrUke3Z4kmXf/sXkErp0bZvXSOOdNHLrYVL+oF6+t/jBYHmJvPEJy8W0jGu9o8Hs9xII+IkHvyLNWqpAoce+mDq5wfsuq/H8wNXWYw56prPXdxL2bwmemOIrIO4Y6UVV/W/3hjAHlGSb9y+PxGygZDjnL7m8nUPUI80m4Fpyn3fzmzLH+4wqoP4rtDWPFZ3D8ktElTCUWrXJndxb9S/a9hQn8n9AX2PDgQfJFLQ56hRULI9xyYZxz4pXNEfpmpSoe8HgADxoI4E++PaoxD4eAz0M86PZTGXWR2Cr1Gj/nyC+5w/4eBXwkiNHidHFH/j7uPuLgNhAYnwz1W/G3Q7ymuMVvxyeO41pncolxlW5XDQqOQypnV7Ul6aCoEji2jeiu9W4VnDILjooX2x9zK+A4FuIUSCxePepb5s69nG6+RHzbWrYf93JvfhU/zSxAe9ylZlPQw8cWRfnYBTFawpXPthQPhfgMfJluCJSW+VJIUxjhLHc4eD1CcyTAhHAV7T9VSpT4jPwnOfVS8LjflxwhHCfDZ+Q/gS9Xb7x1Zqho9fvqOZCa098bOek+nkWC2Jeyl8rZ1WtcPwSuBeenxNo34D++uzQOb4DMzKtJta0AK0t8+4MjstsMhaqySS9mTaGN3x4vVSifFvNyy4VxViyIEPZXPuNS8eEEJ+AEmzi+7A4mbfofUEijvjBiZRAnz/FLvjDqcQ+GR4SmsJ8JYf+o0hIHpEqJEm3+Y+wtBBFVPCI4qmQJ0uY/dvqTG5iK1hMiciGwCOj/l6mq/1arQVUVK+92v8snzxpBLE/Zy9tOXQQRdQgeeonYrg2ED/zyRAtOy/yiBecDaLBkwcnNuKJqt7cc5emODGu2JGjvKlUqn9/qRp6vmRvGNwxxcbwhnOAE1B/t91FmZl/L0au+yYRXvou/dz+Fppkcv+QLZGZXfxHl93poCvmJh2qY31ylRInw5LnMPPY2h7Me8pZDwOdhasghPHFulQdcXyppsPU14BpccXwCt9nWs7jNsxqbnRvhl3e7/yGbzoFLPg1zrhzrUdWEvghz1qrP7LAPb+ow0fYniHY8iS91qP+444+SnrOcZNsKCq0LapYvnCk4bNiZ4sHXkxxKlr7ud0wPctvSOJeeO3DkeTAcXwQn2OwGWwa63+xrayKGfYQDXppCfqLBOsRKq5UoccUdRJ/8M+Y1ecEfK17HHtuEiypQyU/gZuAi4BVV/YyITAW+V9thVYG+zWa8EJwAqWOw6VvAV84IgSz3H+YKds0DKidgFwi/9Suiu9YTOvjiiVVwplxUtOBcU1OPX3fG5kfbk/xoW4renLt36hG4Zk6YVUvinD/5tG2OTsDxRdwMljr7EsHdT4wFfcRD/vp24qtWosRYJFzUgUrEMVOs62iJSBPQCTR+I4i+zWZfwM1O8YegALzywLgVx7ztFHOYq1/QoRJ8x/cQ27WeyO6fnFgFJ9RKat71pNpWjNiCUylv91o8+HqCDTvT5IrltgNeuOG8KLcuiTOjaXgzLscXLopifb2JHhEiQbcsWCQwhpVwFiyvjohV6zoNRCW/SS+JSDPwz8DLQBK3tmNj07fZXOajwxeC3oODn9OAWI5DJm+TGiNBlEKayL6fu1VwjpaKtqt4yJ5zuTtLPPfdNa87uPNonjVbEvx8dwanOFGNB4SPLYrxsUUxWocTeR7DDJaQ38uEsH9sBdFQEZX0kPkvxU//PxH5MdCkqptrO6wq0LfZ7CtbXllZaJo+dmOqgPKCDtWuf1j5IPosOBuI7H3qBAuOFTuHZNsK0vOux45MrvEwlJcP5ljzWoIX3y5FnqdEvXzywhgfWhglMpzIsyeIHZqA+mN1r5kYC/poCvvrmtJnGB2VBGSeUtX3A6jqnpOPNSz9m822WxrKyrpFIC759FiP7BT62gVkC9XLXx4JnmwPkT0/JbprA4EyC456AqRnXeU2opp6Sc1rD1qO8os9GdZsTrDzWCnyPLfZx+qlca5riwwv8uwLF4Ms9a2I4/d6iAZ9xEM+/EM0ojI0JkNlyISACDBJRFpwOw8CNAHn1GFso6Nvk/iXd7ubxE3TGypabTnFcl+F6vVPGRHqEDz0MrH2DYT3/xJxSmLUZ8FJz1mOE2wa4iLVIWcpT+xMse71BG8nSt+Ti6a5LQgunxEaXuTZH3PtOHVcOosI8ZCPpnoHVwxVZ6iZ4+3AF3GFsDxVsBf4p1oOqmosWA4zl7mR6gagr+RXNRtKjRRv6nCxEdUTA1hwritacBbWZfl5PGvz6PYUj2xL0pN1txEEeO9stwXB4inD6/3iBJqwg811LSbr83hcUayFWftsaBTXgAyVIXMPcI+I/DdV/U4dx3TGkS3YxTqIY7dkBsosOBsIHXzhRAvO5KWk5q+suQWnnEMJix9uTbL+jRQZyx2L3wMfmB9h9ZI4s5qHJ26OL4Idngje4dl4RkPA56E5EiBaqwBLlfKfDcNnqGX1tar6NPDWuGyTMIYoSibvLpmz9fYgDoDv+B6i7RuIdvwEb66n/7gdaimz4NSvfcSurjxrNid5uiNN0Y1D1C/cdEGMmxfHmBQZXtDC8UfdPcU6ibpHhJDfS1PYV/tCsmdCo7hxylA/2auBpzm1RQKMhzYJdaYvf3msgyp9iJUhsvfnRHetP9WCM/1dpOavIHPuFXVr/amqvHoox5rNSX5zINt/fFLEwycWx/nw+VFigWFEnvG4vViCTXWbKfZFnIO+OjakGo+N4s4QhlpWf634+Jn6DWd8YTluup67h+hQlR7Mo0GVQNcOtwrOnqfwWOn+l6zY9KIF54aaW3DKsR3ll3vdyPP2o6Vgz+wJPlYtjbO8LULAW7nQKIITbMYJTqhLg3twRbE5EhibAMt4aBR3hlKJlWci8DXgPbh//c8Cd6lqY0Q56kzBcWeG6UJ9c5iHwpM7TmT3RqLt6wn0dPQfV0+A9MyrSM2vjwWnnJyl/GRXirVbkhzoLRWhuHBKgNVL41w5K4RnGLMvRdBAHDvUUrfZrt/rYVIsOLad+hqxUdxZQiW/ZeuATcDHi89vAx4ErqvVoBoJRclbDpmCQ6ZGbQNGhDoED/2WWPv6Uy04zW2k5q+smwWnnETO4T92JHl4a5KuTOl7deWsEKuXxFk6bXiRZ3AtOXaotW7RZ7/XQ3OkQbr1naF5y+OBSsSxVVW/Ufb8r0TkploNaKzpy1DJWQ45u0GWy2V4051E258k2r7hRAuOL1JsRLWybhaccjpTFg+9nuSxN1JkCu73y+eB5W0RVi2JM7dleMLWP1OskyWnL9c5FqxDkGW4nIF5y+OBSn4Lfi4itwI/LD6/GdhQuyHVH1uVbDGyPOZ2m4FwLMJvPVesgvMCUlbBOzd5Ccl+C079Gzvt7i6wdkuCje1prOKwwn7hI+dH+cTiGFOiwxMaFS9OsAkn0FSX5XPI7yU+Ro2pDI1NJb99twN/Avw7rjfXA6RE5E8AVdX6rtuqgNInhs7Y5S9XgO/4XteCs/sneLPd/cftYDOpeTe4jagmzB6TsW0+lOMHmxM8t78UeW4Ne7h5cYybzo8RDw5vf1PFhxNqdkWxDiIVCfhoifpH3pjKcMZTSeGJgbunjyMsx6FgO+QtLRaDbaylcjliZQjve4bYrg0Ej5Tqe7gWnEtJta10LTh1zP7ow1HlV/uyrNmc4PXOfP/xGU0+Vi2J8cH5UYK+4QmbegLYwQloIF4XUQz6vUyMBkwBCMNpqSRafSXwqqqmROR3gHcAf6+q48JodTxr0Xs8c/o3jiX9FpwNRPb87EQLTnSa22Jg3vXY0aljMry8rWxsT7N2c4K9x0uR5wsm+1m9JM57Z4eHnTLntiFoRgPRag93QPxeD63RQH0qbBvOCCr5TfkucJGIXAT8d+D7uEvsq2s5sKrRmBNEADy5XiK7f0q0fQOBnvb+4+rxk5n5XpLzP1R3C045qbzDYztSPLQ1wdF0aevh8hluzvPF0wLD3qdzy4a11E0U+7r2NYXMnqJheFQijpaqqoh8BLhHVb8vIo1X92u8oA7Bw6+4s8T9mxCntDzNT5jrWnDmfsA1OY8RR9M2D29N8h/bk6SKkWevwPvnRVi9NE5b6/CX9I435FbcrkPZsBc6ulj30n4O92aZ3Rrh81e3jevm8oaxoRJxTIjInwO/C7xXRLxA/Te8xjne9BEiHU8Sa38CX1kTeNeC835SbSvIT7yg7haccvb1FFi7JclPdqUo9EWefcLKhVE+uTjGtPjwl6T1bkPwwu4uvvPzXQR9wsRogCPJHHc+vpW7wAikYVhU8tt+C7Aa+H1VPSQis4D/fbqTRGQmbofCaYAD3Keq94hIK66JfA6wB/ikqnYPdp1xTb8FZwOhg8+fasFpW0lm9thYcMrZ2pljzeYEv9yb7d+FmBDycHOxBUHTMCPPMDa1FGMhH4++8hYhv6ffqxgJ+EjnLe7d1GHE0TAsKolWHxKRHwCXishK4IUKe1ZbwJ+q6m9FJA68LCIbgd8DnlLVvxaRrwJfBb4y8i+h8fD17ifavt6tgpPt6j9uByeQnvtBkvNXYk2YM3YDxI08/2a/G3l+7XBpaX9O3MutF8a5ccEIIs91Nm73UZ7m91ZPhubwifcO+70c6E4PcrbBMDCVRKs/iTtTfAbX5/gdEfmyqj481HmqehA4WPw8ISLbgXOBj+D2wQZ4oHjd2ojjzo1ENt1NpHsPVnQ6iUWryJ17eU1uJVaW8L5nXKN2uQUHITv9smIVnCvHxIJTTsFWnupIs2Zzgt09pcjzgol+blsa56o54WG1IOjDCTQNK+/5hY4u1r24n4O9GaY3hbn10plcNq912PdtCvtpjQT6G9/PbInQmciekOWSKdjMaKlviwTD+KeS3+T/AVyqqp0AIjIZ+BkwpDiWIyJzgEuA54GpReFEVQ+KSG3WOsUioaIenEAT3swxWl78Nt18qXoCqYq/ayex9vWuBaeQ6n/JteDcSGreDWNmwSknnXd4/I0UD21N0pkqFcy49Jwgq5fGeec5wRFFc9UTxI5MHNbWwAsdXdzz9Jv4PEJTyMexVI57nn6TOzivYoH0ez1MjgdP8SveftU87nx8K+m8RdjvJVOwKdjK7Vc1fjdhQ2NRiTh6+oSxyDHcLJmKEJEY8AjwRVXtrfQPUEQ+B3wOYNasEZRn6isS6vGDZYEvjFoQ37Z21OIouQTRPUULTveu/uPq8ZOZ8R6S81eSm/bOMbPglNOVcSPPj25Pksy7O4oegWvnhlm1JM6CSSOrhah4cEItblR9mKK67sX9+DxCuChsfSK27sX9pxVHjwjNET8Twv4Bxfya86dwF3Dvpg4OdKeZ0RLh9qvmmf1Gw7CpRBx/LCI/AdYWn98CPFHJxUXEjyuMPyirHH5YRKYXZ43Tgc6BzlXV+4D7AJYtWzZ8t2JfkVC7tHTEF8KXGmHfanUIHn6VaPt6IvtOtOAUJsx1ayXO/QBOqHlk168yB3ot1m1J8OSbKfLFiWLQK6xYGOGWxXHOaRq5Gdrxx9x2BCPMfT7Ym6EpdOK5Ib+HQ71Dm/XjIT+t0cBpDefXnD/FiKFh1FQSkPmyiHwcuBJ3z/E+VX30dOeJ+2/9+8B2Vf27spceBz4N/HXx8bGRDPy09BUJ9ZTt8VlZrOjw+lZ70keJdjxJrH3DSRacMOnZ7yc1f+WYW3DK2XEkzw82J/jFnkx/5Lkp6OFji6J87IIYLeGRp82pJ4AdnoT6Rxddn94U5lgq1z9zBMgWHKY1DXzdkN/LxFjA5EEb6kpF//pV9RHcGeBwuBLXG7lFRF4tHvsLXFH8oYj8AbAP+MQwr1sZfUVCbQvEB1YWcQokFq06/bmOReitXxNr30Do7d+caMGZtNg1as96X937IA+GqvLCW64d57cHc/3Hp0a93LokxooFUcL+kS/x3SV0M06wuSr/BG69dCb3PP0mmYJNyO8hW3CwHOXWS2ee8D6fx0NrLEDMpPwZxoBKotUfA74FTMGdOQoVVONR1Wcp9bo+mfcPc5zDp1gkVDfdjVQYrXYtOBuIdvy4YS045ViO8nRHhjVbErR3lYrdzm/1s3ppnPfNHVnkuRzHH8cOt1a1fNhl81q5g/NY9+J+DvVmmHZStFpEaA77aY4MvK9oMNSDSn7j/wb4kKpur/Vgqs6C5aQnXUzvsbcHfYtrwfkF0fb1hDpf6z/eaBaccjIFhw070zz4eoJDyVLk+R3T3cjzZeeOLPJcjlt9u6Vmzasum9c6YPAlFvTRGg3g8459MMtwdlOJOB4el8J4GvxdbxDrq4JTSPYftyJTSbXdQKptRUNYcMrpydr8aFuSH21LcTznLvUFuHpOmNVL41wwefRC5vZ+bgXv8NsZjAZTSszQaAzVt7qvV/VLIvIg8B9A/4bWeOxb7VpwNhYtOG/2H1ePj8yM95JqW0F22jvr1tWuUt5OWDz4eoINb6TJFRs9B7xww3lRbl0SZ8YoIs99VCvYMlx8Hg8tUT/xUOPMzA0GGHrmWN6vOg18oOz5+OlbrVqsgrOe8P5f4LHLLThzihacDzaMBaecnUfzrNmS4Oe7MzjF0HMsIHz0ghg3L47ROorIcx/VDrZUiogwIeynOezvz24xGBqJofpWj/9+1S/8M7FffYcJx/f2H3ItOO8j1baS/KTFDWPB6UNVeflgjjWvJXjx7VLkeUrUyycWx/jwwiiRQHX242oRbKmEWMhHa8TsKxoamzPbI3HkDbxFYcxNWkyqbQXp2dc2jAWnHMtRfrEnw5rNCXYeK0We5zb7WLU0znXzIvi91RFy9fixI5PrWg1IRIgGvUwIm74thvHBmS2O7/w9cgWLrnOvwWqeO9ajGZCcpTzxZop1WxK8nShFni+aGmD10jiXzwzhqeLs1g5MwAm31jW10cwUDeORM1scp11I9qr/gTWElWes6M05PLotycPbkvRkS5Hn984OsWpJnAunVjdarOJzZ4t1nDWbCLRhPDNUtPpPhjrxpJRAQ4UcTlo8+HqS9W+kyFhulMXvgQ/Oj7JqSYxZzdWP2rp7ixPrFoX3iNASDTAhbCLQhvHLUDPHvpasC4FLcXOiwY1ib6rloM5E2rsKrNmc4KmONEU3DlG/cNMFMW5eFGNStPrCNZJyYqNBRIiHfLRETl8cwmBodIaKVv8lgIj8FHiHqiaKz78OPFSX0Y1zVJVXD+VZsznBbw5k+49PjHj4xOI4Hzk/SqxKkecT7is+t8NfcMgMz6oSD/lpifjNvqLhjKGSPcdZQL7seR63/4thEGxHeXaf24Jg25HSt272BB+3LonzgfkRAlWKPJczFp7FWNBHcyRAwGdE0XBmUYk4/jvwgog8imv+/ihu4yzDSeQs5Se7Uqx7Pcn+46U6khdOcSPPV86qbuS5D0VwghNcUazTvmI06KM5Ymw5hjOXSuo5flNEngTeWzz0GVV9pbbDqhJ16iGTyDk8tiPJQ1uTdGVK5c2umBnitqVxlk6rXZ6yWyCitW6FMcIBLy0RE4E2nPlUauWJAL2qer+ITBaRuaq6u5YDGzV16CHTmbJ46PUkj72RIlNwoyxegeXzI6xeEmduS+0Ey/GF3Qh0nQpElHf4MxjOBiqp5/g1YBlu1Pp+wA/8X9xito1LDXvI7O4usHZLgo3taaziRDHsFz68MMonFseYGqudfVQ9QezwxLoWiGiOBGgxtRUNZxmV/BV/FLdz4G8BVPXtYh/qxqbaPWSAzYfdatu/2leKPLeGPdy8OMZN58eIB2sXlFCP341AB+r3rQ/6vUwy7QkMZymViGNeVVVEFEBEojUeU3WoUg8ZR5VfFSPPr3eWIs8zmnzcuiTG9fOjBH21m1GpeHGCzSPq8jdSvB7XxN1kyogZzmIqEccfisi9QLOIfBb4feB7tR1WFRhNDxkgbysb29Os3Zxgb1nk+YJJflYtjXPV7HBNjc5uBLrZLaVW5zzoidGgMXEbznoqiVbfLSLLgV7cfcc7VXVjzUc2WkbQQwYglXd4bEeKh7YmOJouRZ7fNSPI6iVxLpk++hYEp8MJNLktCupYSizo99IaCZiASwPyzI5O7t3Uwf7uNDNNH+66UUlA5luq+hVg4wDHGpsKesj0cTRt8/DWJP+xPUmqLPJ87bwIq5fGmN9am14q5bgtCibWrG/LQPi9HlqipsNfo/LMjk7ufHwrfq/bdKwzkeXOx7dyFxiBrDGV/EUsB04WwhsGODYu2ddTYO2WJD/ZlaJQnCiGfMKHFkb55OIY0+K1Fw3HG8IJt9a1vqLXIzRHAjSFfCYK3cDcu6kDv1eIBNzfw0jARzpvce+mDiOONWaoqjxfAP4L0CYim8teigPP1XpgtWZrpxt5/uXeLMU6EEwIebh5UYyPXhBlQqj2y0v1BIoR6FjN71VOLOhjYszsK44H9nenaT6pulHY7+VAd3qMRnT2MNS0aA3wJPC/gK+WHU+oatfApzQWz+zo5F+feoVkz2GmxILceOE00hLkB5sTvHaoFHmeHvey6sI4NyyIEKpDjrCKFyfUghNoqmubBp/Hw8RYgKhZQo8bZrZE6Exk+2eOAJmCzYyWxqtmf6YxVFWe48BxEbkH6CqryhMXkXep6vP1GuRI6NuraSJPq9/Lzh74+VM9ZJzSl3zeRD+3LY1z9ZwwvjrMotzCEMUc6DpGoMFEoccrt181jzsf30o65uoUKgAAErZJREFUbxH2e8kUbAq2cvtV88Z6aGc8lUwhvgu8o+x5aoBjDce9mzrweqA36+XNdBM5pyRGl54TZPXSOO88p/aR5z4cfxQ7PKnuzaz8Xne2WD7zMIwfrjl/Cnfh/j4f6E4zw0Sr60YlfzGiqn3bcqiqIyIN/5e2vztNdypPKq+AB1AmBwpM9qX5uxsurNs41OMv9oOu7zJIxI1uNpu0v3HPNedPMWI4BlQich0i8se4s0VwgzQdtRtSdZjZEiGZLQDKBNJM8qVp9sPUpvpEhMcis6WPaNBHazSA3xSeNRhGTCV/PZ8HrgDeAg4A7wI+V8tBVYN3z2ulN2vRLCmmeHsRx6InY3HBtNrmJise7FALVtOsYnZL/YQx4PMwfUKYqU0hI4wGwyipJEOmE7i1DmOpKr/u6GJKPAiZNGqD3yuE/V62H0pwUw3uNxYFZ/swudAGQ/UZyuf431X1b0TkO9BvBexHVf+4piMbJfu703wgsIVP2j9kqn2II55JPOlfzm+S51f1PorgBJrcWWKdgy0iQlOxoZXHRKENhqoy1F/z9uLjS/UYSLVZGd7Kp7q/i42XJFEmOMf5ndw6AtHVwEVVuYcTaMIONtetCnc5kYC7r2h6txgMtWEon+N/Fh8fqN9wqsftvvUcx0cBPz6xyWqAAMoq3zNk+MSoru22Jmipaw50H8aaYzDUh6GW1f/JAMvpPlT1wzUZUZVoyb+Nb0IzRxMZHNvG5xXioRhR6wiZEV6z3q0JyvGI0BIJ0BQ2udAGQz0Yavpxd/HxY8A03NYIAKuAPae7sIj8C7AS6FTVC4vHvg58FjhSfNtfqOoTwx51JTTPJp44TLg1jGMVl71WBis8vGK30NeaoLXuXsU+okEfE6MB0xPaYKgjQy2rfwEgIt9Q1avKXvpPEdlUwbX/FfhHTm3j+m1VvfvUt1eZURa7BVDxuaJYx9YE5Xg9Qms0QNxEoQ2GulPJVGSyiPQncorIXGDy6U5S1U3A2BWoWLAcbrgbjU1B8r3Y4Yl0X1pZ50EVL3ZoIlbTrDETxljIx4yWiBFGg2GMqGRX/0vAMyLSlxUzB7h9FPf8IxH5FG4U/E9VtXsU1xqaYRS7hbFrTVBOJOCjOeI3faENhjGmEhP4j0XkPKDPILhDVXMjvN93gW/gBnq+Afwtbk+aUxCRz1HMxJk1a9YIb1c5jj+OHW6tu1exDyOKBkNjUUmbhAjwJ8BsVf2siJwnIgtVdf1wb6aqh8uu+8/AoNdQ1fuA+wCWLVs2aNR8KE6u57hiyXSWzpxwwnvc1gStYxKBBrd3y8RowIiiwdBgVLJ2vB/IA+8uPj8A/NVIbiYi5aHijwKvj+Q6ldBXz/FoKk8s4KUnneeBX+9l8/7jgNuawIqegx2bPibC6PP8/+3de3Bc5XnH8e9PK8mSLF9kG7nUNhADxuAJkNYmHmg8DsUzmFJzaTKYJjN0JjQmQydOW5pS/jCpJyW0YYiZTpqaAoWmKc21wYFCYwhGoYRwNQGDy8WF2KlBXGwwSEay/PSP82qyFkeyLGu1q93fZ0Zzznl395znXUuP33N7Th3tk5uYNbXZidGsAg1nH/LYiLhI0sUAEdGtYVxoJ+l2YCkwQ9IO4GpgqaRTyXarX+bwjl0OaX3HNnr7+nijay97+7rTczgK3PH065x0wrwxfzRBsSnNDb7lz6zCDSc59khqJl0QLulY4KDHHCMi75qZmw8tvJF7oXMPb3f1MkVBXZ3o2V/Hq10tbNvfWrbE2Fhfx4zWCR4pmo0Dw0mOVwP3AHMkfQs4A/ijUgY1Gnr27QeBVMc7tLJbrewTTOgb0eHLwyKJaS2NTGnxZTlm48WQyTHtPm8lu0tmMSBgdUS8MQaxHZaGgujuhbf3t4Agq2UeNBbGdle2ubHAjNYJrq9oNs4MmRwjIiT9MCJ+G7hrjGIaFfNmTuZ/33iXd7p76enbT0OhjomN9cxumzgm2/fdLWbj23CGMw9LWlTySEbZqiVzaawv0D65iQ/NmJiN3uoLrFw0p+Tb9t0tZuPfcI45fhy4TNLLZE8eFNmg8uRSBna4+p/a9vX7X2T7ri5+Y3IzKxfN4bS500q2zfq6OmZMcjkxs2ownL/i5SWPokSWzm/nI0e18eZ7I72hZ3hckdus+gxVz7GJ7OFaxwFPAzdHxL6xCmy8mNBQYEZrIxPqfXmOWTUZauR4G9AL/JRs9HgSsHosghoP+ovP+vIcs+o0VHI8KSI+DCDpZuCRsQmp8rU01jO91c+FNqtmQyXH3v6ZiNjn0vzZ5TnTWyfQOsEnXMyq3VB/5adIeifNC2hOy/1nqyeXPLoK0tpUz/SJEyj4hItZTRjqMQk+w4DvhzarVd4/HESdRNvERqY0+4SLWS1ycszhp/2ZmZNjkUKdmNE6gYk+4WJW85wFktYJ9Uxv9QkXM8vUfHKsr6tjemujR4tmdoCazgi+PMfMBlOTybGhkF2e09zoy3PMLF9NJUdJ6eFWDfiOHzMbSs0kR1fPMbNDUfXJUXUwfeIEV88xs0NS9clxsh9VYGYjUN3J8fmN8NANsPsVmHo0nL4a5i0rd1RmNg5U7/1xz2+Eu6+APa9BU1s2vfuKrN3M7CCqNzk+dAPUNUJjC0jZtK4xazczO4jqTY67X4GG5gPbGpph9y/LE4+ZjSvVmxynHg293Qe29XbD1KPKE4+ZjSvVmxxPXw37e6CnCyKy6f6erN3M7CCqNznOWwbLr4NJM2Hv7my6/DqfrTazYanuS3nmLXMyNLMRqd6Ro5nZYajqkeOmrZ2s79jG9l1dzGlrYdWSuSyd317usMxsHKjakeOmrZ2s2bCFzj17mdrcQOeevazZsIVNWzvLHZqZjQMlS46SbpHUKemZorZpkjZKeiFN20q1/fUd22goiJbGeqRs2lAQ6zu2lWqTZlZFSjlyvBU4e0DblcB9EXE8cF9aLontu7poHvCs6eaGAjt2dZVqk2ZWRUqWHCOiA3hrQPN5wG1p/jbg/FJtf05bC929fQe0dff2MbutpVSbNLMqMtbHHGdGxE6ANC3Z2ZFVS+bS2xd09ewjIpv29gWrlswt1SbNrIpU7AkZSZ+V9Jikx15//fVD/vzS+e2sXbGA9klNvN3dS/ukJtauWOCz1WY2LGN9Kc9rko6MiJ2SjgQGPXUcETcCNwIsXLgwRrKxpfPbnQzNbETGeuS4AbgkzV8C3DHG27fnN8Kt58K6D2dT17c0y1XKS3luB34GnCBph6TPANcCyyS9ACxLyzZWXADYbNhKtlsdERcP8tLvlmqbdhDFBYAhm/akdt+DbnaAij0hYyXgAsBmw+bkWEtcANhs2Jwca4kLAJsNm5NjLXEBYLNhq+qSZZbDBYDNhsUjRzOzHE6OZmY5nBzNzHI4OZqZ5XByNDPL4eRoZpbDydHMLIeTo5lZDidHM7McTo5mZjmcHM3Mcjg5mpnlcHI0M8vhqjw1ZtPWTtZ3bGP7ri7mtLWwaslcP6HRLIdHjjVk09ZO1mzYQueevUxtbqBzz17WbNjCpq2DPiHXrGY5OdaQ9R3baCiIlsZ6pGzaUBDrO7aVOzSziuPkWEO27+qiuaFwQFtzQ4Edu7rKFJFZ5XJyrCFz2lro7u07oK27t4/ZbS1lisiscjk51pBVS+bS2xd09ewjIpv29gWrlswtd2hmFcfJsYYsnd/O2hULaJ/UxNvdvbRPamLtigU+W22Ww5fy1Jil89udDM2GwSNHM7McTo5mZjmcHM3Mcjg5mpnlcHI0M8vh5GhmlsPJ0cwsh5OjmVkORUS5YzgoSa8DrxzGKmYAb4xSOJWqFvoItdHPWugjVEY/j46II/JeGBfJ8XBJeiwiFpY7jlKqhT5CbfSzFvoIld9P71abmeVwcjQzy1EryfHGcgcwBmqhj1Ab/ayFPkKF97MmjjmamR2qWhk5mpkdkqpOjpLOlvQ/kl6UdGW54xktkm6R1CnpmaK2aZI2SnohTdvKGePhkjRH0v2SnpO0RdLq1F5t/WyS9Iikp1I//zq1f0jSz1M/vy2psdyxHi5JBUlPSrozLVd0H6s2OUoqAF8HlgMnARdLOqm8UY2aW4GzB7RdCdwXEccD96Xl8Wwf8OcRcSKwGLg8/ftVWz/fB86MiFOAU4GzJS0G/hb4WurnLuAzZYxxtKwGnitarug+Vm1yBE4DXoyIbRHRA/w7cF6ZYxoVEdEBvDWg+TzgtjR/G3D+mAY1yiJiZ0Q8keb3kP1RzaL6+hkR8W5abEg/AZwJfC+1j/t+SpoN/B5wU1oWFd7Hak6Os4DtRcs7Ulu1mhkROyFLLEDVPAtB0jHAR4CfU4X9TLubm4FOYCPwErA7Ivalt1TD7+464IvA/rQ8nQrvYzUnR+W0+dT8OCOpFfg+8IWIeKfc8ZRCRPRFxKnAbLI9nhPz3ja2UY0eSecCnRHxeHFzzlsrqo/V/ICtHcCcouXZwP+VKZax8JqkIyNip6QjyUYh45qkBrLE+K2I+EFqrrp+9ouI3ZI2kR1jnSqpPo2sxvvv7hnACknnAE3AZLKRZEX3sZpHjo8Cx6czYo3ASmBDmWMqpQ3AJWn+EuCOMsZy2NIxqZuB5yLi+qKXqq2fR0iamuabgbPIjq/eD3wivW1c9zMi/ioiZkfEMWR/hz+JiE9R4X2s6ovA0/9U64ACcEtE/E2ZQxoVkm4HlpJVNXkNuBr4IfAd4Cjgl8AnI2LgSZtxQ9LvAD8FnubXx6muIjvuWE39PJnsZESBbLDynYhYK2ku2UnEacCTwKcj4v3yRTo6JC0FroiIcyu9j1WdHM3MRqqad6vNzEbMydHMLIeTo5lZDidHM7McTo5mZjmcHGuIpOmSNqefVyX9qmh51CqiSLpU0rrRWl/O+i+Q9Bdp/kJJ84fxmS9L+kJO+8xUFedJSaeXIt6ibe3ov6bRKl813yFjA0TEm2SVX5D0JeDdiLiu+D3p4mtFxP4PrqEyRMR/FC1eSHYd5NYRrm4Z8HREfKAijKRCRPSNcL02znnkaEg6TtIzkv4ReAKYI2l30esrJfVXU5kp6QeSHksjrsWDrHa2pP9Ktfq+UrSuT0t6Om3vmtRWL+mbRe2fT+0PSlon6WfptYWp/dLU/jHgHOBrafR7jKTLJD2a6iN+N911Mli/FwLXkN3atllSo6TdaZT5CHCapEWSHpD0uKS7Jc1Mnz0+9e9xSR2S5uWs/whlNSefkPQNiu4nlvSj9Nktki5NbaskfbXoPZ+T9HeSJqVtP5W+n08M3JaVQET4pwZ/gC+R3akAcBzZ6GtRWq4nq5jS/96VwE1p/tvA4jR/DPBMzrovBV4AJgHNZNWRfpPs/tmXye7saQAeAM4FPgrcXfT5qWn6IPCNNH8msLlo/evS/L8C5xd9dnrR/LXA59L8l8mKV+TFuq6o3wFcmJYnAA8BM9Lyp4Ab0/z9wLFp/gzgxznr/gfgqjR/Xlp3f9+mpWkL8CzQlr6vl4D69NojZLVIL+r/HlL7lHL//tTCj3errd9LEfHoMN53FnBCtvcNQJuk5ojoHvC+eyOrw4ikrWS3+80iu6/2jdT+b8ASsqKnJ0i6AfhP4MdF67kdICJ+IqldWZWeoZwsaS0wlSzZ3DmMPhXrAfp3208EFgD3pv4WgP7jhouB7xd9D3l/S0vIRrZExB2S9hS99qeSVqT52WSJ9jFJHcBySduAvoh4VlIA10q6FvhRRPz3IfbJRsDJ0fq9VzS/nwNLSjUVzQs4LbICwkMpvke2j+x3La9MFRHxZrrHeDnweeAPgM/2vzzw7QfZ7r8AyyPimbS7Othu/2C6Iw3PUry/iIiPFb9B2aMZ3oiszNjBfCBeSWeRJc7FEdEt6UF+/R3fBPwZ2Qj7nwEi4rl0COAc4KuS7oyIaw6xX3aIfMzRPiCykzG70nG1OuCCopfvBS7vX5A0nATR72Hg4+mseT3Z7voDko4gOwn0XbIiGr9V9JmL0naWAq9FxHsD1rmHbITYbyLwqrJyZ394CLHleRaYJem0FEOjpAURsQvYKemC1F4n6ZScz3eQ7Yoj6feL4pwCvJUS4wJgUf8H0qjwWOCTZIcwkDSL7OTZN4HrOfD7sRJxcrTB/CVwD9lzWnYUtV8OnCHpF5KeBf54uCuMiB3AGmATsBl4OCLuIqu72aGsGvY/kVXf6feOpIeAvx9kW7cDV/WfkEnrf4Ssovazw41tkHjfJyupdb2kp8gqx3w0vbwSuCy1byE7djrQ1cBZkp4gq6L0q9R+F9CSPruGrNJQse8BHRHxdlo+BXg0fT9fJDuJZCXmqjxWsdLu5p9ExOZyxzKWJN0DfCUiHih3LLXMI0ezCpEONzwP7HJiLD+PHM3McnjkaGaWw8nRzCyHk6OZWQ4nRzOzHE6OZmY5nBzNzHL8P3wgd070ZZ2lAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.3172346830374032\n"
     ]
    }
   ],
   "source": [
    "X = dfp_covid[dfp.columns[[is_int(x) for x in dfp.columns]]]\n",
    "y = dfp_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)\n",
    "ypred= best_random_prot.predict(X_valid)\n",
    "plt.rcParams['figure.figsize'] =5,5\n",
    "sns.regplot(y_valid, ypred)\n",
    "plt.xlabel('True hospital free days')\n",
    "plt.ylabel('Predicted hospital free days')\n",
    "plt.title('proteins')\n",
    "plt.show()\n",
    "print(r2_score(y_valid, ypred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.034946822441492276\n"
     ]
    }
   ],
   "source": [
    "X = dfm_covid[dfm.columns[[is_int(x) for x in dfm.columns]]]\n",
    "y = dfm_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)\n",
    "ypred = best_random_met.predict(X_valid)\n",
    "\n",
    "plt.rcParams['figure.figsize'] =5,5\n",
    "sns.regplot(y_valid, ypred)\n",
    "plt.xlabel('True hospital free days')\n",
    "plt.ylabel('Predicted hospital free days')\n",
    "plt.title('metabolites')\n",
    "plt.show()\n",
    "print(r2_score(y_valid, ypred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.3819391335283856\n"
     ]
    }
   ],
   "source": [
    "X = dfl_covid[dfl.columns[[is_int(x) for x in dfl.columns]]]\n",
    "y = dfl_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.2, random_state = 22)\n",
    "ypred = best_random_lip.predict(X_valid)\n",
    "\n",
    "plt.rcParams['figure.figsize'] =5,5\n",
    "sns.regplot(y_valid, ypred)\n",
    "plt.xlabel('True hospital free days')\n",
    "plt.ylabel('Predicted hospital free days')\n",
    "plt.title('lipids')\n",
    "plt.show()\n",
    "print(r2_score(y_valid, ypred))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.20024148e-05, 9.33976715e-05, 7.74109103e-06, ...,\n",
       "       5.02454163e-05, 8.50242504e-06, 1.58086599e-05])"
      ]
     },
     "execution_count": 300,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_random_c.feature_importances_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {},
   "outputs": [],
   "source": [
    "importances = best_random_c.feature_importances_\n",
    "std = np.std([tree.feature_importances_ for tree in best_random_c.estimators_],\n",
    "             axis=0)\n",
    "indices = np.argsort(importances)[::-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 303,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 370,  150,  261, ...,  634, 2873, 3283], dtype=int64)"
      ]
     },
     "execution_count": 303,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "indices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 336,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = dfc_covid[dfc.columns[[is_int(x) for x in dfc.columns]]]\n",
    "y = dfc_covid['Hospital_free_days_45']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 314,
   "metadata": {},
   "outputs": [],
   "source": [
    "prot_name_dict = covid_data.get_biomolecule_names()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 315,
   "metadata": {},
   "outputs": [],
   "source": [
    "lip_name_dict = covid_data.get_biomolecule_names(dataset='lipidomics')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 316,
   "metadata": {},
   "outputs": [],
   "source": [
    "met_name_dict = covid_data.get_biomolecule_names(dataset='metabolomics')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 317,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Merge_dict(dict1, dict2): \n",
    "    res = {**dict1, **dict2} \n",
    "    return res "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 318,
   "metadata": {},
   "outputs": [],
   "source": [
    "combined1 = Merge_dict(prot_name_dict, lip_name_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 319,
   "metadata": {},
   "outputs": [],
   "source": [
    "combined2 = Merge_dict(combined1, met_name_dict)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 331,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_names_ordered = [combined2[x] for x in dfc.columns[indices]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 339,
   "metadata": {},
   "outputs": [],
   "source": [
    "number_column_names = dfc.columns[[is_int(x) for x in dfc.columns]].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 340,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_names = [combined2[x] for x in number_column_names]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Feature ranking:\")\n",
    "\n",
    "for f in range(X.shape[1]):\n",
    "    print(\"%d. feature %d (%f)\" % (f + 1, indices[f], importances[indices[f]]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 342,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 344,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x12c105d4190>"
      ]
     },
     "execution_count": 344,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "(pd.Series(best_random_c.feature_importances_, index=feature_names)\n",
    "   .nlargest(10)\n",
    "   .plot(kind='barh')) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 322,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4029"
      ]
     },
     "execution_count": 322,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 326,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.20024148e-05, 9.33976715e-05, 7.74109103e-06, ...,\n",
       "       5.02454163e-05, 8.50242504e-06, 1.58086599e-05])"
      ]
     },
     "execution_count": 326,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "importances"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 327,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "370"
      ]
     },
     "execution_count": 327,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "indices[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 325,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature ranking:\n",
      "1. feature 370 (0.119332)\n",
      "2. feature 150 (0.030773)\n",
      "3. feature 261 (0.028998)\n",
      "4. feature 3793 (0.024703)\n",
      "5. feature 3764 (0.019801)\n",
      "6. feature 2497 (0.018561)\n",
      "7. feature 747 (0.014780)\n",
      "8. feature 172 (0.014768)\n",
      "9. feature 2440 (0.012845)\n",
      "10. feature 3689 (0.012629)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"Feature ranking:\")\n",
    "\n",
    "for f in range(10):\n",
    "    print(\"%d. feature %d (%f)\" % (f + 1, [indices[f]], importances[indices[f]]))\n",
    "\n",
    "# Plot the impurity-based feature importances of the forest\n",
    "plt.figure()\n",
    "plt.title(\"Feature importances\")\n",
    "plt.bar(range(10), importances[indices][0:10],\n",
    "        color=\"r\", yerr=std[indices][0:10], align=\"center\")\n",
    "plt.xticks(range(10), indices)\n",
    "plt.xlim([-1, 10])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 250,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfc = df_dict['combined']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {},
   "outputs": [],
   "source": [
    "nonzero = (dfc['Hospital_free_days_45']!=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False,  True,  True,  True,  True,  True,  True, False, False,\n",
       "       False,  True,  True,  True,  True, False,  True,  True,  True,\n",
       "        True,  True,  True, False,  True,  True,  True,  True, False,\n",
       "       False,  True,  True, False, False,  True,  True,  True, False,\n",
       "        True,  True,  True,  True,  True,  True, False, False,  True,\n",
       "        True, False, False, False, False,  True, False,  True,  True,\n",
       "       False,  True,  True,  True,  True,  True,  True, False,  True,\n",
       "        True,  True,  True,  True,  True,  True,  True,  True,  True,\n",
       "        True,  True,  True, False,  True,  True,  True, False, False,\n",
       "        True, False,  True,  True,  True,  True,  True,  True,  True,\n",
       "        True, False, False,  True,  True,  True, False,  True, False,\n",
       "        True,  True, False, False,  True,  True, False,  True,  True,\n",
       "       False,  True,  True,  True,  True,  True,  True,  True,  True,\n",
       "        True,  True,  True, False,  True,  True,  True,  True,  True,\n",
       "        True,  True, False])"
      ]
     },
     "execution_count": 247,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nonzero.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfc_non0 = dfc[nonzero.values]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfc0_covid = dfc_non0[dfc_non0['COVID']==1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "metadata": {},
   "outputs": [
    {
     "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>7593</th>\n",
       "      <th>7596</th>\n",
       "      <th>7597</th>\n",
       "      <th>7599</th>\n",
       "      <th>7600</th>\n",
       "      <th>7601</th>\n",
       "      <th>7602</th>\n",
       "      <th>7605</th>\n",
       "      <th>7606</th>\n",
       "      <th>7607</th>\n",
       "      <th>...</th>\n",
       "      <th>Vent_free_days</th>\n",
       "      <th>DM</th>\n",
       "      <th>Hospital_free_days_45</th>\n",
       "      <th>Ferritin_NG/ML</th>\n",
       "      <th>CRP_MG/L</th>\n",
       "      <th>DDIMER_mg/L_FEU</th>\n",
       "      <th>Procalcitonin_NG/ML</th>\n",
       "      <th>Lactate_MMol/L</th>\n",
       "      <th>Fibrinogen</th>\n",
       "      <th>SOFA</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sample_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2.0</th>\n",
       "      <td>37.353091</td>\n",
       "      <td>29.419228</td>\n",
       "      <td>29.048510</td>\n",
       "      <td>27.573331</td>\n",
       "      <td>24.671039</td>\n",
       "      <td>22.343591</td>\n",
       "      <td>27.166913</td>\n",
       "      <td>29.576452</td>\n",
       "      <td>30.081443</td>\n",
       "      <td>29.514012</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>39</td>\n",
       "      <td>1060</td>\n",
       "      <td></td>\n",
       "      <td>1.03</td>\n",
       "      <td>0.37</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.0</th>\n",
       "      <td>37.527875</td>\n",
       "      <td>27.174171</td>\n",
       "      <td>28.953215</td>\n",
       "      <td>25.619161</td>\n",
       "      <td>24.528623</td>\n",
       "      <td>20.714471</td>\n",
       "      <td>25.589237</td>\n",
       "      <td>29.621968</td>\n",
       "      <td>29.398338</td>\n",
       "      <td>29.436129</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>18</td>\n",
       "      <td>1335</td>\n",
       "      <td>53.2</td>\n",
       "      <td>1.48</td>\n",
       "      <td>0.07</td>\n",
       "      <td></td>\n",
       "      <td>513</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.0</th>\n",
       "      <td>37.673128</td>\n",
       "      <td>28.879702</td>\n",
       "      <td>29.527460</td>\n",
       "      <td>23.893562</td>\n",
       "      <td>25.875326</td>\n",
       "      <td>24.170967</td>\n",
       "      <td>25.280226</td>\n",
       "      <td>30.966780</td>\n",
       "      <td>30.360452</td>\n",
       "      <td>30.041791</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>39</td>\n",
       "      <td>583</td>\n",
       "      <td>251.1</td>\n",
       "      <td>1.32</td>\n",
       "      <td>0.98</td>\n",
       "      <td>0.87</td>\n",
       "      <td>949</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5.0</th>\n",
       "      <td>37.983542</td>\n",
       "      <td>27.262485</td>\n",
       "      <td>28.605867</td>\n",
       "      <td>18.440251</td>\n",
       "      <td>20.888495</td>\n",
       "      <td>17.354782</td>\n",
       "      <td>25.654472</td>\n",
       "      <td>29.020542</td>\n",
       "      <td>29.175695</td>\n",
       "      <td>29.628988</td>\n",
       "      <td>...</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>27</td>\n",
       "      <td>800</td>\n",
       "      <td>355.8</td>\n",
       "      <td>0.69</td>\n",
       "      <td>4.92</td>\n",
       "      <td>1.48</td>\n",
       "      <td>929</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.0</th>\n",
       "      <td>37.489959</td>\n",
       "      <td>29.535232</td>\n",
       "      <td>29.251895</td>\n",
       "      <td>25.033513</td>\n",
       "      <td>26.576723</td>\n",
       "      <td>25.044144</td>\n",
       "      <td>27.201630</td>\n",
       "      <td>30.070352</td>\n",
       "      <td>31.190664</td>\n",
       "      <td>30.745911</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>36</td>\n",
       "      <td>563</td>\n",
       "      <td>129.1</td>\n",
       "      <td></td>\n",
       "      <td>0.67</td>\n",
       "      <td>0.86</td>\n",
       "      <td>769</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95.0</th>\n",
       "      <td>38.025760</td>\n",
       "      <td>27.909764</td>\n",
       "      <td>29.292547</td>\n",
       "      <td>19.582291</td>\n",
       "      <td>24.774145</td>\n",
       "      <td>23.696679</td>\n",
       "      <td>25.085698</td>\n",
       "      <td>30.882708</td>\n",
       "      <td>29.568374</td>\n",
       "      <td>30.343821</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>33</td>\n",
       "      <td>386</td>\n",
       "      <td>193.6</td>\n",
       "      <td>1.3</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>752</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96.0</th>\n",
       "      <td>36.704965</td>\n",
       "      <td>28.605549</td>\n",
       "      <td>25.719967</td>\n",
       "      <td>23.779666</td>\n",
       "      <td>26.306052</td>\n",
       "      <td>22.671805</td>\n",
       "      <td>25.526087</td>\n",
       "      <td>31.268075</td>\n",
       "      <td>29.748808</td>\n",
       "      <td>30.919969</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>41</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98.0</th>\n",
       "      <td>37.605885</td>\n",
       "      <td>29.348514</td>\n",
       "      <td>30.065610</td>\n",
       "      <td>25.341469</td>\n",
       "      <td>24.728426</td>\n",
       "      <td>24.685761</td>\n",
       "      <td>25.236846</td>\n",
       "      <td>30.618944</td>\n",
       "      <td>31.558692</td>\n",
       "      <td>29.998600</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>15</td>\n",
       "      <td>582</td>\n",
       "      <td>108.6</td>\n",
       "      <td>1.54</td>\n",
       "      <td>0.36</td>\n",
       "      <td>3.28</td>\n",
       "      <td>468</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100.0</th>\n",
       "      <td>37.787556</td>\n",
       "      <td>26.969061</td>\n",
       "      <td>28.103146</td>\n",
       "      <td>26.583481</td>\n",
       "      <td>25.303093</td>\n",
       "      <td>20.852103</td>\n",
       "      <td>25.527788</td>\n",
       "      <td>28.278393</td>\n",
       "      <td>29.567178</td>\n",
       "      <td>29.739326</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>35</td>\n",
       "      <td>304</td>\n",
       "      <td>136.4</td>\n",
       "      <td>1.67</td>\n",
       "      <td>0.05</td>\n",
       "      <td></td>\n",
       "      <td>583</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>101.0</th>\n",
       "      <td>37.068980</td>\n",
       "      <td>32.415410</td>\n",
       "      <td>28.430139</td>\n",
       "      <td>26.307425</td>\n",
       "      <td>26.740082</td>\n",
       "      <td>23.796498</td>\n",
       "      <td>26.716858</td>\n",
       "      <td>30.895548</td>\n",
       "      <td>30.786904</td>\n",
       "      <td>31.184766</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>37</td>\n",
       "      <td>602</td>\n",
       "      <td>100.7</td>\n",
       "      <td>1.72</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.43</td>\n",
       "      <td>479</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>72 rows × 4048 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                7593       7596       7597       7599       7600       7601  \\\n",
       "sample_id                                                                     \n",
       "2.0        37.353091  29.419228  29.048510  27.573331  24.671039  22.343591   \n",
       "3.0        37.527875  27.174171  28.953215  25.619161  24.528623  20.714471   \n",
       "4.0        37.673128  28.879702  29.527460  23.893562  25.875326  24.170967   \n",
       "5.0        37.983542  27.262485  28.605867  18.440251  20.888495  17.354782   \n",
       "6.0        37.489959  29.535232  29.251895  25.033513  26.576723  25.044144   \n",
       "...              ...        ...        ...        ...        ...        ...   \n",
       "95.0       38.025760  27.909764  29.292547  19.582291  24.774145  23.696679   \n",
       "96.0       36.704965  28.605549  25.719967  23.779666  26.306052  22.671805   \n",
       "98.0       37.605885  29.348514  30.065610  25.341469  24.728426  24.685761   \n",
       "100.0      37.787556  26.969061  28.103146  26.583481  25.303093  20.852103   \n",
       "101.0      37.068980  32.415410  28.430139  26.307425  26.740082  23.796498   \n",
       "\n",
       "                7602       7605       7606       7607  ...  Vent_free_days  \\\n",
       "sample_id                                              ...                   \n",
       "2.0        27.166913  29.576452  30.081443  29.514012  ...              28   \n",
       "3.0        25.589237  29.621968  29.398338  29.436129  ...              28   \n",
       "4.0        25.280226  30.966780  30.360452  30.041791  ...              28   \n",
       "5.0        25.654472  29.020542  29.175695  29.628988  ...              23   \n",
       "6.0        27.201630  30.070352  31.190664  30.745911  ...              28   \n",
       "...              ...        ...        ...        ...  ...             ...   \n",
       "95.0       25.085698  30.882708  29.568374  30.343821  ...              28   \n",
       "96.0       25.526087  31.268075  29.748808  30.919969  ...              28   \n",
       "98.0       25.236846  30.618944  31.558692  29.998600  ...              28   \n",
       "100.0      25.527788  28.278393  29.567178  29.739326  ...              28   \n",
       "101.0      26.716858  30.895548  30.786904  31.184766  ...              28   \n",
       "\n",
       "           DM  Hospital_free_days_45  Ferritin_NG/ML  CRP_MG/L  \\\n",
       "sample_id                                                        \n",
       "2.0         0                     39            1060             \n",
       "3.0         1                     18            1335      53.2   \n",
       "4.0         0                     39             583     251.1   \n",
       "5.0         0                     27             800     355.8   \n",
       "6.0         0                     36             563     129.1   \n",
       "...        ..                    ...             ...       ...   \n",
       "95.0        1                     33             386     193.6   \n",
       "96.0        1                     41                             \n",
       "98.0        1                     15             582     108.6   \n",
       "100.0       1                     35             304     136.4   \n",
       "101.0       1                     37             602     100.7   \n",
       "\n",
       "           DDIMER_mg/L_FEU  Procalcitonin_NG/ML  Lactate_MMol/L  Fibrinogen  \\\n",
       "sample_id                                                                     \n",
       "2.0                   1.03                 0.37                               \n",
       "3.0                   1.48                 0.07                         513   \n",
       "4.0                   1.32                 0.98            0.87         949   \n",
       "5.0                   0.69                 4.92            1.48         929   \n",
       "6.0                                        0.67            0.86         769   \n",
       "...                    ...                  ...             ...         ...   \n",
       "95.0                   1.3                                              752   \n",
       "96.0                                                                          \n",
       "98.0                  1.54                 0.36            3.28         468   \n",
       "100.0                 1.67                 0.05                         583   \n",
       "101.0                 1.72                  0.2            2.43         479   \n",
       "\n",
       "           SOFA  \n",
       "sample_id        \n",
       "2.0              \n",
       "3.0              \n",
       "4.0              \n",
       "5.0           7  \n",
       "6.0              \n",
       "...         ...  \n",
       "95.0             \n",
       "96.0             \n",
       "98.0             \n",
       "100.0            \n",
       "101.0         6  \n",
       "\n",
       "[72 rows x 4048 columns]"
      ]
     },
     "execution_count": 256,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfc0_covid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "34"
      ]
     },
     "execution_count": 260,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(np.where(dfc['Hospital_free_days_45']==0)[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape X train(64, 4029)\n",
      "shape X valid(8, 4029)\n"
     ]
    }
   ],
   "source": [
    "# combined \n",
    "\n",
    "X = dfc0_covid[dfc.columns[[is_int(x) for x in dfc.columns]]]\n",
    "y = dfc0_covid['Hospital_free_days_45']\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.1, random_state = 420)\n",
    "print('shape X train'+str(X_train.shape))\n",
    "print('shape X valid'+str(X_valid.shape))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 2.,  1.,  2.,  5.,  9.,  5.,  6., 10., 16., 16.]),\n",
       " array([ 3. ,  7.1, 11.2, 15.3, 19.4, 23.5, 27.6, 31.7, 35.8, 39.9, 44. ]),\n",
       " <a list of 10 Patch objects>)"
      ]
     },
     "execution_count": 268,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R^2 Training Score: 0.92 \n",
      "OOB Score: 0.43 \n",
      "R^2 Validation Score: 0.40\n"
     ]
    }
   ],
   "source": [
    "\n",
    "rf = RandomForestRegressor(n_estimators = 1000,\n",
    "                           max_depth=None,\n",
    "                           n_jobs = -1, min_samples_leaf=1, min_samples_split=2,\n",
    "                           oob_score = True,\n",
    "                           bootstrap = True,\n",
    "                           random_state = 42)\n",
    "rf.fit(X_train, y_train)\n",
    "\n",
    "print('R^2 Training Score: {:.2f} \\nOOB Score: {:.2f} \\nR^2 Validation Score: {:.2f}'.format(rf.score(X_train, y_train), \n",
    "                                                                                             rf.oob_score_,\n",
    "                                                                                             rf.score(X_valid, y_valid)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Performance\n",
      "Average Error: 4.8098 days.\n",
      "Accuracy = 82.89%.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## best random search model\n",
    "random_accuracy = evaluate(rf, X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "rf = RandomForestRegressor()\n",
    "rf_random = RandomizedSearchCV(estimator = rf,\n",
    "                               param_distributions = random_grid,\n",
    "                               n_iter = 100, cv = 5, verbose=2,\n",
    "                               random_state=42,\n",
    "                               n_jobs = -1)\n",
    "rf_random.fit(X_train, y_train)\n",
    "print(rf_random.best_params_)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "sklearn",
   "language": "python",
   "name": "sklearn"
  },
  "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.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}