{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "PROJECT_COVID19_GLOBAL_WK2.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "oFq7GFLIZKu4", "colab_type": "text" }, "source": [ "# =================================\n", "# STARTING FROM THE BOTTOM\n", "# =================================\n" ] }, { "cell_type": "markdown", "metadata": { "id": "HEQgcM7nZKYu", "colab_type": "text" }, "source": [ "1. OBTAIN DATA\n", "2. SCRUB DATA\n", "3. EXPLORE DATA\n", "4. MODEL DATA\n", "5. INTERPRET DATA\n" ] }, { "cell_type": "markdown", "metadata": { "id": "54RzoXkXZzYS", "colab_type": "text" }, "source": [ "# MVP -- Minimum Viable Product:\n", "(simpliest submission possible, no modeling)" ] }, { "cell_type": "code", "metadata": { "id": "hn0AplWrZyvb", "colab_type": "code", "colab": {} }, "source": [ "import pandas as pd\n", "import numpy as np\n", "## GLOBAL WK 2\n", "train_file = \"https://raw.githubusercontent.com/danielcaraway/data/master/covid19-global-forecasting-week-2/train.csv\"\n", "test_file = \"https://raw.githubusercontent.com/danielcaraway/data/master/covid19-global-forecasting-week-2/test.csv\"\n", "sub_file = \"https://raw.githubusercontent.com/danielcaraway/data/master/covid19-global-forecasting-week-2/submission.csv\"\n", "\n", "train = pd.read_csv(train_file)\n", "test = pd.read_csv(test_file)\n", "sub = pd.read_csv(sub_file)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "OCY0emLZaVrj", "colab_type": "code", "colab": {} }, "source": [ "# BEFORE\n", "sub.head()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4dX07jAGZJ94", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 191 }, "outputId": "619e623e-a1f2-4d22-dae4-d982d9897409" }, "source": [ "# AFTER\n", "sub['ConfirmedCases'] = 100\n", "sub['Fatalities'] = 18\n", "sub.head()" ], "execution_count": 4, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ForecastIdConfirmedCasesFatalities
0110018
1210018
2310018
3410018
4510018
\n", "
" ], "text/plain": [ " ForecastId ConfirmedCases Fatalities\n", "0 1 100 18\n", "1 2 100 18\n", "2 3 100 18\n", "3 4 100 18\n", "4 5 100 18" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "code", "metadata": { "id": "m7Rp7Bjzaa5Q", "colab_type": "code", "colab": {} }, "source": [ "sub.to_csv('submission', index=False)\n", "from google.colab import files\n", "files.download(\"submission.csv\")" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "XrOaSpx_aq1G", "colab_type": "text" }, "source": [ "Ok so what's the problem with this picture? \n", "Well, we're saying that every single country on every single day has exactly 100 cases of COVID and exactly 18 deaths. BUT, we have proved we can manipulate the submission DF so we've got that going for us which is nice. \n", "\n", "Now, it would also be nice to actually take into account the country and the date, right? " ] }, { "cell_type": "code", "metadata": { "id": "sLQmwW3fa9Vr", "colab_type": "code", "colab": {} }, "source": [ "merged = pd.merge(sub, test, on=\"ForecastId\", how=\"left\")" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "qbFLJFtHbPhf", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "d21018e1-8cf4-4569-9446-5661f6545f46" }, "source": [ "df = merged.copy()\n", "df" ], "execution_count": 9, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ForecastIdConfirmedCasesFatalitiesProvince_StateCountry_RegionDate
0110018NaNAfghanistan2020-03-19
1210018NaNAfghanistan2020-03-20
2310018NaNAfghanistan2020-03-21
3410018NaNAfghanistan2020-03-22
4510018NaNAfghanistan2020-03-23
.....................
126371263810018NaNZimbabwe2020-04-26
126381263910018NaNZimbabwe2020-04-27
126391264010018NaNZimbabwe2020-04-28
126401264110018NaNZimbabwe2020-04-29
126411264210018NaNZimbabwe2020-04-30
\n", "

12642 rows × 6 columns

\n", "
" ], "text/plain": [ " ForecastId ConfirmedCases ... Country_Region Date\n", "0 1 100 ... Afghanistan 2020-03-19\n", "1 2 100 ... Afghanistan 2020-03-20\n", "2 3 100 ... Afghanistan 2020-03-21\n", "3 4 100 ... Afghanistan 2020-03-22\n", "4 5 100 ... Afghanistan 2020-03-23\n", "... ... ... ... ... ...\n", "12637 12638 100 ... Zimbabwe 2020-04-26\n", "12638 12639 100 ... Zimbabwe 2020-04-27\n", "12639 12640 100 ... Zimbabwe 2020-04-28\n", "12640 12641 100 ... Zimbabwe 2020-04-29\n", "12641 12642 100 ... Zimbabwe 2020-04-30\n", "\n", "[12642 rows x 6 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "markdown", "metadata": { "id": "z222uETTbTDT", "colab_type": "text" }, "source": [ "OK great! Now we have the country AND the date with our corecast ID!! So we know we can successfully merge our testing df into our submission df.\n", "\n", "But... our ConfirmedCases and Fatalities are still 100 and 18 without regard to the country..." ] }, { "cell_type": "code", "metadata": { "id": "BlGohA3AcdaA", "colab_type": "code", "colab": {} }, "source": [ "df['Date'] = pd.to_datetime(df['Date'])\n", "df['days_from'] = df['Date'] - (df['Date'].min())\n", "df['days_from'] = df['days_from'] / np.timedelta64(1, 'D')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "VH7y13G-bfNd", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "2df73142-c10a-4328-d70f-00fbbaf589e1" }, "source": [ "df['CC_v2'] = df.apply(lambda x: x['days_from']*x['days_from'] , axis=1)\n", "df['F_v2'] = df.apply(lambda x: x['days_from'] * 2 , axis=1)\n", "df" ], "execution_count": 15, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ForecastIdConfirmedCasesFatalitiesProvince_StateCountry_RegionDatedays_fromCC_v2F_v2
0110018NaNAfghanistan2020-03-190.00.00.0
1210018NaNAfghanistan2020-03-201.01.02.0
2310018NaNAfghanistan2020-03-212.04.04.0
3410018NaNAfghanistan2020-03-223.09.06.0
4510018NaNAfghanistan2020-03-234.016.08.0
..............................
126371263810018NaNZimbabwe2020-04-2638.01444.076.0
126381263910018NaNZimbabwe2020-04-2739.01521.078.0
126391264010018NaNZimbabwe2020-04-2840.01600.080.0
126401264110018NaNZimbabwe2020-04-2941.01681.082.0
126411264210018NaNZimbabwe2020-04-3042.01764.084.0
\n", "

12642 rows × 9 columns

\n", "
" ], "text/plain": [ " ForecastId ConfirmedCases Fatalities ... days_from CC_v2 F_v2\n", "0 1 100 18 ... 0.0 0.0 0.0\n", "1 2 100 18 ... 1.0 1.0 2.0\n", "2 3 100 18 ... 2.0 4.0 4.0\n", "3 4 100 18 ... 3.0 9.0 6.0\n", "4 5 100 18 ... 4.0 16.0 8.0\n", "... ... ... ... ... ... ... ...\n", "12637 12638 100 18 ... 38.0 1444.0 76.0\n", "12638 12639 100 18 ... 39.0 1521.0 78.0\n", "12639 12640 100 18 ... 40.0 1600.0 80.0\n", "12640 12641 100 18 ... 41.0 1681.0 82.0\n", "12641 12642 100 18 ... 42.0 1764.0 84.0\n", "\n", "[12642 rows x 9 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 15 } ] }, { "cell_type": "markdown", "metadata": { "id": "DmARetxSeHn3", "colab_type": "text" }, "source": [ "OK great! Now each country is different! I call this VAMPIRE DATA where the number of people bitten (infected) is logarathmic and the number of deaths is simply linear (because not everyone dies from bites, duh)" ] }, { "cell_type": "code", "metadata": { "id": "CXfzwj18eTmz", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 191 }, "outputId": "e03394d0-691f-4df8-c357-e3244a9d1797" }, "source": [ "spain = df[df['Country_Region'] == 'Spain']\n", "spain.head()" ], "execution_count": 17, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ForecastIdConfirmedCasesFatalitiesProvince_StateCountry_RegionDatedays_fromCC_v2F_v2
8987898810018NaNSpain2020-03-190.00.00.0
8988898910018NaNSpain2020-03-201.01.02.0
8989899010018NaNSpain2020-03-212.04.04.0
8990899110018NaNSpain2020-03-223.09.06.0
8991899210018NaNSpain2020-03-234.016.08.0
\n", "
" ], "text/plain": [ " ForecastId ConfirmedCases Fatalities ... days_from CC_v2 F_v2\n", "8987 8988 100 18 ... 0.0 0.0 0.0\n", "8988 8989 100 18 ... 1.0 1.0 2.0\n", "8989 8990 100 18 ... 2.0 4.0 4.0\n", "8990 8991 100 18 ... 3.0 9.0 6.0\n", "8991 8992 100 18 ... 4.0 16.0 8.0\n", "\n", "[5 rows x 9 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 17 } ] }, { "cell_type": "code", "metadata": { "id": "9Fi5AMC2ezbF", "colab_type": "code", "colab": {} }, "source": [ "import seaborn as sns; sns.set()\n", "import matplotlib.pyplot as plt\n", "\n", "graph_df = df[['days_from', 'CC_v2', 'F_v2']]" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "JJ11cqMDfQIw", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 191 }, "outputId": "7438b937-5c0e-48a4-fb92-b94bf6c1d25b" }, "source": [ "data = pd.melt(graph_df, id_vars=['days_from'], value_vars=['CC_v2','F_v2'])\n", "data.head()" ], "execution_count": 21, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
days_fromvariablevalue
00.0CC_v20.0
11.0CC_v21.0
22.0CC_v24.0
33.0CC_v29.0
44.0CC_v216.0
\n", "
" ], "text/plain": [ " days_from variable value\n", "0 0.0 CC_v2 0.0\n", "1 1.0 CC_v2 1.0\n", "2 2.0 CC_v2 4.0\n", "3 3.0 CC_v2 9.0\n", "4 4.0 CC_v2 16.0" ] }, "metadata": { "tags": [] }, "execution_count": 21 } ] }, { "cell_type": "code", "metadata": { "id": "w26ACBUlfwwP", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 285 }, "outputId": "ff250dcb-9995-41f7-857d-0cdb5ca5c8f8" }, "source": [ "ax = sns.lineplot(x=\"days_from\", y=\"value\",\n", " hue=\"variable\", style=\"variable\", data=data)" ], "execution_count": 22, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\nEFUdsGR30wAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "4C7xthAbf3tL", "colab_type": "text" }, "source": [ "# =================================\n", "# STARTING CONNOR FOR REAL\n", "# =================================\n" ] }, { "cell_type": "markdown", "metadata": { "id": "yHXugnGnhrw8", "colab_type": "text" }, "source": [ "\n", "# STEP 1: GET THAT DATA\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "RS7-uEhshdqr", "colab_type": "code", "colab": {} }, "source": [ "import pandas as pd\n", "import numpy as np\n", "## GLOBAL WK 2\n", "train_file = \"https://raw.githubusercontent.com/danielcaraway/data/master/covid19-global-forecasting-week-2/train.csv\"\n", "test_file = \"https://raw.githubusercontent.com/danielcaraway/data/master/covid19-global-forecasting-week-2/test.csv\"\n", "sub_file = \"https://raw.githubusercontent.com/danielcaraway/data/master/covid19-global-forecasting-week-2/submission.csv\"\n", "\n", "train = pd.read_csv(train_file)\n", "test = pd.read_csv(test_file)\n", "sub = pd.read_csv(sub_file)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "9wOUzHzthxnL", "colab_type": "text" }, "source": [ "# STEP 2: PREP THAT DATA\n", "\n", "* Deal with states + countries\n", "* Deal with datetimes\n", "* Deal with categoricals (LabelEncoder)\n" ] }, { "cell_type": "code", "metadata": { "id": "a_zKr-NojL8W", "colab_type": "code", "colab": {} }, "source": [ "# subset = train.sample(n=500)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Ptt28DTJiD_L", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "40a9030f-a5f8-4d59-a10c-a1ea06c70238" }, "source": [ "# subset" ], "execution_count": 14, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdProvince_StateCountry_RegionDateConfirmedCasesFatalities
21523241NaNBurkina Faso2020-03-020.00.0
1509422847CaliforniaUS2020-03-080.00.0
42486425Inner MongoliaChina2020-02-1568.00.0
1267519204NaNQatar2020-01-250.00.0
36965601GuizhouChina2020-01-221.00.0
.....................
1585124012IowaUS2020-02-020.00.0
1844927936NaNUkraine2020-02-260.00.0
1874628403GibraltarUnited Kingdom2020-01-240.00.0
690610443NaNEswatini2020-03-040.00.0
1365120656NaNSlovenia2020-03-17275.01.0
\n", "

500 rows × 6 columns

\n", "
" ], "text/plain": [ " Id Province_State ... ConfirmedCases Fatalities\n", "2152 3241 NaN ... 0.0 0.0\n", "15094 22847 California ... 0.0 0.0\n", "4248 6425 Inner Mongolia ... 68.0 0.0\n", "12675 19204 NaN ... 0.0 0.0\n", "3696 5601 Guizhou ... 1.0 0.0\n", "... ... ... ... ... ...\n", "15851 24012 Iowa ... 0.0 0.0\n", "18449 27936 NaN ... 0.0 0.0\n", "18746 28403 Gibraltar ... 0.0 0.0\n", "6906 10443 NaN ... 0.0 0.0\n", "13651 20656 NaN ... 275.0 1.0\n", "\n", "[500 rows x 6 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 14 } ] }, { "cell_type": "code", "metadata": { "id": "he2i8tyriiRc", "colab_type": "code", "colab": {} }, "source": [ "# train = subset.copy()\n", "def use_country(state, country):\n", " if pd.isna(state):\n", " return country\n", " else:\n", " return state\n", "\n", "train['Province_State'] = train.apply(lambda x: use_country(x['Province_State'], x['Country_Region']), axis=1)\n", "test['Province_State'] = test.apply(lambda x: use_country(x['Province_State'], x['Country_Region']), axis=1)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "CZ0PINFLkfuG", "colab_type": "code", "colab": {} }, "source": [ "train_d = pd.get_dummies(train)\n", "test_d = pd.get_dummies(test)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "5PKR15uJlgjk", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 427 }, "outputId": "a84a85c2-ba18-4227-f014-8f4a47c8132f" }, "source": [ "train_dummies" ], "execution_count": 47, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdConfirmedCasesFatalitiesProvince_State_AfghanistanProvince_State_AlabamaProvince_State_AlaskaProvince_State_AlbertaProvince_State_AlgeriaProvince_State_AngolaProvince_State_AnhuiProvince_State_Antigua and BarbudaProvince_State_ArgentinaProvince_State_ArizonaProvince_State_ArmeniaProvince_State_Australian Capital TerritoryProvince_State_AzerbaijanProvince_State_BahamasProvince_State_BangladeshProvince_State_BarbadosProvince_State_BeijingProvince_State_BelarusProvince_State_BelizeProvince_State_BhutanProvince_State_Bosnia and HerzegovinaProvince_State_BrazilProvince_State_British ColumbiaProvince_State_BruneiProvince_State_BulgariaProvince_State_Burkina FasoProvince_State_Cabo VerdeProvince_State_CaliforniaProvince_State_CambodiaProvince_State_CameroonProvince_State_Cayman IslandsProvince_State_ChadProvince_State_Channel IslandsProvince_State_ChileProvince_State_ColombiaProvince_State_ColoradoProvince_State_Congo (Brazzaville)...Date_2020-02-17Date_2020-02-18Date_2020-02-19Date_2020-02-20Date_2020-02-21Date_2020-02-22Date_2020-02-23Date_2020-02-24Date_2020-02-25Date_2020-02-26Date_2020-02-27Date_2020-02-28Date_2020-02-29Date_2020-03-01Date_2020-03-02Date_2020-03-03Date_2020-03-04Date_2020-03-05Date_2020-03-06Date_2020-03-07Date_2020-03-08Date_2020-03-09Date_2020-03-10Date_2020-03-11Date_2020-03-12Date_2020-03-13Date_2020-03-14Date_2020-03-15Date_2020-03-16Date_2020-03-17Date_2020-03-18Date_2020-03-19Date_2020-03-20Date_2020-03-21Date_2020-03-22Date_2020-03-23Date_2020-03-24Date_2020-03-25Date_2020-03-26Date_2020-03-27
215232410.00.00000000000000000000000000100000000000...0000000000000010000000000000000000000000
15094228470.00.00000000000000000000000000001000000000...0000000000000000000010000000000000000000
4248642568.00.00000000000000000000000000000000000000...0000000000000000000000000000000000000000
12675192040.00.00000000000000000000000000000000000000...0000000000000000000000000000000000000000
369656011.00.00000000000000000000000000000000000000...0000000000000000000000000000000000000000
......................................................................................................................................................................................................................................................
15851240120.00.00000000000000000000000000000000000000...0000000000000000000000000000000000000000
18449279360.00.00000000000000000000000000000000000000...0000000001000000000000000000000000000000
18746284030.00.00000000000000000000000000000000000000...0000000000000000000000000000000000000000
6906104430.00.00000000000000000000000000000000000000...0000000000000000100000000000000000000000
1365120656275.01.00000000000000000000000000000000000000...0000000000000000000000000000010000000000
\n", "

500 rows × 446 columns

\n", "
" ], "text/plain": [ " Id ConfirmedCases ... Date_2020-03-26 Date_2020-03-27\n", "2152 3241 0.0 ... 0 0\n", "15094 22847 0.0 ... 0 0\n", "4248 6425 68.0 ... 0 0\n", "12675 19204 0.0 ... 0 0\n", "3696 5601 1.0 ... 0 0\n", "... ... ... ... ... ...\n", "15851 24012 0.0 ... 0 0\n", "18449 27936 0.0 ... 0 0\n", "18746 28403 0.0 ... 0 0\n", "6906 10443 0.0 ... 0 0\n", "13651 20656 275.0 ... 0 0\n", "\n", "[500 rows x 446 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 47 } ] }, { "cell_type": "markdown", "metadata": { "id": "iVsj_VlQiE5D", "colab_type": "text" }, "source": [ "# STEP 3: MODEL THAT DATA\n", "* GridSearchCV\n", "* XGBRegressor" ] }, { "cell_type": "code", "metadata": { "id": "UhsWpEMtlwyX", "colab_type": "code", "colab": {} }, "source": [ "from sklearn.model_selection import GridSearchCV \n", "import time \n", "param_grid = {'n_estimators': [1000]}\n", "\n", "def gridSearchCV(model, X_Train, y_Train, param_grid, cv=10, scoring='neg_mean_squared_error'): \n", " start = time.time()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "wXMtglrSmBv-", "colab_type": "code", "colab": {} }, "source": [ "X_Train = train.copy()\n", "y1_Train = X_Train['ConfirmedCases']\n", "y2_Train = X_Train['Fatalities']" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Lb10QHCblxns", "colab_type": "code", "colab": {} }, "source": [ "from xgboost import XGBRegressor\n", "\n", "model = XGBRegressor()\n", "model1 = gridSearchCV(model, X_Train, y1_Train, param_grid, 10, 'neg_mean_squared_error') \n", "model2 = gridSearchCV(model, X_Train, y2_Train, param_grid, 10, 'neg_mean_squared_error')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "U3ik8M6_mthO", "colab_type": "code", "colab": {} }, "source": [ "countries = set(X_Train['Country_Region'])\n", "\n", "#models_C = {}\n", "#models_F = {}\n", "\n", "df_out = pd.DataFrame({'ForecastId': [], 'ConfirmedCases': [], 'Fatalities': []})\n", "\n", "for country in countries:\n", " states = set(X_Train['Province_State'])\n", " # states = X_Train.loc[X_Train.Country == country, :].State.unique()\n", " #print(country, states)\n", " # check whether string is nan or not\n", " for state in states:\n", " X_Train_CS = X_Train.loc[(X_Train.Country == country) & (X_Train.State == state), ['State', 'Country', 'Date', 'ConfirmedCases', 'Fatalities']]\n", " \n", " y1_Train_CS = X_Train_CS.loc[:, 'ConfirmedCases']\n", " y2_Train_CS = X_Train_CS.loc[:, 'Fatalities']\n", " \n", " X_Train_CS = X_Train_CS.loc[:, ['State', 'Country', 'Date']]\n", " \n", " X_Train_CS.Country = le.fit_transform(X_Train_CS.Country)\n", " X_Train_CS['State'] = le.fit_transform(X_Train_CS['State'])\n", " \n", " X_Test_CS = X_Test.loc[(X_Test.Country == country) & (X_Test.State == state), ['State', 'Country', 'Date', 'ForecastId']]\n", " \n", " X_Test_CS_Id = X_Test_CS.loc[:, 'ForecastId']\n", " X_Test_CS = X_Test_CS.loc[:, ['State', 'Country', 'Date']]\n", " \n", " X_Test_CS.Country = le.fit_transform(X_Test_CS.Country)\n", " X_Test_CS['State'] = le.fit_transform(X_Test_CS['State'])\n", " \n", " #models_C[country] = gridSearchCV(model, X_Train_CS, y1_Train_CS, param_grid, 10, 'neg_mean_squared_error')\n", " #models_F[country] = gridSearchCV(model, X_Train_CS, y2_Train_CS, param_grid, 10, 'neg_mean_squared_error')\n", " \n", " model1 = XGBRegressor(n_estimators=1000)\n", " model1.fit(X_Train_CS, y1_Train_CS)\n", " y1_pred = model1.predict(X_Test_CS)\n", " \n", " model2 = XGBRegressor(n_estimators=1000)\n", " model2.fit(X_Train_CS, y2_Train_CS)\n", " y2_pred = model2.predict(X_Test_CS)\n", " \n", " df = pd.DataFrame({'ForecastId': X_Test_CS_Id, 'ConfirmedCases': y1_pred, 'Fatalities': y2_pred})\n", " df_out = pd.concat([df_out, df], axis=0)\n", " # Done for state loop\n", "# Done for country Loop" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "TVJbKWdBoeH_", "colab_type": "text" }, "source": [ "# SIDEQUEST: More on XGBoost" ] }, { "cell_type": "code", "metadata": { "id": "gX7RGdhno2_T", "colab_type": "code", "colab": {} }, "source": [ "b_train = train.copy()\n", "b_test = test.copy()\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "9doHzVOSsaA8", "colab_type": "text" }, "source": [ "### California Test" ] }, { "cell_type": "code", "metadata": { "id": "rH93AYPNuz-w", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "cdfb8665-e7e8-4ec5-ec45-c8f98146bbf0" }, "source": [ "b_train['Date'].min()" ], "execution_count": 82, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Timestamp('2020-01-22 00:00:00')" ] }, "metadata": { "tags": [] }, "execution_count": 82 } ] }, { "cell_type": "code", "metadata": { "id": "AfrxblunsWC6", "colab_type": "code", "colab": {} }, "source": [ "b_train_ca = b_train[b_train['Province_State'] == 'California']\n", "b_train = b_train_ca.copy()\n", "b_train['Date'] = pd.to_datetime(b_train['Date'])\n", "\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4aPJAXAzu9Ak", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "43b6e1b6-e24f-4b56-e4e3-7b983a575e59" }, "source": [ "b_train['days_from'] = b_train['Date'] - (b_train['Date'].min())\n", "b_train['days_from'] = b_train['days_from'] / np.timedelta64(1, 'D')\n", "b_train" ], "execution_count": 86, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdProvince_StateCountry_RegionDateConfirmedCasesFatalitiesdays_from
1504822801CaliforniaUS2020-01-220.00.00.0
1504922802CaliforniaUS2020-01-230.00.01.0
1505022803CaliforniaUS2020-01-240.00.02.0
1505122804CaliforniaUS2020-01-250.00.03.0
1505222805CaliforniaUS2020-01-260.00.04.0
........................
1510922862CaliforniaUS2020-03-232108.039.061.0
1511022863CaliforniaUS2020-03-242538.050.062.0
1511122864CaliforniaUS2020-03-252998.065.063.0
1511222865CaliforniaUS2020-03-263899.081.064.0
1511322866CaliforniaUS2020-03-274657.094.065.0
\n", "

66 rows × 7 columns

\n", "
" ], "text/plain": [ " Id Province_State ... Fatalities days_from\n", "15048 22801 California ... 0.0 0.0\n", "15049 22802 California ... 0.0 1.0\n", "15050 22803 California ... 0.0 2.0\n", "15051 22804 California ... 0.0 3.0\n", "15052 22805 California ... 0.0 4.0\n", "... ... ... ... ... ...\n", "15109 22862 California ... 39.0 61.0\n", "15110 22863 California ... 50.0 62.0\n", "15111 22864 California ... 65.0 63.0\n", "15112 22865 California ... 81.0 64.0\n", "15113 22866 California ... 94.0 65.0\n", "\n", "[66 rows x 7 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 86 } ] }, { "cell_type": "code", "metadata": { "id": "SiOUvGMWo8sk", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "ce9a78a3-1d90-461e-a58b-bbb9a2435a02" }, "source": [ "b_train_y1 = b_train['ConfirmedCases']\n", "b_train_y2 = b_train['Fatalities']\n", "# b_train_X = b_train.drop(['ConfirmedCases','Fatalities'], axis=1)\n", "b_train_X = b_train.drop(['Fatalities', 'Date'], axis=1)\n", "b_train_X" ], "execution_count": 88, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdProvince_StateCountry_RegionConfirmedCasesdays_from
1504822801CaliforniaUS0.00.0
1504922802CaliforniaUS0.01.0
1505022803CaliforniaUS0.02.0
1505122804CaliforniaUS0.03.0
1505222805CaliforniaUS0.04.0
..................
1510922862CaliforniaUS2108.061.0
1511022863CaliforniaUS2538.062.0
1511122864CaliforniaUS2998.063.0
1511222865CaliforniaUS3899.064.0
1511322866CaliforniaUS4657.065.0
\n", "

66 rows × 5 columns

\n", "
" ], "text/plain": [ " Id Province_State Country_Region ConfirmedCases days_from\n", "15048 22801 California US 0.0 0.0\n", "15049 22802 California US 0.0 1.0\n", "15050 22803 California US 0.0 2.0\n", "15051 22804 California US 0.0 3.0\n", "15052 22805 California US 0.0 4.0\n", "... ... ... ... ... ...\n", "15109 22862 California US 2108.0 61.0\n", "15110 22863 California US 2538.0 62.0\n", "15111 22864 California US 2998.0 63.0\n", "15112 22865 California US 3899.0 64.0\n", "15113 22866 California US 4657.0 65.0\n", "\n", "[66 rows x 5 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 88 } ] }, { "cell_type": "code", "metadata": { "id": "Tq_rsp9-pbce", "colab_type": "code", "colab": {} }, "source": [ "## CA TEST\n", "# b_train_X_ca = b_train_X[b_train_X['Province_State'] == 'California']\n", "# b_train_X = b_train_X_ca.copy()\n", "\n", "b_train_X_d = pd.get_dummies(b_train_X)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "2VmoQP2mrivv", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "08777dad-c8c7-4ab7-8bd9-7bd0b7619e75" }, "source": [ "# b_train_X_d['']" ], "execution_count": 80, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdDateConfirmedCasesProvince_State_CaliforniaCountry_Region_US
15048228012020-01-220.011
15049228022020-01-230.011
15050228032020-01-240.011
15051228042020-01-250.011
15052228052020-01-260.011
..................
15109228622020-03-232108.011
15110228632020-03-242538.011
15111228642020-03-252998.011
15112228652020-03-263899.011
15113228662020-03-274657.011
\n", "

66 rows × 5 columns

\n", "
" ], "text/plain": [ " Id Date ... Province_State_California Country_Region_US\n", "15048 22801 2020-01-22 ... 1 1\n", "15049 22802 2020-01-23 ... 1 1\n", "15050 22803 2020-01-24 ... 1 1\n", "15051 22804 2020-01-25 ... 1 1\n", "15052 22805 2020-01-26 ... 1 1\n", "... ... ... ... ... ...\n", "15109 22862 2020-03-23 ... 1 1\n", "15110 22863 2020-03-24 ... 1 1\n", "15111 22864 2020-03-25 ... 1 1\n", "15112 22865 2020-03-26 ... 1 1\n", "15113 22866 2020-03-27 ... 1 1\n", "\n", "[66 rows x 5 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 80 } ] }, { "cell_type": "code", "metadata": { "id": "Vv0a2ZuWocvS", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "00b4e020-13f5-4989-ca11-5db129c0c78e" }, "source": [ "import xgboost as xgb\n", "from sklearn.datasets import load_boston\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.model_selection import cross_val_score, KFold\n", "from sklearn.metrics import mean_squared_error\n", "import matplotlib.pyplot as plt \n", "import numpy as np\n", " \n", "boston = load_boston()\n", "# x, y = boston.data, boston.target\n", "\n", "x,y = b_train_X_d, b_train_y1\n", "# x,y = b_train_X_d, b_train_y2\n", "xtrain, xtest, ytrain, ytest=train_test_split(x, y, test_size=0.15)\n", "\n", "xgbr = xgb.XGBRegressor()\n", "print(xgbr)\n", "\n", "xgbr.fit(xtrain, ytrain)\n", " \n", "# - cross validataion \n", "scores = cross_val_score(xgbr, xtrain, ytrain, cv=5)\n", "print(\"Mean cross-validation score: %.2f\" % scores.mean())\n", "\n", "kfold = KFold(n_splits=10, shuffle=True)\n", "kf_cv_scores = cross_val_score(xgbr, xtrain, ytrain, cv=kfold )\n", "print(\"K-fold CV average score: %.2f\" % kf_cv_scores.mean())\n", " \n", "ypred = xgbr.predict(xtest)\n", "mse = mean_squared_error(ytest, ypred)\n", "print(\"MSE: %.2f\" % mse)\n", "print(\"RMSE: %.2f\" % np.sqrt(mse))\n", "\n", "x_ax = range(len(ytest))\n", "plt.scatter(x_ax, ytest, s=5, color=\"blue\", label=\"original\")\n", "plt.plot(x_ax, ypred, lw=0.8, color=\"red\", label=\"predicted\")\n", "plt.legend()\n", "plt.show()\n" ], "execution_count": 94, "outputs": [ { "output_type": "stream", "text": [ "XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", " colsample_bynode=1, colsample_bytree=1, gamma=0,\n", " importance_type='gain', learning_rate=0.1, max_delta_step=0,\n", " max_depth=3, min_child_weight=1, missing=None, n_estimators=100,\n", " n_jobs=1, nthread=None, objective='reg:linear', random_state=0,\n", " reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n", " silent=None, subsample=1, verbosity=1)\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "Mean cross-validation score: 0.89\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n", "[23:23:46] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n" ], "name": "stdout" }, { "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n", "/usr/local/lib/python3.6/dist-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n", " if getattr(data, 'base', None) is not None and \\\n" ], "name": "stderr" }, { "output_type": "stream", "text": [ "K-fold CV average score: 0.72\n", "MSE: 7067.87\n", "RMSE: 84.07\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de3wU9bn48c+TcIlcBIQEkaChggQI\nIDFcg1hFvAtq7VHbCvZ4im3BXqwKtlYr6nlhRYq2lVOqIp5j1V9VFK0vi0psRQREShGINJEihHIJ\nFJC7QL6/P76zmIRsspvs7Hdn9nm/Xnlld2Z25skSnsw+35nnK8YYlFJKhUuG6wCUUkolniZ3pZQK\nIU3uSikVQprclVIqhDS5K6VUCDVzHQBAp06dTF5enuswlFIqUD766KMdxpjsutalRHLPy8tj+fLl\nrsNQSqlAEZHPoq3TsoxSSoWQJnellAohTe5KKRVCKVFzV0qF05EjR6ioqODQoUOuQwm0rKwscnNz\nad68ecyv0eSulPJNRUUFbdu2JS8vDxFxHU4gGWPYuXMnFRUVdO/ePebXaVlGKeWbQ4cO0bFjR03s\nTSAidOzYMe5PP5rclVK+0sTedI15DzW5J0JVFRw86DoKpZQ6TpN7IkyZAnff7ToKpZSP3n33Xa64\n4goA5s+fz7Rp06Juu3v3bh5//PG4j/GLX/yC6dOnNzrG6jS5N9WSJfDuu7BqletIlFKNcOzYsbhf\nM2bMGKZMmRJ1fWOTeyJpcm+KQ4dg0iR47jnYscN1NEqpWjZs2EB+fj7f/OY36d27N9deey0HDhwg\nLy+PyZMnU1hYyB//+EcWLFjAsGHDKCws5Otf/zr79u0D4M033yQ/P5/CwkJefvnl4/t9+umnmTRp\nEgDbtm3j6quvZsCAAQwYMIDFixczZcoUPv30U84++2zuuOMOAB5++GEGDRpE//79uffee4/v68EH\nH+Sss85ixIgRrFu3LmE/u14K2RT33Qc33ghnngmnnAI7d0LHjq6jUkpVs27dOp588kmKi4v5z//8\nz+Nn1B07dmTFihXs2LGDa665hrfffpvWrVvz0EMPMWPGDO68806+853vsHDhQnr06MF1111X5/5/\n8IMfcN555zFv3jyOHTvGvn37mDZtGqtXr2blypUALFiwgLKyMpYtW4YxhjFjxvDXv/6V1q1b8/zz\nz7Ny5UqOHj1KYWEh55xzTkJ+bk3ujfXhh/DBB7BwoX3ety+sWQMjR7qNS6lUdsklif2U26kTvPlm\nvZt069aN4uJiAL71rW/x2GOPARxP1kuWLGHt2rXHt/niiy8YNmwYn3zyCd27d6dnz57HXzt79uwT\n9r9w4UKeeeYZADIzM2nXrh27du2qsc2CBQtYsGABAwcOBGDfvn2UlZWxd+9err76alq1agXYck+i\naHJvjMOHYeJEePZZyPAqWwUFsHq1Jnel6tNAIvZD7csII89bt24N2JuERo8ezXPPPVdju8hZdyIY\nY7jrrru45ZZbaiyfOXNmwo5Rm9bcG+P+++H668H7iw58mdyVUill48aNfPDBBwD84Q9/YMSIETXW\nDx06lPfff5/y8nIA9u/fzz/+8Q/y8/PZsGEDn376KcAJyT9i1KhRzJo1C7CDs3v27KFt27bs3bv3\n+DYXX3wxTz311PFa/ubNm9m+fTsjR47klVde4eDBg+zdu5fXXnstYT+3Jvd4rVgB770HP/xhzeWR\nsoxSKqX06tWL3/72t/Tu3Ztdu3bxve99r8b67Oxsnn76aW644Qb69+9/vCSTlZXF7Nmzufzyyyks\nLCQnJ6fO/T/66KOUlJTQr18/zjnnHNauXUvHjh0pLi6moKCAO+64g4suuohvfOMbDBs2jH79+nHt\ntdeyd+9eCgsLue666xgwYACXXnopgwYNStjPLcaYhO2ssYqKikwgJuv44gs491yYOxfy809cP3Cg\nTf56R55SAJSWltK7d29nx9+wYQNXXHEFq0Pwqbqu91JEPjLGFNW1vZ65x+O//xuuvbbuxA5w6qmw\ndWtyY1JKqTo0mNxFpJeIrKz29bmI/EhEThGRt0SkzPvewdteROQxESkXkVUiUuj/j5EEK1fCO+/A\nbbdF30br7kqllLy8vFCctTdGg8ndGLPOGHO2MeZs4BzgADAPmAK8Y4zpCbzjPQe4FOjpfU0AZvkR\neFIdOQLf/S787neQmRl9O03uSqkUEW9ZZhTwqTHmM2AsMNdbPhe4yns8FnjGWEuA9iLSJSHRujJt\nGowdC3361Lm6qgq2bQPTt0AHVZVSKSHe69yvByLXA3U2xmzxHm8FOnuPuwKbqr2mwlu2hSD6+GN7\nbe5f/lLn6qoqOP98WLwYzh/Smz9XrUWHU5VSrsV85i4iLYAxwB9rrzP2kpu4LrsRkQkislxElldW\nVsbz0uQ5cgRuucWWY5rV/XewstIm9qNHoWRpK47uPWgzvlJKORRPWeZSYIUxZpv3fFuk3OJ93+4t\n3wx0q/a6XG9ZDcaY2caYImNMUXZ2dvyRJ8PDD8Nll9laehQ5OTB8uM39w4dDszPPgI0bkxikUqqp\nLrvsMnbv3l3vNvfccw9vv/12o/ZfvV1wssRTlrmBL0syAPOB8cA07/ur1ZZPEpHngSHAnmrlm+BY\nswZeew3++td6NxOBkhJ7Bp+TA/Jzb1A1Ly85cSqlGs0YgzGGN954o8Ftp06dmoSIEiemM3cRaQ2M\nBl6utngaMFpEyoALvecAbwDrgXLg98D3ExZtshw9assx//M/EMNs4xkZ0Lmzd+9SgQ6qKpVKZsyY\nQUFBAQUFBcycOZMNGzbQq1cvxo0bR0FBAZs2bSIvL48dXkOz+++/n169ejFixAhuuOGG45Nn3HTT\nTbz44ouAvcTy3nvvpbCwkH79+vHJJ58AsGzZMoYNG8bAgQMZPnx4Qlv4xiumM3djzH6gY61lO7FX\nz9Te1gATExKdKzNmwOjRMGBA/K8tKIA//SnxMSmVJqqqqn0SbuLVCR999BFz5sxh6dKlGGMYMmQI\n5513HmVlZcydO5ehQ4fW2P7DDz/kpZde4u9//ztHjhyptwVvp06dWLFiBY8//jjTp0/niSeeID8/\nn/fee49mzZrx9ttv89Of/pSXXnqpaT9EI2lXyNpKS+Hllxssx0R11lng8K+1UkFW/eqz4cNtyTOj\nCffRL1q0iKuvvvp4B8hrrrmG9957jzPOOOOExA7w/vvvM3bsWLKyssjKyuLKK6+Muu9rrrkGgHPO\nOef4RB579uxh/PjxlJWVISIcOXKk8cE3kbYfqO7YMZgwAWbNghYtGrePFi3sfo4eTWxsSqWB6lef\nLV5sn/shkuybomXLloDt4X7U+//+85//nPPPP5/Vq1fz2muvcejQoSYfp7E0uVc3cyZ89au2AVhT\n9OgBXptQpVTsal99FqURY8zOPfdcXnnlFQ4cOMD+/fuZN28e5557btTti4uLjyflffv28frrr8d1\nvD179tC1a1fATsXnkpZlIv7xD3jhBdvOt6kig6q9ejV9X0qlkROuPmtizb2wsJCbbrqJwYMHA/Bf\n//VfdOjQIer2gwYNYsyYMfTv35/OnTvTr18/2rVrF/Px7rzzTsaPH88DDzzA5Zdf3rTgm0hb/oIt\no4waBdOnQ1Gd3TPjM2+evbP1nnuavi+lAsx1y9/G2LdvH23atOHAgQOMHDmS2bNnU1jovv9hvC1/\n9cwd4Ne/tp8BE5HYwU7cEWXWFqVUapswYQJr167l0KFDjB8/PiUSe2Noci8vt3OhJqIcE3HmmXa/\nSqnA+cMf/uA6hIRI7wHVqip7dcxvfgNZWYnbb2amHRE6fDhx+1QqoFKh9Bt0jXkP0zu5P/64LcUM\nGZL4fefn20FapdJYVlYWO3fu1ATfBMYYdu7cSVacJ6DpW5ZZvx6efjqx5ZjqIhN39Ovnz/6VCoDc\n3FwqKipI2c6vAZGVlUVubm5cr0nP5B4pxzz2GJx0kj/H6NvX3oWhVBpr3rw53bt3dx1GWkrPsszv\nfmf7xgwf7t8xdMo9pZRD6XfmvmEDPPGEf+WYiNNP177uSiln0uvM3Rhbjnn0UWjVyt9jidhj7N/v\n73GUUqoO6ZXcf/97O8n1iBHJOV6fPrbLpFJKJVn6lGU2brSTb/hdjqmub19bd0/Una9KKRWj9Dhz\nN8bOrPSrX0ECWn3GTAdVlVKOpEdynzPHtgQ477zkHleTu1LKkVjnUG0vIi+KyCciUioiw0TkFBF5\nS0TKvO8dvG1FRB4TkXIRWSUibrvuVFTYxmDTpjW8baJ17gzbtiX/uEqptBfrmfujwJvGmHxgAFAK\nTAHeMcb0BN7xngNcCvT0viYAsxIacTyMge9+Fx55BNq0Sf7xRaBdO9i9O/nHVkqltQaTu4i0A0YC\nTwIYY74wxuwGxgJzvc3mAld5j8cCzxhrCdBeRLokPPJYPPMMdOsGF1zg5PCAHVRds8bd8ZVSaSmW\nM/fuQCUwR0T+JiJPiEhroLMxZou3zVags/e4K7Cp2usrvGU1iMgEEVkuIst96Tvxr3/ZAdRf/jLx\n+46H1t2VUg7EktybAYXALGPMQGA/X5ZgADC25Vtcbd+MMbONMUXGmKLs7Ox4XhrLzm055uGHoW3b\nxO47XprclVIOxJLcK4AKY8xS7/mL2GS/LVJu8b5v99ZvBrpVe32utyx5nn3WDmaOHp3Uw9ZJyzJK\nKQcaTO7GmK3AJhGJzPY8ClgLzAfGe8vGA696j+cD47yrZoYCe6qVb/y3daudC3X69KQdsl6nnAK7\ndrmOQimVZmK9Q/VW4FkRaQGsB76N/cPw/0TkZuAz4D+8bd8ALgPKgQPetslhDHzve/ayxzhmLPdd\ndjZs326nc1dKqSSIKbkbY1YCdd1DP6qObQ0wsYlxNc4LL0CHDnDJJU4OH1Wk7u7yqh2lVFoJzx2q\n27bZM/YZM1xHciIdVFVKJVl4kvukSfDgg9C+vetITlRQoIOqSqmkCkdy/+Mfbe/0yy93HUnd+vTR\n5K6USqrgt/ytrIQHHoCSEteRRNemDezbZwd8RVxHo5RKA8E/c7/1Vrj/fnvJYSrr1s02MVPKlWPH\nXEegkijYyX3HDjtX6ZgxriNpmA6qKpcWLYJvJ++qZOVesJN7p07ue8fESgdVlUslJbBwoS0NqrQQ\n7OQeJJEp95Ry4f337cnQxo2uI1FJosk9WfLzdbJs5caxY7BlC1x3nU3yKi1ock+WrCw4ckQHtVTy\nrVljy4LFxZrc04gm92T6ylfgn/90HYVKN++/bxP7oEHw4Yeuo1FJosk9mXRQVbkQSe4nnQTNm8Pn\nn7uOSCWBJvdk0kFV5cLq1fbEAmDoUFiyxG08Kik0uSeTXuuuku1f/7IT12Rm2udad08bmtyTqUcP\nKCtzHYVKJ5GSTIQm97ShyT2Zmje3vWWOHHEdiUoXtZN7586wcyccPeouJpUUmtyT7ayz9OxdJc/S\npTBkSM1l/fvDqlVu4lFJE1NyF5ENIvKxiKwUkeXeslNE5C0RKfO+d/CWi4g8JiLlIrJKRAr9/AEC\nRwdVVbLs32/bDbRpU3O5lmbSQjxn7ucbY842xkSm25sCvGOM6Qm84z0HuBTo6X1NAGYlKthQ0EFV\nlSzLlsHgwScu1+SeFppSlhkLzPUezwWuqrb8GWMtAdqLSJcmHCdcNLmrZFm0qGa9PaJ3b1i7VpuI\nhVysyd0AC0TkIxGZ4C3rbIzZ4j3eCnT2HncFNlV7bYW3rAYRmSAiy0VkeWVlZSNCD6i8PNiwwXUU\nKh3UHkyNyMiw8wtoE7FQizW5jzDGFGJLLhNFZGT1lcYYg/0DEDNjzGxjTJExpig7OzuelwZbRga0\nbAkHD7qORIVZpFlYbm7d67U0E3oxJXdjzGbv+3ZgHjAY2BYpt3jft3ubbwa6VXt5rrdMReTnwyef\nuI5ChdmaNXbwPhpN7qHXYHIXkdYi0jbyGLgIWA3MB8Z7m40HXvUezwfGeVfNDAX2VCvfKNC6u/Jf\ntJJMhDYRC71Yztw7A4tE5O/AMuBPxpg3gWnAaBEpAy70ngO8AawHyoHfA99PeNRBp8ld+a2h5N6q\nFTRrpk3EQqxZQxsYY9YDA+pYvhMYVcdyA0xMSHRhVVAAjz3mOgoVZqtXQ79+9W8TaSJ20UXJiUkl\nld6h6sJpp9mGTkr5oXazsGi07h5qmtxdELF3DepHYuWHhkoyEZrcQ02Tuyt9+9obSZRKtFiT+6mn\nwo4d2kQspDS5u6KDqsovdTULi2bAAG0iFlKa3F3R5K78EK1ZWDRamgktTe6u9O2r86mqxIvWLCwa\nTe6hpcndlexsSKeeOio5Yq23R/TuDaWl/sWjnNHk7lLHjnZAS6lEiTe5Z2TY/jPaRCx0NLm7VFCg\npRmVOFVV9hr3aM3CotHSTChpcndJB1VVIjXULCwaTe6hpMndJT1zV4kUb0kmQpuIhZImd5f69NEz\nd5U40WZeakirVrZVgd4xHSqa3F1q187+h9LpzlQifPxx1GZhVVWwbVs9v2qRJmIqNDS5u3baaXbG\nHKWaop5mYVVVcP75dpz1q1+1z0+gdffQ0eTumg6qqkSop95eWQmLF9sWMosXR7m9QpN76Ghyd00H\nVVUi1JPcc3Jg+HA7N8fw4fb5CbSJWOhocnetb189c1dNV0+zMBEoKYGKCnj3Xfu8Tv37axOxEIk5\nuYtIpoj8TURe9553F5GlIlIuIi+ISAtveUvvebm3Ps+f0EOid29t/auaZv9+W0hv2zbqJhkZtiQf\nNbGDlmZCJp4z9x8C1ZtQPAT8yhjTA9gF3OwtvxnY5S3/lbediqZVKzh0KMool1IxWLYs9ha/9dHk\nHioxJXcRyQUuB57wngtwAfCit8lc4Crv8VjvOd76Ud72Kpq8PPjsM9dRqKBq7M1LtfXpo58iQyTW\nM/eZwJ1A5PSyI7DbGBMZfakAunqPuwKbALz1e7ztVTQ6qKqaIlHJXZuIhUqDyV1ErgC2G2M+SuSB\nRWSCiCwXkeWV6d76VgdVVWM1tllYNFqaCY1YztyLgTEisgF4HluOeRRoLyLNvG1ygc3e481ANwBv\nfTtgZ+2dGmNmG2OKjDFF2dnZTfohAk+vdVeN1dhmYdGMGKHJPSQaTO7GmLuMMbnGmDzgemChMeab\nQAlwrbfZeOBV7/F87zne+oXG6P319TrrLFi3znUUKogSVZKJ0CZiodGU69wnA7eJSDm2pv6kt/xJ\noKO3/DZgStNCTAMtWtiP13oDiYpXopN7pInY3r2J26dyolnDm3zJGPMu8K73eD1wwmSNxphDwNcT\nEFt66dkTPv0UevVyHYkKknqahTVapInY6NGJ3a9KKr1DNVXooKqK15YttpdAHc3CmkQHVUNBk3uq\n0EFVFa9El2QiNLmHgib3VKHJXcXLr+SuTcRCQZN7qvjKV2D9etdRqCBZsiQxbQfq0q+freerwNLk\nnioyM21P1sOHXUeigiCGZmFNoqWZwNPknkp69dLr3VVsli2DwSdcrJY4xcV2TlYVWJrcU4nW3VWs\n/Kq3R2gTscDT5J5KNLmrWPmd3LWJWOAFOrk3OKN70GhyV7GINAvr1s3f42jdPdACm9xjmtE9aLp1\ng02bXEehUl2im4VFo8k90AKb3GOa0T1oRGxvj/37XUeiUpnfJZmIwYPtwK0KpMAm95hmdA8iHchS\nDUlWctcmYoEW2OQe84zuQaN1d9UQP5qFRRNpIqYCJ7DJHWKc0T1oNLmr+vjVLCwarbsHVqCTeyjp\nfKqqPskqyURocg8sTe6pJicHtm51HYVKVclO7l262KsVtIlY4GhyTzUi0L497NrlOhKVipYu9a9Z\nWDT9+2sTsQDS5J6KtDSj6nLgABw75l+zsGi0NBNIDSZ3EckSkWUi8ncRWSMi93nLu4vIUhEpF5EX\nRKSFt7yl97zcW5/n748QQjqoqurid7OwaDS5B1IsZ+6HgQuMMQOAs4FLRGQo8BDwK2NMD2AXcLO3\n/c3ALm/5r7ztVDz0zF3VJdn19gi99yKQGkzuxtrnPW3ufRngAuBFb/lc4Crv8VjvOd76USKhuljR\nfzqfqqqLq+SekQFdu2prjICJqeYuIpkishLYDrwFfArsNsZEhtArgK7e467AJgBv/R6gYx37nCAi\ny0VkeWUoegckUIcO8O9/h6gjmmqyqirYvNn/ZmHRaGkmcGJK7saYY8aYs4FcYDCQ39QDG2NmG2OK\njDFF2dnZTd1d+Jx6Kmzf7joKlSrWrrXlEVc0uQdOXFfLGGN2AyXAMKC9iDTzVuUCm73Hm4FuAN76\ndsDOhESbTnRQVVW3aJGbkkyENhELnFiulskWkfbe45OA0UApNslf6202HnjVezzfe463fqExWl+I\nmw6qqupc1dsjWrWytfeQNBEL3VwQdYjlzL0LUCIiq4APgbeMMa8Dk4HbRKQcW1N/0tv+SaCjt/w2\nYEriw04DOqiqqktms7BoQtJELJRzQdShWUMbGGNWAQPrWL4eW3+vvfwQ8PWERJfO+vTRM3dlRZqF\nNWvwv6u/InX30aPdxtFEdc0F0bmz66gST+9QTVVt2thJO8L8uVHFxnVJJiIkg6qhnQuiFk3uqez0\n0/XaYpU6yT0kTcRCOxdELZrcU5kOqipw0ywsmn79QtFELJRzQdSiyT2V6aCqctUsLJqQlGbSgSb3\nVKbXuitXzcKi0eQeGJrcU1mvXvDJJ66jUC6lSr09om9fLRUGhCb3VJaVBUeO2I/lKj2lWnLXJmKB\nock91Z15Jvzzn66jUC64bhYWjZZmAkGTe6rTQdX05bpZWDQjRmhyDwBN7qlOB1XTV6qVZCK0iVgg\naHJPdZrc01eqJvdWrSAzMzRNxMJKk3uq69EDystdR6FcSIVmYdEMGWJvrlIpS5N7qmvWzN5G98UX\nriNRybR1K3Tq5L5ZWDQ6qJryNLkHwVlnQVmZ6yhUMqVqSSZCk3vK0+QeBFp3Tz+pnty7dLHTQAb1\nHoxnnw39DYKa3INAk3v6+eADOzlGKgtqE7FNm2DqVLj11lC31NbkHgTaHTK9HDhgb2BKlWZh0RQX\n27ldg2byZHj0UcjLg3nzXEfjm1jmUO0mIiUislZE1ojID73lp4jIWyJS5n3v4C0XEXlMRMpFZJWI\nFPr9Q4TeGWfAhg2uo1DJkmrNwqIJYt190SJ7Cecll8CDD9oz+IMHXUfli1jO3I8CPzHG9AGGAhNF\npA92btR3jDE9gXf4cq7US4Ge3tcEYFbCo043GRnQsmVofwlVLaleb48IWhOxY8fgjjtgxgz7PCcH\nxo2DRx5xG5dPGkzuxpgtxpgV3uO9QCnQFRgLzPU2mwtc5T0eCzxjrCVAexHpkvDI003v3lBa6joK\nlQxBSe5BayL21FNw7rnQs+eXyyZNsqWZigp3cfkkrpq7iORhJ8teCnQ2xmzxVm0FIlPMdgWq/2tX\neMtq72uCiCwXkeWVlZVxhp2GdFA1PaRqs7BoglKa2b0bfv1ruPvumstbtLDlmTvvdBOXj2JO7iLS\nBngJ+JEx5vPq64wxBohr2NkYM9sYU2SMKcrOzo7npelJB1XTQ6o2C4smKMl96lS47TY4+eQT111y\nCezbF8zB4XrElNxFpDk2sT9rjHnZW7wtUm7xvm/3lm8Gqp925HrLVFPomXt6CEpJJiIITcRKS22M\n48ZF3+aRR+zZe1Cv269DLFfLCPAkUGqMmVFt1XxgvPd4PPBqteXjvKtmhgJ7qpVvVGN16WI/rqtw\nC1pyb93a1t5TtYmYMfaMffp0G2c0PXvaVsZz5iQvNp/FcuZeDNwIXCAiK72vy4BpwGgRKQMu9J4D\nvAGsB8qB3wPfT3zYaUjEXvf8+ecNb6uCK5WbhUWTyk3EXn8dsrNjuyHs7rttXX73bv/jSoIGuxIZ\nYxYBEmX1qDq2N8DEJsal6hKpuw8b5joS5YdUbxYWTaTufuGFriOp6fBhuOce+NOfYtv+5JPhxz+2\n9fkZMxrePsXpHapBooOq4Ra0kkxEqg6qzpwJ110Hp50W+2vGjbP1+RBcdqzJPUh0UDXcgprcTzsN\ntm1LrcHILVvg+eftmXg8MjLs4OpPfhL4vjOa3INE51MNtyVLUr9ZWDT9+6dWE7G77oL77rN3dsdr\nyBBbp4+1nJOiNLkHSadOsGOH6yiUHw4csGe+qd4sLJpUKs0sXWrHL668svH7mDbN1usPH05cXEmm\nyT1oNMGH04cfwqBBrqNovFRJ7lVVtqQyY4a9wqyxunSB//gP2z0yoDS5B40OqoZTUOvtEanSROx/\n/xeKihJzl++PfwzPPWfr9wGkyT1odFA1nIKe3DMy7MCqywZce/fawdBf/CIx+2vZ0tbt77orMftL\nMk3uQaODquFTVWWT4umnu46kaVyXZh54wHZ5bN8+cfu88kp7JVCq3qRVD03uQaPJPXyC1iwsGpfJ\nvawM/vIXuPnmxO5XxNbvb7/d/hEOEE3uQXPyyfbjZ8CvwVXVBL0kEzF4sLsz3Ntvh4cfhszMxO+7\nd29bx/+//0v8vn2kyT2IunYN7CCPqkNYkrurJmJ//jO0amUn4vDLvffaen6qNkirgyb3INJB1XAJ\nYrOwaJLdROzIEfjpT+GXv/T3OO3bw8SJdmKPgNDkHkRadw+PoDYLiybZdfff/AbGjk3OzFU332zr\n+uXl/h8rATS5B5GeuYdHWEoyEclM7tu3w9y5dtLrZMjMtJ8QfvKT5ByviTS5B5FOlh0eYUvuyWwi\ndvfd9uukk/w/VsS559r6/p//nLxjNpIm9yA66STb8yJgl2apOgS5WVg0/fr530RsxQpYvx6+9jV/\nj1OXX/4SfvYzW+9PYZrcgyovDz77zHUUqimC3iwsGr9LM5Gp85raP6axunWzdf7f/jb5x45DLHOo\nPiUi20VkdbVlp4jIWyJS5n3v4C0XEXlMRMpFZJWIFPoZfFrTQdXgC3qzsGj8Tu7PP29///v39+8Y\nDbn9dnj6aaisdBdDA2I5c38auKTWsinAO8aYnsA73nOAS4Ge3tcEYFZiwlQn0EHV4AtbvT3CzyZi\n+/fbdrxTp/qz/1iddJKt9//sZ27jqEeDyd0Y81fg37UWjwXmeo/nAldVW/6MsZYA7UWkS6KCVdVo\ncg++sCb3zEzbMtePJmLTpj65uCEAAAlMSURBVMF3vgMdOyZ+3/H62tds3X/FCteR1KmxNffOxpjI\nLZJbgc7e467ApmrbVXjLVKL17Gn7aahgCkuzsGj8KM1s2GCvUvnudxO738aK9J1J0Sn5mjygaowx\nQNw/mYhMEJHlIrK8MoXrVimrRQubII4edR2JaozSUntJa1j5kdxvv92euafSDV/9+9umby+84DqS\nEzQ2uW+LlFu879u95ZuB6reK5XrLTmCMmW2MKTLGFGVnZzcyjDTXo0dg7pZTtYS1JBMxZAgsW5a4\n/ZWU2LPjCy5I3D4TZepU+0dn/37XkdTQ2OQ+HxjvPR4PvFpt+TjvqpmhwJ5q5RuVaFp3D66wJ/fW\nrW3ZYt++pu/r6FGYPBmmT2/6vvzQsaMdB3joIdeR1BDLpZDPAR8AvUSkQkRuBqYBo0WkDLjQew7w\nBrAeKAd+D3zfl6iVpck9uFatcnspXzIkqonY734HF18M3bs3fV9+ueUWePNNOy6QIhosXhljboiy\nalQd2xpgYlODUjEqKIBnn3UdhYrXtm3hahYWTaTuPuqEVBG7nTth9mxYvDhxcfmhWTNbmrn9dnjx\nRdfRAHqHarB1724vxVLBEvaSTEQiBlXvuceWZFq3TkxMfrrgAjsuUFLiOhJAk3uwZWbaM4ZDh1xH\nouKxaFF6JPemNhH7+GN7M9QN0YoHKWj6dPvHKAWuYtPkHnT5+bBunesoVDzC2CwsmsaOC7nuH9NY\n3bvb8YHZs11Hosk98HRQNVjC2iwsmuJi+0klXi+/bJvjFQawPdWUKTa5/7v2jf3Jpck96AoK/Ovj\noRIvrM3ComlM3f3gQbj//kBNaVdD69a2NHPPPU7D0OQedHrmHizpMpga0ZgmYtOnw/jxkJPjT0zJ\ncP319v+l333t66HJPehyc2HTpoa3U6kh3ZJ7vE3ENm2CV16xk1EHWaTvzG23Oes7o8k96ETstF+J\nuBNQ+SvszcKiiac0M3myLce0aOFvTMlQWGjHDebNc3J4Te5h0LcvrF3rOgrVkLA3C4sm1uS+aJE9\nSbmk9vQRAfbgg3b84ODBpB9ak3sY6KBqMKRbSSYiljYEx47BHXfAI48kJ6ZkycmBceOc/Fya3MNA\nB1WDIV2TeyxNxJ56CkaOtPMUhM2kSXYcwY/JS+qhyT0MdD7VYEiHZmHR1Hf2vns3/OY3dtq6MGre\n3JZn7rwzqYfV5B4GOTn2Nm+VurZts61hw94sLJr66u733WevKgnzjV0XX2w/uTTmhq5G0uQeBiLQ\noQPs2uU6EhVNupZkIqIl99JSe2PXjTcmP6Zke+QRO67Q2F47cdLkHhY6qJra0j25d+0KW7fWTGyR\n/jGPPAIZaZCKeva04wpz5iTlcGnwjqYJHVRNbenULCya2r+jr79uS4pDhriLKdnuvht+/Ws7zuAz\nTe5hoYOqqevgQdsC9uSTXUfi1ogRX5ZmDh+Ge++1E1ykk7Zt7aeVqVN9P5Qm97DQ5J660q1ZWDTV\n6+4zZ8J119nWBOnmxhvt5OGlpb4expfkLiKXiMg6ESkXkSl+HEPV0qGD/ajnqI+Fqke619sjIk3E\ntmyBF16AH/3IdURuZGTYcQaf+84kPLmLSCbwW+BSoA9wg4j0SfRx1IlM51OpXLPdeX6vqrJX/mkc\nNobDC9/HDNfkTmYmpvOpHP7GTZhf3ActW7qOyJ0hQyAnh6r5r/v2O+rHRbeDgXJjzHoAEXkeGAto\n8xMfVVXB/1tbwP7+dyOnd+Omb0OGgwlsqgw8PQc2boLTu5HWcURiGPzZZ0wcdzolJelxUUg0VVUw\nZ10x3TYu4sFjV1ByRZq/H/89jfL8yxl48CKKilsm/PfDj+TeFajeg7YCOGE4XEQmABMATk+3Lnk+\nqKyEH2+ZzGCzmMxNcE0etG+f/Dg+3w2vb4JjVbAqzeOIxDCTqyhdbP+NOndObgyppLISJlfcCuZ7\n7PlA9P1o1oVvH5zFkWPCYh9+P5zdLmeMmQ3MBigqKtJCcRPl5MBZxdm8sXgsw4dDu3GAgzPmdgZ2\nPgWLF5P2cURiKPViCPLcE4mQkwN9i9sf/zfR9wOaFQ/B+PR++JHcNwPdqj3P9ZYpH4lASYn965+T\n425OYY0jtWJIJfp+1OT3++FHxetDoKeIdBeRFsD1wHwfjqNqyciwH+tc/6fROFIrhlSi70dNfr4f\nCT9zN8YcFZFJwJ+BTOApY4zeF6+UUknkS83dGPMG8IYf+1ZKKdWwNL4QSSmlwkuTu1JKhZAmd6WU\nCiFN7kopFUJiXDcAAUSkEviskS/vBOxIYDhBp+9HTfp+fEnfi5rC8H6cYYzJrmtFSiT3phCR5caY\nItdxpAp9P2rS9+NL+l7UFPb3Q8sySikVQprclVIqhMKQ3Ge7DiDF6PtRk74fX9L3oqZQvx+Br7kr\npZQ6URjO3JVSStWiyV0ppUIo0MldJ+K2RKSbiJSIyFoRWSMiP3QdUyoQkUwR+ZuIvO46FtdEpL2I\nvCgin4hIqYgMcx2TKyLyY+//yWoReU5EslzH5IfAJnediLuGo8BPjDF9gKHAxDR+L6r7IVDqOogU\n8SjwpjEmHxhAmr4vItIV+AFQZIwpwLYlv95tVP4IbHKn2kTcxpgvgMhE3GnHGLPFGLPCe7wX+x+3\nq9uo3BKRXOBy4AnXsbgmIu2AkcCTAMaYL4wxu91G5VQz4CQRaQa0Av7lOB5fBDm51zURd1onNAAR\nyQMGAkvdRuLcTOBOoMp1ICmgO1AJzPHKVE+ISGvXQblgjNkMTAc2AluAPcaYBW6j8keQk7uqRUTa\nAC8BPzLGfO46HldE5ApguzHmI9expIhmQCEwyxgzENgPpOUYlYh0wH7C7w6cBrQWkW+5jcofQU7u\nOhF3NSLSHJvYnzXGvOw6HseKgTEisgFbrrtARP7PbUhOVQAVxpjIp7kXsck+HV0I/NMYU2mMOQK8\nDAx3HJMvgpzcdSJuj4gItp5aaoyZ4Toe14wxdxljco0xedjfi4XGmFCencXCGLMV2CQivbxFo4C1\nDkNyaSMwVERaef9vRhHSwWVf5lBNBp2Iu4Zi4EbgYxFZ6S37qTeXrVIAtwLPeidC64FvO47HCWPM\nUhF5EViBvcrsb4S0DYG2H1BKqRAKcllGKaVUFJrclVIqhDS5K6VUCGlyV0qpENLkrpRSIaTJXSml\nQkiTu1JKhdD/B0Ay1xtBdQV8AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "PWCr3WUnyYQM", "colab_type": "code", "colab": {} }, "source": [ "# BUILDING FORCAST ID:\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "pFnP1qFeog-a", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 228 }, "outputId": "d505e31f-7f73-4e9a-b1d6-c4863d86e653" }, "source": [ "boston.data" ], "execution_count": 29, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[6.3200e-03, 1.8000e+01, 2.3100e+00, ..., 1.5300e+01, 3.9690e+02,\n", " 4.9800e+00],\n", " [2.7310e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9690e+02,\n", " 9.1400e+00],\n", " [2.7290e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9283e+02,\n", " 4.0300e+00],\n", " ...,\n", " [6.0760e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,\n", " 5.6400e+00],\n", " [1.0959e-01, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9345e+02,\n", " 6.4800e+00],\n", " [4.7410e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,\n", " 7.8800e+00]])" ] }, "metadata": { "tags": [] }, "execution_count": 29 } ] }, { "cell_type": "code", "metadata": { "id": "uCcfjYYyomuX", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "69d7f95c-a5a2-420f-a8ea-fdf2d44dfb1c" }, "source": [ "boston.data.shape" ], "execution_count": 31, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(506, 13)" ] }, "metadata": { "tags": [] }, "execution_count": 31 } ] }, { "cell_type": "code", "metadata": { "id": "Apv7AXA5orcv", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "4b8996ff-a5e4-494e-eb7e-d29e027023ae" }, "source": [ "boston.target.shape" ], "execution_count": 39, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(506,)" ] }, "metadata": { "tags": [] }, "execution_count": 39 } ] }, { "cell_type": "markdown", "metadata": { "id": "d525a0-hqUYr", "colab_type": "text" }, "source": [ "#### BOSTON\n", "* K-fold CV average score: 0.89\n", "* MSE: 11.69\n", "* RMSE: 3.42\n", "\n", "#### V1\n", "* K-fold CV average score: -107.07\n", "* MSE: 36809.57\n", "* RMSE: 191.86\n", "\n", "#### V2 -- California\n", "* K-fold CV average score: 0.61\n", "* MSE: 139454.95\n", "* RMSE: 373.44\n", "\n", "#### V3 -- California, days_from, get_dummies\n", "\n", "* K-fold CV average score: 0.93\n", "* MSE: 9027.82\n", "* RMSE: 95.01" ] }, { "cell_type": "code", "metadata": { "id": "_mrxu8ZAsli_", "colab_type": "code", "colab": {} }, "source": [ "" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "313NadqlppNV", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 312 }, "outputId": "a569fa33-e39b-4744-8c5c-9fbdce31a25e" }, "source": [ "" ], "execution_count": 74, "outputs": [ { "output_type": "error", "ename": "ValueError", "evalue": "ignored", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mboston\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, data, index, columns, dtype, copy)\u001b[0m\n\u001b[1;32m 409\u001b[0m )\n\u001b[1;32m 410\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 411\u001b[0;31m \u001b[0mmgr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minit_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 412\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMaskedArray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmrecords\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mmrecords\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pandas/core/internals/construction.py\u001b[0m in \u001b[0;36minit_dict\u001b[0;34m(data, index, columns, dtype)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[0marr\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_datetime64tz_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marr\u001b[0m \u001b[0;32min\u001b[0m \u001b[0marrays\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 256\u001b[0m ]\n\u001b[0;32m--> 257\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0marrays_to_mgr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 258\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pandas/core/internals/construction.py\u001b[0m in \u001b[0;36marrays_to_mgr\u001b[0;34m(arrays, arr_names, index, columns, dtype)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;31m# figure out the index, if necessary\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mextract_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mensure_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pandas/core/internals/construction.py\u001b[0m in \u001b[0;36mextract_index\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 366\u001b[0m \u001b[0mlengths\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mraw_lengths\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlengths\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 368\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"arrays must all be same length\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 369\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 370\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhave_dicts\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: arrays must all be same length" ] } ] }, { "cell_type": "code", "metadata": { "id": "BgX_hhNHt8by", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 50 }, "outputId": "7e80c58f-b58e-4e3a-ef45-291092803e9f" }, "source": [ "print(ypred)" ], "execution_count": 95, "outputs": [ { "output_type": "stream", "text": [ "[5.5687274e+02 7.5082043e+02 3.1586111e-02 3.1586111e-02 3.1586111e-02\n", " 3.1586111e-02 5.5687274e+02 3.1586111e-02 2.2094861e+02 3.1586111e-02]\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "WKQxLZnyyguR", "colab_type": "text" }, "source": [ "### SIDEQUEST TO MAKE SURE I CAN BUILD THE DF" ] }, { "cell_type": "code", "metadata": { "id": "8nC_aPYfw6Nl", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 191 }, "outputId": "feb0aee4-3996-4300-e998-27407e0df72c" }, "source": [ "train.head()" ], "execution_count": 96, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdProvince_StateCountry_RegionDateConfirmedCasesFatalities
01AfghanistanAfghanistan2020-01-220.00.0
12AfghanistanAfghanistan2020-01-230.00.0
23AfghanistanAfghanistan2020-01-240.00.0
34AfghanistanAfghanistan2020-01-250.00.0
45AfghanistanAfghanistan2020-01-260.00.0
\n", "
" ], "text/plain": [ " Id Province_State Country_Region Date ConfirmedCases Fatalities\n", "0 1 Afghanistan Afghanistan 2020-01-22 0.0 0.0\n", "1 2 Afghanistan Afghanistan 2020-01-23 0.0 0.0\n", "2 3 Afghanistan Afghanistan 2020-01-24 0.0 0.0\n", "3 4 Afghanistan Afghanistan 2020-01-25 0.0 0.0\n", "4 5 Afghanistan Afghanistan 2020-01-26 0.0 0.0" ] }, "metadata": { "tags": [] }, "execution_count": 96 } ] }, { "cell_type": "code", "metadata": { "id": "_PtFdVKryrIx", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "0891f621-ff0c-4b48-e4fb-b960062ca850" }, "source": [ "test.head(50)" ], "execution_count": 103, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ForecastIdProvince_StateCountry_RegionDate
01AfghanistanAfghanistan2020-03-19
12AfghanistanAfghanistan2020-03-20
23AfghanistanAfghanistan2020-03-21
34AfghanistanAfghanistan2020-03-22
45AfghanistanAfghanistan2020-03-23
56AfghanistanAfghanistan2020-03-24
67AfghanistanAfghanistan2020-03-25
78AfghanistanAfghanistan2020-03-26
89AfghanistanAfghanistan2020-03-27
910AfghanistanAfghanistan2020-03-28
1011AfghanistanAfghanistan2020-03-29
1112AfghanistanAfghanistan2020-03-30
1213AfghanistanAfghanistan2020-03-31
1314AfghanistanAfghanistan2020-04-01
1415AfghanistanAfghanistan2020-04-02
1516AfghanistanAfghanistan2020-04-03
1617AfghanistanAfghanistan2020-04-04
1718AfghanistanAfghanistan2020-04-05
1819AfghanistanAfghanistan2020-04-06
1920AfghanistanAfghanistan2020-04-07
2021AfghanistanAfghanistan2020-04-08
2122AfghanistanAfghanistan2020-04-09
2223AfghanistanAfghanistan2020-04-10
2324AfghanistanAfghanistan2020-04-11
2425AfghanistanAfghanistan2020-04-12
2526AfghanistanAfghanistan2020-04-13
2627AfghanistanAfghanistan2020-04-14
2728AfghanistanAfghanistan2020-04-15
2829AfghanistanAfghanistan2020-04-16
2930AfghanistanAfghanistan2020-04-17
3031AfghanistanAfghanistan2020-04-18
3132AfghanistanAfghanistan2020-04-19
3233AfghanistanAfghanistan2020-04-20
3334AfghanistanAfghanistan2020-04-21
3435AfghanistanAfghanistan2020-04-22
3536AfghanistanAfghanistan2020-04-23
3637AfghanistanAfghanistan2020-04-24
3738AfghanistanAfghanistan2020-04-25
3839AfghanistanAfghanistan2020-04-26
3940AfghanistanAfghanistan2020-04-27
4041AfghanistanAfghanistan2020-04-28
4142AfghanistanAfghanistan2020-04-29
4243AfghanistanAfghanistan2020-04-30
4344AlbaniaAlbania2020-03-19
4445AlbaniaAlbania2020-03-20
4546AlbaniaAlbania2020-03-21
4647AlbaniaAlbania2020-03-22
4748AlbaniaAlbania2020-03-23
4849AlbaniaAlbania2020-03-24
4950AlbaniaAlbania2020-03-25
\n", "
" ], "text/plain": [ " ForecastId Province_State Country_Region Date\n", "0 1 Afghanistan Afghanistan 2020-03-19\n", "1 2 Afghanistan Afghanistan 2020-03-20\n", "2 3 Afghanistan Afghanistan 2020-03-21\n", "3 4 Afghanistan Afghanistan 2020-03-22\n", "4 5 Afghanistan Afghanistan 2020-03-23\n", "5 6 Afghanistan Afghanistan 2020-03-24\n", "6 7 Afghanistan Afghanistan 2020-03-25\n", "7 8 Afghanistan Afghanistan 2020-03-26\n", "8 9 Afghanistan Afghanistan 2020-03-27\n", "9 10 Afghanistan Afghanistan 2020-03-28\n", "10 11 Afghanistan Afghanistan 2020-03-29\n", "11 12 Afghanistan Afghanistan 2020-03-30\n", "12 13 Afghanistan Afghanistan 2020-03-31\n", "13 14 Afghanistan Afghanistan 2020-04-01\n", "14 15 Afghanistan Afghanistan 2020-04-02\n", "15 16 Afghanistan Afghanistan 2020-04-03\n", "16 17 Afghanistan Afghanistan 2020-04-04\n", "17 18 Afghanistan Afghanistan 2020-04-05\n", "18 19 Afghanistan Afghanistan 2020-04-06\n", "19 20 Afghanistan Afghanistan 2020-04-07\n", "20 21 Afghanistan Afghanistan 2020-04-08\n", "21 22 Afghanistan Afghanistan 2020-04-09\n", "22 23 Afghanistan Afghanistan 2020-04-10\n", "23 24 Afghanistan Afghanistan 2020-04-11\n", "24 25 Afghanistan Afghanistan 2020-04-12\n", "25 26 Afghanistan Afghanistan 2020-04-13\n", "26 27 Afghanistan Afghanistan 2020-04-14\n", "27 28 Afghanistan Afghanistan 2020-04-15\n", "28 29 Afghanistan Afghanistan 2020-04-16\n", "29 30 Afghanistan Afghanistan 2020-04-17\n", "30 31 Afghanistan Afghanistan 2020-04-18\n", "31 32 Afghanistan Afghanistan 2020-04-19\n", "32 33 Afghanistan Afghanistan 2020-04-20\n", "33 34 Afghanistan Afghanistan 2020-04-21\n", "34 35 Afghanistan Afghanistan 2020-04-22\n", "35 36 Afghanistan Afghanistan 2020-04-23\n", "36 37 Afghanistan Afghanistan 2020-04-24\n", "37 38 Afghanistan Afghanistan 2020-04-25\n", "38 39 Afghanistan Afghanistan 2020-04-26\n", "39 40 Afghanistan Afghanistan 2020-04-27\n", "40 41 Afghanistan Afghanistan 2020-04-28\n", "41 42 Afghanistan Afghanistan 2020-04-29\n", "42 43 Afghanistan Afghanistan 2020-04-30\n", "43 44 Albania Albania 2020-03-19\n", "44 45 Albania Albania 2020-03-20\n", "45 46 Albania Albania 2020-03-21\n", "46 47 Albania Albania 2020-03-22\n", "47 48 Albania Albania 2020-03-23\n", "48 49 Albania Albania 2020-03-24\n", "49 50 Albania Albania 2020-03-25" ] }, "metadata": { "tags": [] }, "execution_count": 103 } ] }, { "cell_type": "code", "metadata": { "id": "yljhHuZGytgi", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 191 }, "outputId": "687c42d3-bd27-43e5-96e2-309c4cbb052d" }, "source": [ "sub.head()" ], "execution_count": 99, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ForecastIdConfirmedCasesFatalities
0111
1211
2311
3411
4511
\n", "
" ], "text/plain": [ " ForecastId ConfirmedCases Fatalities\n", "0 1 1 1\n", "1 2 1 1\n", "2 3 1 1\n", "3 4 1 1\n", "4 5 1 1" ] }, "metadata": { "tags": [] }, "execution_count": 99 } ] }, { "cell_type": "code", "metadata": { "id": "EY55-yuAyy7O", "colab_type": "code", "colab": {} }, "source": [ "countries = set(train['Country_Region'])" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "XwtqpL-pzGct", "colab_type": "code", "colab": {} }, "source": [ "states = set(train['Province_State'])" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "G_wcEkhnzJ0X", "colab_type": "code", "colab": {} }, "source": [ "for country in countries:\n", " # train model\n", " # run model\n", " # make predictions\n", " # print predictions\n", " " ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "RnrySepe0dfT", "colab_type": "code", "colab": {} }, "source": [ "from fbprophet import Prophet \n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Bxcsv3yd00bi", "colab_type": "code", "colab": {} }, "source": [ "def get_prof_preds_for(df, n):\n", " m = Prophet(daily_seasonality=True)\n", " m.fit(df)\n", " future = m.make_future_dataframe(periods=n)\n", " forecast = m.predict(future)\n", " return forecast\n", " # fig1 = m.plot(forecast)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "k8J8kVbi2D18", "colab_type": "code", "colab": {} }, "source": [ "sm = train[['Date','ConfirmedCases']]\n", "sm.columns = ['ds', 'y']" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "3avM7c8N2Mdd", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 473 }, "outputId": "659b40f6-7744-4d65-dfa8-f413cb3a1f53" }, "source": [ "get_prof_preds_for(sm, 43)" ], "execution_count": 108, "outputs": [ { "output_type": "stream", "text": [ "INFO:numexpr.utils:NumExpr defaulting to 2 threads.\n", "INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.\n" ], "name": "stderr" }, { "output_type": "display_data", "data": { "image/png": "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\nB+JLh3QKgrtQAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "KhLljs_g2PQo", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 898 }, "outputId": "7244b662-8114-4054-b1e1-ef936e9d41a9" }, "source": [ "big_df = pd.DataFrame()\n", "for country in list(countries)[:3]:\n", " df = train[train['Country_Region'] == country]\n", " sm = df[['Date','ConfirmedCases']]\n", " sm.columns = ['ds', 'y']\n", " results = get_prof_preds_for(sm, 30)\n", " new_df = results[['ds', 'trend']]\n", " new_df['country'] = country\n", " big_df = big_df.append(new_df)\n", " print(results)\n", " # train model\n", " # run model\n", " # make predictions\n", " # print predictions" ], "execution_count": 124, "outputs": [ { "output_type": "stream", "text": [ "INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.\n", "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:8: SettingWithCopyWarning:\n", "\n", "\n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", "\n", "INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.\n" ], "name": "stderr" }, { "output_type": "stream", "text": [ " ds trend ... multiplicative_terms_upper yhat\n", "0 2020-01-22 -0.621744 ... 0.0 -8.593858\n", "1 2020-01-23 -0.092180 ... 0.0 -8.094366\n", "2 2020-01-24 0.437384 ... 0.0 -8.094935\n", "3 2020-01-25 0.966948 ... 0.0 -10.171977\n", "4 2020-01-26 1.496512 ... 0.0 -10.172401\n", ".. ... ... ... ... ...\n", "91 2020-04-22 47.687305 ... 0.0 39.715190\n", "92 2020-04-23 48.219114 ... 0.0 40.216928\n", "93 2020-04-24 48.750924 ... 0.0 40.218604\n", "94 2020-04-25 49.282734 ... 0.0 38.143809\n", "95 2020-04-26 49.814543 ... 0.0 38.145630\n", "\n", "[96 rows x 19 columns]\n" ], "name": "stdout" }, { "output_type": "stream", "text": [ "INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.\n" ], "name": "stderr" }, { "output_type": "stream", "text": [ " ds trend ... multiplicative_terms_upper yhat\n", "0 2020-01-22 -0.696099 ... 0.0 -11.149811\n", "1 2020-01-23 -0.105463 ... 0.0 -8.853474\n", "2 2020-01-24 0.485172 ... 0.0 -6.557384\n", "3 2020-01-25 1.075808 ... 0.0 -11.796288\n", "4 2020-01-26 1.666444 ... 0.0 -11.688850\n", ".. ... ... ... ... ...\n", "91 2020-04-22 53.388275 ... 0.0 42.934563\n", "92 2020-04-23 53.985234 ... 0.0 45.237223\n", "93 2020-04-24 54.582194 ... 0.0 47.539637\n", "94 2020-04-25 55.179153 ... 0.0 42.307057\n", "95 2020-04-26 55.776112 ... 0.0 42.420818\n", "\n", "[96 rows x 19 columns]\n", " ds trend ... multiplicative_terms_upper yhat\n", "0 2020-01-22 -0.492852 ... 0.0 -7.700532\n", "1 2020-01-23 -0.077356 ... 0.0 -5.901824\n", "2 2020-01-24 0.338140 ... 0.0 -3.503139\n", "3 2020-01-25 0.753637 ... 0.0 -10.087918\n", "4 2020-01-26 1.169133 ... 0.0 -9.311398\n", ".. ... ... ... ... ...\n", "91 2020-04-22 37.444629 ... 0.0 30.236949\n", "92 2020-04-23 37.862464 ... 0.0 32.037995\n", "93 2020-04-24 38.280298 ... 0.0 34.439019\n", "94 2020-04-25 38.698133 ... 0.0 27.856578\n", "95 2020-04-26 39.115967 ... 0.0 28.635437\n", "\n", "[96 rows x 19 columns]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "Nq1XnNWK2zlX", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "outputId": "b33b8745-f993-4e50-eba7-1912d1a34452" }, "source": [ "big_df" ], "execution_count": 125, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
dstrendcountry
02020-01-22-0.621744Liechtenstein
12020-01-23-0.092180Liechtenstein
22020-01-240.437384Liechtenstein
32020-01-250.966948Liechtenstein
42020-01-261.496512Liechtenstein
............
912020-04-2237.444629Montenegro
922020-04-2337.862464Montenegro
932020-04-2438.280298Montenegro
942020-04-2538.698133Montenegro
952020-04-2639.115967Montenegro
\n", "

288 rows × 3 columns

\n", "
" ], "text/plain": [ " ds trend country\n", "0 2020-01-22 -0.621744 Liechtenstein\n", "1 2020-01-23 -0.092180 Liechtenstein\n", "2 2020-01-24 0.437384 Liechtenstein\n", "3 2020-01-25 0.966948 Liechtenstein\n", "4 2020-01-26 1.496512 Liechtenstein\n", ".. ... ... ...\n", "91 2020-04-22 37.444629 Montenegro\n", "92 2020-04-23 37.862464 Montenegro\n", "93 2020-04-24 38.280298 Montenegro\n", "94 2020-04-25 38.698133 Montenegro\n", "95 2020-04-26 39.115967 Montenegro\n", "\n", "[288 rows x 3 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 125 } ] }, { "cell_type": "code", "metadata": { "id": "_FdvOmix304t", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 133 }, "outputId": "2741aa46-d16f-4554-a356-9ba506b4b2fa" }, "source": [ "df" ], "execution_count": 122, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countryConfirmedCases
0Liechtenstein0 -0.621744\n", "1 -0.092180\n", "2 0.43738...
1Uzbekistan0 -0.696099\n", "1 -0.105463\n", "2 0.48517...
2Montenegro0 -0.492852\n", "1 -0.077356\n", "2 0.33814...
\n", "
" ], "text/plain": [ " country ConfirmedCases\n", "0 Liechtenstein 0 -0.621744\n", "1 -0.092180\n", "2 0.43738...\n", "1 Uzbekistan 0 -0.696099\n", "1 -0.105463\n", "2 0.48517...\n", "2 Montenegro 0 -0.492852\n", "1 -0.077356\n", "2 0.33814..." ] }, "metadata": { "tags": [] }, "execution_count": 122 } ] }, { "cell_type": "code", "metadata": { "id": "Oklmk60i33vD", "colab_type": "code", "colab": {} }, "source": [ "" ], "execution_count": 0, "outputs": [] } ] }