{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "vncDsAP0Gaoa" }, "source": [ "# **Project Name** - **Retail Sales Prediction**\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Y3lxredqlCYt" }, "source": [ "### Import Libraries" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "M8Vqi-pPk-HR" }, "outputs": [], "source": [ "# Import Libraries\n", "import numpy as np\n", "import pandas as pd\n", "from numpy import math\n", "from pandas import datetime as dt\n", "import datetime\n", "import missingno as msno\n", "\n", "\n", "from sklearn.preprocessing import MinMaxScaler\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.metrics import r2_score\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.metrics import mean_absolute_error\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "# Importing Libraries For Data Visualization\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import seaborn as sns\n", "from scipy.stats import norm\n", "from scipy import stats\n", "\n", "\n", "\n", "# Importing Libraries For ML Model\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.linear_model import Ridge, Lasso, ElasticNet\n", "from sklearn.model_selection import GridSearchCV\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.tree import DecisionTreeRegressor\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import r2_score,accuracy_score\n", "from sklearn.ensemble import GradientBoostingRegressor\n", "from xgboost import XGBRegressor\n", "from sklearn.preprocessing import MinMaxScaler\n", "from sklearn.ensemble import RandomForestRegressor\n", "\n", "# Ignoring warnings\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": { "id": "3RnN4peoiCZX" }, "source": [ "### Dataset Loading" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "4CkvbW_SlZ_R" }, "outputs": [], "source": [ "# Load Dataset\n", "sales_data = pd.read_csv('Rossmann Stores Data (2).csv')\n", "store_data = pd.read_csv('store.csv')" ] }, { "cell_type": "markdown", "metadata": { "id": "x71ZqKXriCWQ" }, "source": [ "### Dataset First View" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "LWNFOSvLl09H", "outputId": "c6018ef5-bdb0-4cc0-acaa-385ed5f20386" }, "outputs": [ { "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", "
StoreDayOfWeekDateSalesCustomersOpenPromoStateHolidaySchoolHoliday
0152015-07-3152635551101
1252015-07-3160646251101
2352015-07-3183148211101
3452015-07-311399514981101
4552015-07-3148225591101
\n", "
" ], "text/plain": [ " Store DayOfWeek Date Sales Customers Open Promo StateHoliday \\\n", "0 1 5 2015-07-31 5263 555 1 1 0 \n", "1 2 5 2015-07-31 6064 625 1 1 0 \n", "2 3 5 2015-07-31 8314 821 1 1 0 \n", "3 4 5 2015-07-31 13995 1498 1 1 0 \n", "4 5 5 2015-07-31 4822 559 1 1 0 \n", "\n", " SchoolHoliday \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Dataset First Look\n", "sales_data.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "KJTwZuJ93C5D" }, "source": [ "### Dataset Second View" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "55xWP4EE2zsk", "outputId": "0e7a1e62-8616-4dbc-e25e-69c750740448" }, "outputs": [ { "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", "
StoreStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearPromoInterval
01ca1270.09.02008.00NaNNaNNaN
12aa570.011.02007.0113.02010.0Jan,Apr,Jul,Oct
23aa14130.012.02006.0114.02011.0Jan,Apr,Jul,Oct
34cc620.09.02009.00NaNNaNNaN
45aa29910.04.02015.00NaNNaNNaN
\n", "
" ], "text/plain": [ " Store StoreType Assortment CompetitionDistance CompetitionOpenSinceMonth \\\n", "0 1 c a 1270.0 9.0 \n", "1 2 a a 570.0 11.0 \n", "2 3 a a 14130.0 12.0 \n", "3 4 c c 620.0 9.0 \n", "4 5 a a 29910.0 4.0 \n", "\n", " CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear \\\n", "0 2008.0 0 NaN NaN \n", "1 2007.0 1 13.0 2010.0 \n", "2 2006.0 1 14.0 2011.0 \n", "3 2009.0 0 NaN NaN \n", "4 2015.0 0 NaN NaN \n", "\n", " PromoInterval \n", "0 NaN \n", "1 Jan,Apr,Jul,Oct \n", "2 Jan,Apr,Jul,Oct \n", "3 NaN \n", "4 NaN " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "store_data.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "3azBGpmN3Md1" }, "source": [ "### Merging Datasets" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "YK6iEtFE3PFb" }, "outputs": [], "source": [ "df = sales_data.merge(store_data,how='inner',left_on='Store',right_on='Store') ## We did inner join on these 2 datasets on the Store column" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 357 }, "id": "cil2AW113RfM", "outputId": "d6d7d2d9-9c92-4c13-dcb9-d36167bc2a57" }, "outputs": [ { "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", "
StoreDayOfWeekDateSalesCustomersOpenPromoStateHolidaySchoolHolidayStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearPromoInterval
0152015-07-3152635551101ca1270.09.02008.00NaNNaNNaN
1142015-07-3050205461101ca1270.09.02008.00NaNNaNNaN
2132015-07-2947825231101ca1270.09.02008.00NaNNaNNaN
3122015-07-2850115601101ca1270.09.02008.00NaNNaNNaN
4112015-07-2761026121101ca1270.09.02008.00NaNNaNNaN
\n", "
" ], "text/plain": [ " Store DayOfWeek Date Sales Customers Open Promo StateHoliday \\\n", "0 1 5 2015-07-31 5263 555 1 1 0 \n", "1 1 4 2015-07-30 5020 546 1 1 0 \n", "2 1 3 2015-07-29 4782 523 1 1 0 \n", "3 1 2 2015-07-28 5011 560 1 1 0 \n", "4 1 1 2015-07-27 6102 612 1 1 0 \n", "\n", " SchoolHoliday StoreType Assortment CompetitionDistance \\\n", "0 1 c a 1270.0 \n", "1 1 c a 1270.0 \n", "2 1 c a 1270.0 \n", "3 1 c a 1270.0 \n", "4 1 c a 1270.0 \n", "\n", " CompetitionOpenSinceMonth CompetitionOpenSinceYear Promo2 \\\n", "0 9.0 2008.0 0 \n", "1 9.0 2008.0 0 \n", "2 9.0 2008.0 0 \n", "3 9.0 2008.0 0 \n", "4 9.0 2008.0 0 \n", "\n", " Promo2SinceWeek Promo2SinceYear PromoInterval \n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "7hBIi_osiCS2" }, "source": [ "### Dataset Rows & Columns count" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Kllu7SJgmLij", "outputId": "321ecfcf-f2c6-42fe-c587-58bc9d6a9fc8" }, "outputs": [ { "data": { "text/plain": [ "(1017209, 18)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Dataset Rows & Columns count\n", "df.shape" ] }, { "cell_type": "markdown", "metadata": { "id": "nJyXyBR93u3N" }, "source": [ "There are 1017209 rows and 18 columns in our dataset" ] }, { "cell_type": "markdown", "metadata": { "id": "JlHwYmJAmNHm" }, "source": [ "### Dataset Information" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "e9hRXRi6meOf", "outputId": "12c1e76f-497b-4ae3-cf0c-dc50e56121da" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 1017209 entries, 0 to 1017208\n", "Data columns (total 18 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Store 1017209 non-null int64 \n", " 1 DayOfWeek 1017209 non-null int64 \n", " 2 Date 1017209 non-null object \n", " 3 Sales 1017209 non-null int64 \n", " 4 Customers 1017209 non-null int64 \n", " 5 Open 1017209 non-null int64 \n", " 6 Promo 1017209 non-null int64 \n", " 7 StateHoliday 1017209 non-null object \n", " 8 SchoolHoliday 1017209 non-null int64 \n", " 9 StoreType 1017209 non-null object \n", " 10 Assortment 1017209 non-null object \n", " 11 CompetitionDistance 1014567 non-null float64\n", " 12 CompetitionOpenSinceMonth 693861 non-null float64\n", " 13 CompetitionOpenSinceYear 693861 non-null float64\n", " 14 Promo2 1017209 non-null int64 \n", " 15 Promo2SinceWeek 509178 non-null float64\n", " 16 Promo2SinceYear 509178 non-null float64\n", " 17 PromoInterval 509178 non-null object \n", "dtypes: float64(5), int64(8), object(5)\n", "memory usage: 147.5+ MB\n" ] } ], "source": [ "# Dataset Info\n", "df.info()" ] }, { "cell_type": "markdown", "metadata": { "id": "35m5QtbWiB9F" }, "source": [ "#### Duplicate Values" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1sLdpKYkmox0", "outputId": "fc897127-ead9-4522-9466-ecebaedf795d" }, "outputs": [ { "data": { "text/plain": [ "0 False\n", "1 False\n", "2 False\n", "3 False\n", "4 False\n", " ... \n", "1017204 False\n", "1017205 False\n", "1017206 False\n", "1017207 False\n", "1017208 False\n", "Length: 1017209, dtype: bool" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Dataset Duplicate Value Count\n", "df.duplicated()" ] }, { "cell_type": "markdown", "metadata": { "id": "PoPl-ycgm1ru" }, "source": [ "#### Missing Values/Null Values" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GgHWkxvamxVg", "outputId": "b0973f36-896f-4331-ff8f-5cfd32211eac" }, "outputs": [ { "data": { "text/plain": [ "Store 0\n", "DayOfWeek 0\n", "Date 0\n", "Sales 0\n", "Customers 0\n", "Open 0\n", "Promo 0\n", "StateHoliday 0\n", "SchoolHoliday 0\n", "StoreType 0\n", "Assortment 0\n", "CompetitionDistance 2642\n", "CompetitionOpenSinceMonth 323348\n", "CompetitionOpenSinceYear 323348\n", "Promo2 0\n", "Promo2SinceWeek 508031\n", "Promo2SinceYear 508031\n", "PromoInterval 508031\n", "dtype: int64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Missing Values/Null Values Count\n", "df.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "aSwpUZDb7tnW" }, "outputs": [], "source": [ "## Converting the Date Column Data Type To DateTime \n", "df[\"Date\"]=pd.to_datetime(df[\"Date\"])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "kWjU60gg7zCX" }, "outputs": [], "source": [ "# Extracting Date,Year,Month,Day\n", "df[\"Year\"]=df[\"Date\"].dt.year\n", "df[\"Month\"]=df[\"Date\"].dt.month\n", "df[\"Day\"]=df[\"Date\"].dt.day" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "Ov87rSEA7zE9" }, "outputs": [], "source": [ "# as we extracted year,month,day from date columns so here we dropping the date column\n", "df=df.drop(['Date'],axis=1) \n", "df=df.drop(['PromoInterval'],axis=1)\n", "df=df.drop(['StateHoliday'],axis=1)\n", "df=df.drop(['Open'],axis=1)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 270 }, "id": "3FjXKyyG7zH9", "outputId": "c91bd5d9-9745-4c70-9dfb-95e06752ab3d" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearYearMonthDay
015526355511ca1270.09.02008.00NaNNaN2015731
114502054611ca1270.09.02008.00NaNNaN2015730
213478252311ca1270.09.02008.00NaNNaN2015729
312501156011ca1270.09.02008.00NaNNaN2015728
411610261211ca1270.09.02008.00NaNNaN2015727
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday StoreType \\\n", "0 1 5 5263 555 1 1 c \n", "1 1 4 5020 546 1 1 c \n", "2 1 3 4782 523 1 1 c \n", "3 1 2 5011 560 1 1 c \n", "4 1 1 6102 612 1 1 c \n", "\n", " Assortment CompetitionDistance CompetitionOpenSinceMonth \\\n", "0 a 1270.0 9.0 \n", "1 a 1270.0 9.0 \n", "2 a 1270.0 9.0 \n", "3 a 1270.0 9.0 \n", "4 a 1270.0 9.0 \n", "\n", " CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear Year \\\n", "0 2008.0 0 NaN NaN 2015 \n", "1 2008.0 0 NaN NaN 2015 \n", "2 2008.0 0 NaN NaN 2015 \n", "3 2008.0 0 NaN NaN 2015 \n", "4 2008.0 0 NaN NaN 2015 \n", "\n", " Month Day \n", "0 7 31 \n", "1 7 30 \n", "2 7 29 \n", "3 7 28 \n", "4 7 27 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(5)" ] }, { "cell_type": "markdown", "metadata": { "id": "hqxURTup9dKe" }, "source": [ "### Handling Null Values" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5R1r9oqd9gvh", "outputId": "bf38cca3-7320-4ea2-d7b8-fb1c1f61abbf" }, "outputs": [ { "data": { "text/plain": [ "Store 0\n", "DayOfWeek 0\n", "Sales 0\n", "Customers 0\n", "Promo 0\n", "SchoolHoliday 0\n", "StoreType 0\n", "Assortment 0\n", "CompetitionDistance 2642\n", "CompetitionOpenSinceMonth 323348\n", "CompetitionOpenSinceYear 323348\n", "Promo2 0\n", "Promo2SinceWeek 508031\n", "Promo2SinceYear 508031\n", "Year 0\n", "Month 0\n", "Day 0\n", "dtype: int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "oVAdshSp9gyo" }, "outputs": [], "source": [ "df['CompetitionDistance'].fillna(df['CompetitionDistance'].median(), inplace = True)\n", "df['CompetitionOpenSinceMonth'].fillna(df['CompetitionOpenSinceMonth'].mode()[0], inplace = True)\n", "df['CompetitionOpenSinceYear'].fillna(df['CompetitionOpenSinceYear'].mode()[0], inplace = True)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "EO9ZnaLz9lcB" }, "outputs": [], "source": [ "df['Promo2SinceWeek'].fillna(0, inplace = True)\n", "df['Promo2SinceYear'].fillna(0, inplace = True)" ] }, { "cell_type": "markdown", "metadata": { "id": "i5Z5qAPu-uWz" }, "source": [ "We may have to drop these last 3 columns, Promo2SinceWeek, Promo2SinceYear, PromoInterval because they have around 50% of null values, but these null values shows that stores are not actually participating in promo2 that's why there are null values, so we have to replace it with 0" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7uK2xzmX9lfB", "outputId": "508da75b-9b8d-461f-dbe1-bac4d0718dd2" }, "outputs": [ { "data": { "text/plain": [ "Store 0\n", "DayOfWeek 0\n", "Sales 0\n", "Customers 0\n", "Promo 0\n", "SchoolHoliday 0\n", "StoreType 0\n", "Assortment 0\n", "CompetitionDistance 0\n", "CompetitionOpenSinceMonth 0\n", "CompetitionOpenSinceYear 0\n", "Promo2 0\n", "Promo2SinceWeek 0\n", "Promo2SinceYear 0\n", "Year 0\n", "Month 0\n", "Day 0\n", "dtype: int64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 890 }, "id": "_a08sNBTorj4", "outputId": "6c1dab8e-df2b-446d-f73b-4c44c301d9e6" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "msno.bar(df) #After handling missing values" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 270 }, "id": "JeNWZd5Q_NtM", "outputId": "2dc82045-88df-4d7b-915b-0df2d52f8bd2" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearYearMonthDay
015526355511ca1270.09.02008.000.00.02015731
114502054611ca1270.09.02008.000.00.02015730
213478252311ca1270.09.02008.000.00.02015729
312501156011ca1270.09.02008.000.00.02015728
411610261211ca1270.09.02008.000.00.02015727
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday StoreType \\\n", "0 1 5 5263 555 1 1 c \n", "1 1 4 5020 546 1 1 c \n", "2 1 3 4782 523 1 1 c \n", "3 1 2 5011 560 1 1 c \n", "4 1 1 6102 612 1 1 c \n", "\n", " Assortment CompetitionDistance CompetitionOpenSinceMonth \\\n", "0 a 1270.0 9.0 \n", "1 a 1270.0 9.0 \n", "2 a 1270.0 9.0 \n", "3 a 1270.0 9.0 \n", "4 a 1270.0 9.0 \n", "\n", " CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear Year \\\n", "0 2008.0 0 0.0 0.0 2015 \n", "1 2008.0 0 0.0 0.0 2015 \n", "2 2008.0 0 0.0 0.0 2015 \n", "3 2008.0 0 0.0 0.0 2015 \n", "4 2008.0 0 0.0 0.0 2015 \n", "\n", " Month Day \n", "0 7 31 \n", "1 7 30 \n", "2 7 29 \n", "3 7 28 \n", "4 7 27 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "37tYYUMj_u0V", "outputId": "e1f2163d-8fce-4fba-aea7-062ad85a7577" }, "outputs": [ { "data": { "text/plain": [ "(1017209, 17)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.shape" ] }, { "cell_type": "markdown", "metadata": { "id": "PBTbrJXOngz2" }, "source": [ "### Variables Description \n", "We have handled all the null values in our dataset, and created new variables using date column.\n", "\n", "There are 20 variables in our dataset till now, and we can see that there are few categorical variables, so we may look forward to apply one hot encoding in the future for these variables. \n", "\n", "There are 16 Numerical columns and 4 categorical columns at present." ] }, { "cell_type": "markdown", "metadata": { "id": "u3PMJOP6ngxN" }, "source": [ "### Check Unique Values for each variable." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "id": "zms12Yq5n-jE" }, "outputs": [], "source": [ "# Check Unique Values for each variable.\n", "variables_in_df = df.columns.to_list()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-lH9SjXDAFF8", "outputId": "d29f7944-61b3-45f9-eca4-b7ac0c0ae07f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The Unique Values of Store are: [ 1 2 3 ... 1113 1114 1115]\n", "The Unique Values of DayOfWeek are: [5 4 3 2 1 7 6]\n", "The Unique Values of Sales are: [ 5263 5020 4782 ... 20362 18841 21237]\n", "The Unique Values of Customers are: [ 555 546 523 ... 3727 4022 4106]\n", "The Unique Values of Promo are: [1 0]\n", "The Unique Values of SchoolHoliday are: [1 0]\n", "The Unique Values of StoreType are: ['c' 'a' 'd' 'b']\n", "The Unique Values of Assortment are: ['a' 'c' 'b']\n", "The Unique Values of CompetitionDistance are: [1.270e+03 5.700e+02 1.413e+04 6.200e+02 2.991e+04 3.100e+02 2.400e+04\n", " 7.520e+03 2.030e+03 3.160e+03 9.600e+02 1.070e+03 1.300e+03 4.110e+03\n", " 3.270e+03 5.000e+01 1.384e+04 3.240e+03 2.340e+03 5.500e+02 1.040e+03\n", " 4.060e+03 4.590e+03 4.300e+02 2.300e+03 6.000e+01 1.200e+03 2.170e+03\n", " 4.000e+01 9.800e+03 2.910e+03 1.320e+03 2.240e+03 7.660e+03 5.400e+02\n", " 4.230e+03 1.090e+03 2.600e+02 1.800e+02 1.180e+03 2.900e+02 4.880e+03\n", " 9.710e+03 2.700e+02 1.060e+03 1.801e+04 6.260e+03 1.057e+04 4.500e+02\n", " 3.036e+04 7.170e+03 7.200e+02 6.620e+03 4.200e+02 7.340e+03 2.840e+03\n", " 5.540e+03 3.500e+02 2.050e+03 3.700e+03 2.256e+04 4.100e+02 2.500e+02\n", " 1.130e+03 4.840e+03 1.750e+04 2.200e+03 1.650e+03 3.300e+02 2.244e+04\n", " 1.996e+04 3.510e+03 3.320e+03 7.910e+03 2.370e+03 2.239e+04 2.710e+03\n", " 1.181e+04 1.870e+03 4.800e+02 5.600e+02 1.069e+04 2.380e+03 2.410e+03\n", " 2.400e+02 1.669e+04 1.462e+04 1.890e+03 8.780e+03 8.980e+03 1.514e+04\n", " 1.793e+04 2.440e+03 1.500e+02 5.210e+03 3.900e+02 6.190e+03 1.390e+03\n", " 1.930e+03 2.190e+03 3.300e+03 4.659e+04 7.890e+03 1.630e+03 2.093e+04\n", " 4.510e+03 5.740e+03 6.800e+02 3.450e+03 3.580e+03 2.100e+03 2.290e+03\n", " 3.570e+03 5.826e+04 1.676e+04 1.410e+03 7.600e+02 3.370e+03 1.350e+03\n", " 2.000e+03 2.460e+03 9.000e+02 9.200e+02 5.190e+03 1.730e+03 2.536e+04\n", " 1.700e+03 1.540e+03 2.930e+03 1.657e+04 2.800e+02 8.050e+03 8.540e+03\n", " 2.090e+03 2.610e+03 3.183e+04 4.360e+03 1.780e+03 1.624e+04 1.642e+04\n", " 3.050e+03 2.020e+03 2.950e+03 1.184e+04 8.530e+03 1.711e+04 2.970e+03\n", " 5.340e+03 1.480e+03 1.160e+03 3.720e+03 1.000e+02 1.400e+02 1.254e+04\n", " 9.800e+02 2.640e+03 1.100e+02 1.309e+04 4.130e+03 3.770e+03 1.250e+03\n", " 1.710e+03 5.800e+03 1.261e+04 9.670e+03 3.560e+03 1.860e+03 1.936e+04\n", " 8.500e+02 5.760e+03 1.470e+03 1.100e+03 2.770e+03 5.200e+02 1.697e+04\n", " 2.200e+02 3.850e+03 4.210e+03 6.360e+03 2.026e+04 5.140e+03 4.900e+02\n", " 5.630e+03 3.800e+02 6.870e+03 3.000e+02 1.168e+04 9.700e+02 1.505e+04\n", " 4.030e+03 8.650e+03 1.900e+02 3.150e+03 6.400e+02 1.640e+03 1.000e+03\n", " 1.353e+04 2.920e+03 7.930e+03 1.018e+04 1.080e+04 1.741e+04 6.680e+03\n", " 3.840e+03 1.357e+04 4.370e+03 5.710e+03 1.420e+03 3.200e+02 6.100e+02\n", " 1.110e+03 7.800e+02 6.880e+03 7.100e+02 1.310e+03 4.660e+03 7.000e+01\n", " 3.400e+02 3.520e+03 2.233e+04 4.630e+03 8.000e+01 2.719e+04 2.100e+02\n", " 1.534e+04 1.140e+03 4.580e+03 3.600e+02 4.520e+03 1.450e+03 1.618e+04\n", " 8.480e+03 3.640e+03 2.960e+03 7.840e+03 9.260e+03 2.320e+03 1.864e+04\n", " 6.970e+03 1.220e+03 2.260e+03 1.290e+03 1.460e+03 2.740e+03 8.000e+02\n", " 6.540e+03 4.150e+03 2.330e+03 9.580e+03 1.984e+04 3.863e+04 1.200e+02\n", " 1.543e+04 1.950e+03 2.470e+03 5.100e+03 1.866e+04 8.740e+03 1.130e+04\n", " 1.416e+04 3.871e+04 9.000e+03 3.140e+03 3.233e+04 8.140e+03 8.400e+03\n", " 1.314e+04 1.007e+04 3.130e+03 3.700e+02 6.700e+02 1.840e+03 4.040e+03\n", " 9.000e+01 1.060e+04 1.590e+03 2.280e+03 8.080e+03 1.577e+04 1.865e+04\n", " 8.090e+03 9.360e+03 1.649e+04 1.490e+03 8.880e+03 5.290e+03 1.500e+03\n", " 9.720e+03 8.970e+03 2.060e+03 2.890e+03 2.040e+03 4.490e+03 1.362e+04\n", " 6.470e+03 5.870e+03 8.250e+03 1.970e+03 1.112e+04 1.150e+03 1.571e+04\n", " 1.600e+02 2.140e+03 6.630e+03 1.800e+03 2.613e+04 1.300e+02 6.690e+03\n", " 1.600e+03 4.600e+02 2.120e+03 4.820e+03 1.085e+04 3.620e+03 2.313e+04\n", " 5.360e+03 9.200e+03 5.830e+03 4.970e+03 1.080e+03 8.240e+03 5.890e+03\n", " 1.560e+03 8.400e+02 8.460e+03 4.460e+03 6.210e+03 6.910e+03 4.650e+03\n", " 1.620e+03 3.530e+03 2.880e+03 1.635e+04 1.287e+04 8.100e+02 3.003e+04\n", " 1.302e+04 9.100e+02 3.900e+03 2.530e+03 5.000e+02 1.140e+04 1.510e+03\n", " 3.970e+03 5.780e+03 1.850e+03 7.586e+04 2.645e+04 3.390e+03 3.405e+04\n", " 1.790e+03 4.432e+04 4.160e+03 1.089e+04 3.110e+03 2.039e+04 5.260e+03\n", " 5.300e+03 5.030e+03 1.481e+04 8.300e+03 7.700e+02 1.940e+03 7.470e+03\n", " 2.550e+03 2.310e+03 1.430e+04 2.180e+03 1.496e+04 6.600e+02 4.680e+03\n", " 1.740e+03 1.260e+03 5.470e+03 2.780e+03 1.610e+03 9.900e+02 1.308e+04\n", " 8.200e+02 9.070e+03 1.280e+03 4.740e+03 8.260e+03 5.900e+02 4.000e+02\n", " 1.126e+04 2.000e+01 2.249e+04 3.330e+03 2.510e+03 6.900e+03 1.861e+04\n", " 7.160e+03 4.086e+04 2.062e+04 1.292e+04 1.816e+04 5.950e+03 4.700e+03\n", " 6.000e+02 6.500e+02 7.280e+03 5.020e+03 5.800e+02 8.990e+03 3.760e+03\n", " 4.260e+03 3.040e+03 3.000e+03 3.910e+03 1.910e+03 1.210e+03 7.000e+02\n", " 1.010e+03 4.270e+03 1.340e+03 2.110e+03 9.230e+03 1.190e+03 4.400e+03\n", " 2.270e+03 1.270e+04 2.097e+04 1.700e+02 7.250e+03 1.360e+03 4.400e+02\n", " 1.572e+04 3.340e+03 2.540e+03 3.306e+04 1.734e+04 8.220e+03 1.095e+04\n", " 1.031e+04 1.837e+04 2.070e+03 2.490e+03 7.300e+02 8.940e+03 9.910e+03\n", " 5.440e+03 3.000e+01 4.080e+03 6.920e+03 1.170e+03 1.074e+04 5.100e+02\n", " 1.690e+03 2.870e+03 3.350e+03 1.164e+04 2.753e+04 9.790e+03 1.017e+04\n", " 7.780e+03 8.040e+03 5.300e+02 2.300e+02 7.420e+03 2.130e+03 1.457e+04\n", " 2.000e+02 6.930e+03 7.860e+03 1.680e+03 2.700e+03 1.708e+04 1.517e+04\n", " 3.250e+03 4.140e+03 2.850e+03 2.005e+04 1.876e+04 1.504e+04 3.030e+03\n", " 3.780e+03 8.300e+02 8.550e+03 7.830e+03 2.900e+03 1.147e+04 4.870e+03\n", " 1.207e+04 3.200e+03 8.190e+03 1.532e+04 3.590e+03 5.650e+03 5.900e+03\n", " 1.754e+04 4.054e+04 1.399e+04 1.527e+04 3.528e+04 8.600e+02 1.920e+03\n", " 5.980e+03 6.400e+03 1.190e+04 4.380e+03 6.710e+03 1.370e+03 1.765e+04\n", " 4.330e+03 4.574e+04 3.410e+03 8.670e+03 1.313e+04 1.978e+04 2.390e+03\n", " 3.224e+04 2.649e+04 2.543e+04 9.820e+03 2.630e+03 2.064e+04 1.699e+04\n", " 6.300e+02 5.390e+03 1.549e+04 3.210e+03 1.530e+03 9.770e+03 1.728e+04\n", " 5.090e+03 7.180e+03 9.560e+03 4.833e+04 1.760e+03 2.477e+04 3.870e+03\n", " 1.862e+04 1.277e+04 9.640e+03 2.590e+03 2.453e+04 1.621e+04 1.757e+04\n", " 7.980e+03 3.290e+03 6.320e+03 5.070e+03 3.470e+03 2.720e+03 1.460e+04\n", " 6.890e+03 2.765e+04 8.860e+03 5.000e+03 1.120e+03 9.400e+02 1.404e+04\n", " 4.770e+03 3.440e+03 3.020e+03 6.270e+03 2.177e+04 7.400e+02 2.137e+04\n", " 1.020e+03 9.680e+03 2.181e+04 1.062e+04 3.860e+03 2.179e+04 2.919e+04\n", " 4.570e+03 7.550e+03 1.243e+04 1.970e+04 4.450e+03 1.867e+04 1.937e+04\n", " 1.854e+04 3.920e+03 3.170e+03 7.290e+03 1.980e+03 1.248e+04 3.100e+03\n", " 7.240e+03 1.871e+04 2.620e+03 6.420e+03 4.700e+02 5.150e+03 1.570e+04\n", " 5.460e+03 2.235e+04 2.810e+03 2.820e+03 6.860e+03 1.802e+04 1.670e+03\n", " 2.220e+03 1.430e+03 8.700e+02 6.300e+03 1.983e+04 9.430e+03 2.362e+04\n", " 9.630e+03 4.180e+03 3.890e+03 4.420e+03 2.193e+04 2.480e+03 3.460e+03\n", " 6.560e+03 5.840e+03 2.230e+03 1.964e+04 6.480e+03 4.610e+03 6.330e+03\n", " 1.520e+03 3.740e+03 1.990e+03 3.641e+04 7.680e+03 1.375e+04 2.715e+04\n", " 1.729e+04 2.699e+04 2.907e+04 3.750e+03 1.317e+04 5.080e+03 1.319e+04\n", " 5.350e+03 3.230e+03 3.380e+03 3.430e+03 8.110e+03 6.250e+03 1.202e+04\n", " 5.010e+03 1.805e+04 5.380e+03 1.668e+04 1.154e+04 2.210e+03 4.300e+03\n", " 5.220e+03 9.990e+03 1.045e+04 6.900e+02 1.830e+03 5.330e+03 1.400e+03\n", " 3.490e+03 1.900e+03 1.880e+03]\n", "The Unique Values of CompetitionOpenSinceMonth are: [ 9. 11. 12. 4. 10. 8. 3. 6. 5. 1. 2. 7.]\n", "The Unique Values of CompetitionOpenSinceYear are: [2008. 2007. 2006. 2009. 2015. 2013. 2014. 2000. 2011. 2010. 2005. 1999.\n", " 2003. 2012. 2004. 2002. 1961. 1995. 2001. 1990. 1994. 1900. 1998.]\n", "The Unique Values of Promo2 are: [0 1]\n", "The Unique Values of Promo2SinceWeek are: [ 0. 13. 14. 1. 45. 40. 26. 22. 5. 6. 10. 31. 37. 9. 39. 27. 18. 35.\n", " 23. 48. 36. 50. 44. 49. 28.]\n", "The Unique Values of Promo2SinceYear are: [ 0. 2010. 2011. 2012. 2009. 2014. 2015. 2013.]\n", "The Unique Values of Year are: [2015 2014 2013]\n", "The Unique Values of Month are: [ 7 6 5 4 3 2 1 12 11 10 9 8]\n", "The Unique Values of Day are: [31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8\n", " 7 6 5 4 3 2 1]\n" ] } ], "source": [ "for i in variables_in_df:\n", " print('The Unique Values of', i, 'are:', df[i].unique())" ] }, { "cell_type": "markdown", "metadata": { "id": "dauF4eBmngu3" }, "source": [ "## 3. ***Data Wrangling***" ] }, { "cell_type": "markdown", "metadata": { "id": "bKJF3rekwFvQ" }, "source": [ "### Data Wrangling Code" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 270 }, "id": "wk-9a2fpoLcV", "outputId": "221b3be9-76cc-4fe5-b565-86f82a21dc3b" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearYearMonthDay
015526355511ca1270.09.02008.000.00.02015731
114502054611ca1270.09.02008.000.00.02015730
213478252311ca1270.09.02008.000.00.02015729
312501156011ca1270.09.02008.000.00.02015728
411610261211ca1270.09.02008.000.00.02015727
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday StoreType \\\n", "0 1 5 5263 555 1 1 c \n", "1 1 4 5020 546 1 1 c \n", "2 1 3 4782 523 1 1 c \n", "3 1 2 5011 560 1 1 c \n", "4 1 1 6102 612 1 1 c \n", "\n", " Assortment CompetitionDistance CompetitionOpenSinceMonth \\\n", "0 a 1270.0 9.0 \n", "1 a 1270.0 9.0 \n", "2 a 1270.0 9.0 \n", "3 a 1270.0 9.0 \n", "4 a 1270.0 9.0 \n", "\n", " CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear Year \\\n", "0 2008.0 0 0.0 0.0 2015 \n", "1 2008.0 0 0.0 0.0 2015 \n", "2 2008.0 0 0.0 0.0 2015 \n", "3 2008.0 0 0.0 0.0 2015 \n", "4 2008.0 0 0.0 0.0 2015 \n", "\n", " Month Day \n", "0 7 31 \n", "1 7 30 \n", "2 7 29 \n", "3 7 28 \n", "4 7 27 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Write your code to make your dataset analysis ready.\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 487 }, "id": "qoZJ1sxoBky9", "outputId": "fe0a4ad1-bf34-4763-8f33-98f677e23a04" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearYearMonthDay
94225606462511aa570.011.02007.0113.02010.02015731
94324556760111aa570.011.02007.0113.02010.02015730
94423640272711aa570.011.02007.0113.02010.02015729
94522567164611aa570.011.02007.0113.02010.02015728
94621662763811aa570.011.02007.0113.02010.02015727
......................................................
101720411156477133901dc5350.09.02013.0122.02012.0201315
101720511155454032601dc5350.09.02013.0122.02012.0201314
101720611154429730001dc5350.09.02013.0122.02012.0201313
101720711153369730501dc5350.09.02013.0122.02012.0201312
1017208111520001dc5350.09.02013.0122.02012.0201311
\n", "

509178 rows × 17 columns

\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday StoreType \\\n", "942 2 5 6064 625 1 1 a \n", "943 2 4 5567 601 1 1 a \n", "944 2 3 6402 727 1 1 a \n", "945 2 2 5671 646 1 1 a \n", "946 2 1 6627 638 1 1 a \n", "... ... ... ... ... ... ... ... \n", "1017204 1115 6 4771 339 0 1 d \n", "1017205 1115 5 4540 326 0 1 d \n", "1017206 1115 4 4297 300 0 1 d \n", "1017207 1115 3 3697 305 0 1 d \n", "1017208 1115 2 0 0 0 1 d \n", "\n", " Assortment CompetitionDistance CompetitionOpenSinceMonth \\\n", "942 a 570.0 11.0 \n", "943 a 570.0 11.0 \n", "944 a 570.0 11.0 \n", "945 a 570.0 11.0 \n", "946 a 570.0 11.0 \n", "... ... ... ... \n", "1017204 c 5350.0 9.0 \n", "1017205 c 5350.0 9.0 \n", "1017206 c 5350.0 9.0 \n", "1017207 c 5350.0 9.0 \n", "1017208 c 5350.0 9.0 \n", "\n", " CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear \\\n", "942 2007.0 1 13.0 2010.0 \n", "943 2007.0 1 13.0 2010.0 \n", "944 2007.0 1 13.0 2010.0 \n", "945 2007.0 1 13.0 2010.0 \n", "946 2007.0 1 13.0 2010.0 \n", "... ... ... ... ... \n", "1017204 2013.0 1 22.0 2012.0 \n", "1017205 2013.0 1 22.0 2012.0 \n", "1017206 2013.0 1 22.0 2012.0 \n", "1017207 2013.0 1 22.0 2012.0 \n", "1017208 2013.0 1 22.0 2012.0 \n", "\n", " Year Month Day \n", "942 2015 7 31 \n", "943 2015 7 30 \n", "944 2015 7 29 \n", "945 2015 7 28 \n", "946 2015 7 27 \n", "... ... ... ... \n", "1017204 2013 1 5 \n", "1017205 2013 1 4 \n", "1017206 2013 1 3 \n", "1017207 2013 1 2 \n", "1017208 2013 1 1 \n", "\n", "[509178 rows x 17 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df['Promo2'] != 0]" ] }, { "cell_type": "markdown", "metadata": { "id": "cFvRK1AkHDVb" }, "source": [ "### Here we have created new column called \"PromoOpen\" from existing columns to measure more accurate period(in Months) from when the store was participating in the Promo2." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "4mUWy4QABk5j", "outputId": "a7f276ee-85ce-4682-cd66-a3a174098fcb" }, "outputs": [ { "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", "
PromoPromo2Promo2SinceYearPromo2SinceWeek
136448000.00.0
555187000.00.0
394385000.00.0
30389000.00.0
74437112009.037.0
611217012010.039.0
786387000.00.0
857951012011.018.0
535914000.00.0
397779112010.050.0
\n", "
" ], "text/plain": [ " Promo Promo2 Promo2SinceYear Promo2SinceWeek\n", "136448 0 0 0.0 0.0\n", "555187 0 0 0.0 0.0\n", "394385 0 0 0.0 0.0\n", "30389 0 0 0.0 0.0\n", "74437 1 1 2009.0 37.0\n", "611217 0 1 2010.0 39.0\n", "786387 0 0 0.0 0.0\n", "857951 0 1 2011.0 18.0\n", "535914 0 0 0.0 0.0\n", "397779 1 1 2010.0 50.0" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['Promo','Promo2','Promo2SinceYear', 'Promo2SinceWeek']].sample(10)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ytgDZkWvHpqm", "outputId": "46462fa6-9328-439f-8b2a-25eb666c4cf9" }, "outputs": [ { "data": { "text/plain": [ "Store 265\n", "DayOfWeek 2\n", "Sales 8928\n", "Customers 706\n", "Promo 1\n", "SchoolHoliday 0\n", "StoreType a\n", "Assortment a\n", "CompetitionDistance 4580.0\n", "CompetitionOpenSinceMonth 9.0\n", "CompetitionOpenSinceYear 2013.0\n", "Promo2 1\n", "Promo2SinceWeek 14.0\n", "Promo2SinceYear 2015.0\n", "Year 2014\n", "Month 12\n", "Day 16\n", "Name: 240267, dtype: object" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[240267] ##This shows large number of promoopen shows us that this store has never opted for second promotion that's why number of months are so high,\n", "## Same Concepts applied for all the stores with big promoOpen values \n", "##df[\"PromoOpen\"] = (12* (df[\"Year\"]-df[\"Promo2SinceYear\"])) + df[\"Month\"]-((df[\"Promo2SinceWeek\"]/4))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6t5KSSdZDX0Z", "outputId": "546d26e6-3151-4b79-c059-2b20a8029c0a" }, "outputs": [ { "data": { "text/plain": [ "Store 1\n", "DayOfWeek 4\n", "Sales 5020\n", "Customers 546\n", "Promo 1\n", "SchoolHoliday 1\n", "StoreType c\n", "Assortment a\n", "CompetitionDistance 1270.0\n", "CompetitionOpenSinceMonth 9.0\n", "CompetitionOpenSinceYear 2008.0\n", "Promo2 0\n", "Promo2SinceWeek 0.0\n", "Promo2SinceYear 0.0\n", "Year 2015\n", "Month 7\n", "Day 30\n", "Name: 1, dtype: object" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[1]\n", "#(12* (df[\"Year\"]-df[\"Promo2SinceYear\"])) + df[\"Month\"]-((df[\"Promo2SinceWeek\"]/4))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "id": "FAhGdeXEIp54" }, "outputs": [], "source": [ "# Creating New Column From Existing Columns\n", "df[\"CompetitionOpen\"] = (12* (df[\"Year\"]-df[\"CompetitionOpenSinceYear\"])) + (df[\"Month\"]-df[\"CompetitionOpenSinceMonth\"])" ] }, { "cell_type": "markdown", "metadata": { "id": "BpUSJ-0kPH3X" }, "source": [ "Here we have created new column called \"CompetitionOpen\" from existing columns to measure the period(in months) from whem the nearest competition has opened" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "mTRJXcugIp9Y", "outputId": "1cffb78f-1a00-4c3c-ed2c-ff907df105cc" }, "outputs": [ { "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", "
CompetitionDistanceCompetitionOpenSinceYearCompetitionOpenSinceMonthCompetitionOpen
21043313570.02010.05.032.0
611562240.02002.09.0146.0
619965620.02013.09.010.0
535412330.02006.09.078.0
3690051080.02008.04.087.0
4740746900.02013.09.02.0
352564210.02013.09.011.0
839032840.02006.09.076.0
753360250.02005.01.099.0
4628871280.02013.09.016.0
\n", "
" ], "text/plain": [ " CompetitionDistance CompetitionOpenSinceYear \\\n", "210433 13570.0 2010.0 \n", "611562 240.0 2002.0 \n", "619965 620.0 2013.0 \n", "535412 330.0 2006.0 \n", "369005 1080.0 2008.0 \n", "474074 6900.0 2013.0 \n", "352564 210.0 2013.0 \n", "839032 840.0 2006.0 \n", "753360 250.0 2005.0 \n", "462887 1280.0 2013.0 \n", "\n", " CompetitionOpenSinceMonth CompetitionOpen \n", "210433 5.0 32.0 \n", "611562 9.0 146.0 \n", "619965 9.0 10.0 \n", "535412 9.0 78.0 \n", "369005 4.0 87.0 \n", "474074 9.0 2.0 \n", "352564 9.0 11.0 \n", "839032 9.0 76.0 \n", "753360 1.0 99.0 \n", "462887 9.0 16.0 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Lets Check Our Columns\n", "df[['CompetitionDistance', 'CompetitionOpenSinceYear', 'CompetitionOpenSinceMonth', 'CompetitionOpen']].sample(10)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 427 }, "id": "hwEz6rLUBk8Q", "outputId": "ede4849f-176e-4715-945b-cfec7ad569ad" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayStoreTypeAssortmentCompetitionDistanceCompetitionOpenSinceMonthCompetitionOpenSinceYearPromo2Promo2SinceWeekPromo2SinceYearYearMonthDayCompetitionOpen
389052769265910aa29910.04.02015.000.00.02015331-1.0
389151884777010aa29910.04.02015.000.00.02015330-1.0
3892570000aa29910.04.02015.000.00.02015329-1.0
389356203821900aa29910.04.02015.000.00.02015328-1.0
389455418149900aa29910.04.02015.000.00.02015327-1.0
389554371146000aa29910.04.02015.000.00.02015326-1.0
389653432561300aa29910.04.02015.000.00.02015325-1.0
389752407353700aa29910.04.02015.000.00.02015324-1.0
389851402854000aa29910.04.02015.000.00.02015323-1.0
3899570000aa29910.04.02015.000.00.02015322-1.0
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday StoreType \\\n", "3890 5 2 7692 659 1 0 a \n", "3891 5 1 8847 770 1 0 a \n", "3892 5 7 0 0 0 0 a \n", "3893 5 6 2038 219 0 0 a \n", "3894 5 5 4181 499 0 0 a \n", "3895 5 4 3711 460 0 0 a \n", "3896 5 3 4325 613 0 0 a \n", "3897 5 2 4073 537 0 0 a \n", "3898 5 1 4028 540 0 0 a \n", "3899 5 7 0 0 0 0 a \n", "\n", " Assortment CompetitionDistance CompetitionOpenSinceMonth \\\n", "3890 a 29910.0 4.0 \n", "3891 a 29910.0 4.0 \n", "3892 a 29910.0 4.0 \n", "3893 a 29910.0 4.0 \n", "3894 a 29910.0 4.0 \n", "3895 a 29910.0 4.0 \n", "3896 a 29910.0 4.0 \n", "3897 a 29910.0 4.0 \n", "3898 a 29910.0 4.0 \n", "3899 a 29910.0 4.0 \n", "\n", " CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear \\\n", "3890 2015.0 0 0.0 0.0 \n", "3891 2015.0 0 0.0 0.0 \n", "3892 2015.0 0 0.0 0.0 \n", "3893 2015.0 0 0.0 0.0 \n", "3894 2015.0 0 0.0 0.0 \n", "3895 2015.0 0 0.0 0.0 \n", "3896 2015.0 0 0.0 0.0 \n", "3897 2015.0 0 0.0 0.0 \n", "3898 2015.0 0 0.0 0.0 \n", "3899 2015.0 0 0.0 0.0 \n", "\n", " Year Month Day CompetitionOpen \n", "3890 2015 3 31 -1.0 \n", "3891 2015 3 30 -1.0 \n", "3892 2015 3 29 -1.0 \n", "3893 2015 3 28 -1.0 \n", "3894 2015 3 27 -1.0 \n", "3895 2015 3 26 -1.0 \n", "3896 2015 3 25 -1.0 \n", "3897 2015 3 24 -1.0 \n", "3898 2015 3 23 -1.0 \n", "3899 2015 3 22 -1.0 " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Checking CompetitionOpen Negative figures \n", "df[df[\"CompetitionOpen\"]<0].head(10)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "szrLSNbfQ7ya", "outputId": "0342fddf-64d7-441d-e200-960ad3408c23" }, "outputs": [ { "data": { "text/plain": [ "6.0 17418\n", "4.0 17377\n", "8.0 17348\n", "7.0 17074\n", "9.0 16853\n", " ... \n", "199.0 28\n", "1357.0 28\n", "628.0 28\n", "1369.0 28\n", "616.0 28\n", "Name: CompetitionOpen, Length: 367, dtype: int64" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['CompetitionOpen'].value_counts()" ] }, { "cell_type": "markdown", "metadata": { "id": "JdB5Q68FP3Wc" }, "source": [ "### Here CompetitionOpen column has figures in negative which indicates that the store do not have any competition. So we have replace those negative figures with zero" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "id": "Da2biK2lRGZJ" }, "outputs": [], "source": [ "# now we can remove the CompetitionOpenSinceMonth\tCompetitionOpenSinceYear\tPromo2\tPromo2SinceWeek\tPromo2SinceYear" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "i3tgLBlSRZzQ" }, "outputs": [], "source": [ "df.drop(['CompetitionOpenSinceMonth',\t'CompetitionOpenSinceYear',\t'Promo2',\t'Promo2SinceWeek'\t,'Promo2SinceYear'], axis= 1, inplace = True)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RD2q0P6oQCP2", "outputId": "df8ea1b0-cdc3-4cee-dcf0-5c7dc2d387ba" }, "outputs": [ { "data": { "text/plain": [ "Store 0\n", "DayOfWeek 0\n", "Sales 0\n", "Customers 0\n", "Promo 0\n", "SchoolHoliday 0\n", "StoreType 0\n", "Assortment 0\n", "CompetitionDistance 0\n", "Year 0\n", "Month 0\n", "Day 0\n", "CompetitionOpen 0\n", "dtype: int64" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "markdown", "metadata": { "id": "HI9ZP0laH0D-" }, "source": [ "- Null Hypothesis - There is no relation between PromoOpen and Sales\n", "- Alternate Hypothesis - There is a relationship between promoOpen and sales" ] }, { "cell_type": "markdown", "metadata": { "id": "I79__PHVH19G" }, "source": [ "#### 2. Perform an appropriate statistical test." ] }, { "cell_type": "markdown", "metadata": { "id": "578E2V7j08f6" }, "source": [ "##### What all outlier treatment techniques have you used and why did you use those techniques?" ] }, { "cell_type": "markdown", "metadata": { "id": "uGZz5OrT1HH-" }, "source": [ "we have used the IQR method to do the outlier treatment, because there where too many outliers present, for which log transformation is not an appropriate method \n", "\n", "- The interquartile range (IQR) is a measure of dispersion that is used to identify and handle outliers in a dataset. It is defined as the difference between the 75th percentile and the 25th percentile of the data, and it is a robust measure of dispersion that is not affected by outliers." ] }, { "cell_type": "markdown", "metadata": { "id": "89xtkJwZ18nB" }, "source": [ "### 3. Categorical Encoding" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "id": "_3bauqHtH9Iq" }, "outputs": [], "source": [ "df2 = pd.get_dummies(df, drop_first = True)\n", "##pd.get_dummies() help you to do onehot encoding in single line of code, \n", "##and we do drop first = true to prevent some dummy values and errors, so in below code cng is gone to prevent\n", "## it from dummy var trap" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "1swtH2fqH9MS", "outputId": "03b9cade-f530-42a6-aae4-dc2b73197a8b" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayCompetitionDistanceYearMonthDayCompetitionOpenStoreType_bStoreType_cStoreType_dAssortment_bAssortment_c
0155263555111270.0201573182.001000
1145020546111270.0201573082.001000
2134782523111270.0201572982.001000
3125011560111270.0201572882.001000
4116102612111270.0201572782.001000
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday \\\n", "0 1 5 5263 555 1 1 \n", "1 1 4 5020 546 1 1 \n", "2 1 3 4782 523 1 1 \n", "3 1 2 5011 560 1 1 \n", "4 1 1 6102 612 1 1 \n", "\n", " CompetitionDistance Year Month Day CompetitionOpen StoreType_b \\\n", "0 1270.0 2015 7 31 82.0 0 \n", "1 1270.0 2015 7 30 82.0 0 \n", "2 1270.0 2015 7 29 82.0 0 \n", "3 1270.0 2015 7 28 82.0 0 \n", "4 1270.0 2015 7 27 82.0 0 \n", "\n", " StoreType_c StoreType_d Assortment_b Assortment_c \n", "0 1 0 0 0 \n", "1 1 0 0 0 \n", "2 1 0 0 0 \n", "3 1 0 0 0 \n", "4 1 0 0 0 " ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.head()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "id": "swMbI8F1pnsb" }, "outputs": [], "source": [ "#Not needed for this project" ] }, { "cell_type": "markdown", "metadata": { "id": "tKPNFj8cpqQ9" }, "source": [ "#### 9. Part of speech tagging" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "id": "oIFgk1iBpqz-" }, "outputs": [], "source": [ "#Not needed for this project" ] }, { "cell_type": "markdown", "metadata": { "id": "LS-J0cwrptdF" }, "source": [ "#### 10. Text Vectorization" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "id": "AATikdTopt_t" }, "outputs": [], "source": [ "#Not needed for this project" ] }, { "cell_type": "markdown", "metadata": { "id": "1c5gs3HQp6eA" }, "source": [ "##### Which text vectorization technique have you used and why?" ] }, { "cell_type": "markdown", "metadata": { "id": "XmEN_gdoqAuO" }, "source": [ "Not needed for this project" ] }, { "cell_type": "markdown", "metadata": { "id": "-oLEiFgy-5Pf" }, "source": [ "### 4. Feature Manipulation & Selection" ] }, { "cell_type": "markdown", "metadata": { "id": "C74aWNz2AliB" }, "source": [ "#### 1. Feature Manipulation" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "id": "h1qC4yhBApWC" }, "outputs": [], "source": [ "# Manipulate Features to minimize feature correlation and create new features\n", "#This involved selecting a subset of the available features to use in the model. This helped us to reduce complexity and improve the interpretability of the model, as well as potentially improving its performance.\n", "#We have already completed feature manipulation above in this colab notebook and created 2 new features called PromoOpen and CompetitionOpen" ] }, { "cell_type": "markdown", "metadata": { "id": "2DejudWSA-a0" }, "source": [ "#### 2. Feature Selection" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "YLhe8UmaBCEE", "outputId": "f8efefa6-fea9-4b46-f11e-7229519c486d" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayCompetitionDistanceYearMonthDayCompetitionOpenStoreType_bStoreType_cStoreType_dAssortment_bAssortment_c
0155263555111270.0201573182.001000
1145020546111270.0201573082.001000
2134782523111270.0201572982.001000
3125011560111270.0201572882.001000
4116102612111270.0201572782.001000
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday \\\n", "0 1 5 5263 555 1 1 \n", "1 1 4 5020 546 1 1 \n", "2 1 3 4782 523 1 1 \n", "3 1 2 5011 560 1 1 \n", "4 1 1 6102 612 1 1 \n", "\n", " CompetitionDistance Year Month Day CompetitionOpen StoreType_b \\\n", "0 1270.0 2015 7 31 82.0 0 \n", "1 1270.0 2015 7 30 82.0 0 \n", "2 1270.0 2015 7 29 82.0 0 \n", "3 1270.0 2015 7 28 82.0 0 \n", "4 1270.0 2015 7 27 82.0 0 \n", "\n", " StoreType_c StoreType_d Assortment_b Assortment_c \n", "0 1 0 0 0 \n", "1 1 0 0 0 \n", "2 1 0 0 0 \n", "3 1 0 0 0 \n", "4 1 0 0 0 " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Select your features wisely to avoid overfitting\n", "df2.head()" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "oTWAeVdcMNyn", "outputId": "d74094a6-bc6c-4c7e-da4e-7c30652e38c0" }, "outputs": [ { "data": { "text/plain": [ "['Store',\n", " 'DayOfWeek',\n", " 'Sales',\n", " 'Customers',\n", " 'Promo',\n", " 'SchoolHoliday',\n", " 'CompetitionDistance',\n", " 'Year',\n", " 'Month',\n", " 'Day',\n", " 'CompetitionOpen',\n", " 'StoreType_b',\n", " 'StoreType_c',\n", " 'StoreType_d',\n", " 'Assortment_b',\n", " 'Assortment_c']" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numerical_variables = ['Customers', 'CompetitionDistance', 'CompetitionOpen']\n", "categorical_variables = df2.columns.to_list()\n", "categorical_variables" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "id": "ZFJgvTfrMN1X" }, "outputs": [], "source": [ "for i in numerical_variables:\n", " categorical_variables.remove(i)\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "id": "B_aWVjXBN2Pp" }, "outputs": [], "source": [ "categorical_variables.remove('Sales')" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vfUkB7YHF8bE", "outputId": "c1b20810-87bb-46dd-e80a-cb18aff47e14" }, "outputs": [ { "data": { "text/plain": [ "['Store',\n", " 'DayOfWeek',\n", " 'Promo',\n", " 'SchoolHoliday',\n", " 'Year',\n", " 'Month',\n", " 'Day',\n", " 'StoreType_b',\n", " 'StoreType_c',\n", " 'StoreType_d',\n", " 'Assortment_b',\n", " 'Assortment_c']" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "categorical_variables" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_VX8V88rNNu4", "outputId": "a05907a7-2df5-40b4-9b6a-2b6189672c4d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numerical Variables are ['Customers', 'CompetitionDistance', 'CompetitionOpen']\n", "Categorical Variables are ['Store', 'DayOfWeek', 'Promo', 'SchoolHoliday', 'Year', 'Month', 'Day', 'StoreType_b', 'StoreType_c', 'StoreType_d', 'Assortment_b', 'Assortment_c']\n" ] } ], "source": [ "print('Numerical Variables are', numerical_variables)\n", "print('Categorical Variables are', categorical_variables)" ] }, { "cell_type": "markdown", "metadata": { "id": "TNVZ9zx19K6k" }, "source": [ "### 5. Data Transformation" ] }, { "cell_type": "markdown", "metadata": { "id": "nqoHp30x9hH9" }, "source": [ "#### Do you think that your data needs to be transformed? If yes, which transformation have you used. Explain Why?" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "id": "pERpwHRzOaQM" }, "outputs": [], "source": [ "final_df = df2" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 448 }, "id": "I23v9VVPOaWF", "outputId": "869f61a7-954b-493d-9c81-3aee3e983245" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.distplot(x=final_df['Sales'])\n" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 540 }, "id": "7TLjt1w_wRBL", "outputId": "0e1e4994-17fe-49e3-cefa-aef2fb9a4ea3" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAFlCAYAAAAamLmIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgZElEQVR4nO3dfZBd9X3f8fe34iHiQYgHd4cgkcUTuQ1IKYEdTE0Sb0yDJcCBdFxXggnCZqy4hjxMmUmE0wmpHds4GeIG18FVgsaiw2PtOJKxKFEJa6f2yAYMQQIHs+DFSJFRLAFCxsXI/vaP+5N9V7vas2gf7v3tvl8zZ+653/P0u/cnpA/nd865kZlIkiTV5l90ugGSJEmHwhAjSZKqZIiRJElVMsRIkqQqGWIkSVKVDDGSJKlKh3W6AZPtpJNOyt7e3inZ9/e+9z2OPvroKdl3V3ttX+v18Dr/uMzafquc/VYn+60+3d5nDz/88Hcz8w2jLavzX6Ux9Pb28tBDD03JvgcGBujv75+SfXe1L5bv8619nW3HIZq1/VY5+61O9lt9ur3PIuLZgy1zOEmSJFXJECNJkqpkiJEkSVUyxEiSpCoZYiRJUpUMMZIkqUqNISYi1kbEzojY2la7KyIeLdNQRDxa6r0R8f22ZZ9q2+bsiNgSEYMRcVNERKmfEBGbIuKp8np8qUdZbzAiHouIsyb902t83tpX7e3VkqSZazxnYj4NLG0vZOZ/zMwzM/NM4LPAX7ctfnr/ssx8X1v9ZuC9wKIy7d/nauD+zFwE3F/eAyxrW3dV2V6SJAkYR4jJzC8Bu0dbVs6mvAu4Y6x9RMTJwLzM3JyZCdwKXFoWXwKsK/PrDqjfmi2bgfllP5IkSRO+JuaXgOcz86m22mkR8UhEfDEifqnUTgG2ta2zrdQAejJzR5n/DtDTts1zB9lG0+nhJ1qTJEldZKI/O7CC4WdhdgCnZuauiDgb+JuIOGO8O8vMjIh8vY2IiFW0hpzo6elhYGDg9e5iXPbu3Ttl++5m/XEMQLWffbb2W+3stzrZb/Wpuc8OOcRExGHAvwfO3l/LzFeBV8v8wxHxNPAmYDuwoG3zBaUG8HxEnJyZO8pw0c5S3w4sPMg2w2TmGmANQF9fX07Vb0B0++9LTJny20m1fvZZ22+Vs9/qZL/Vp+Y+m8hw0r8D/jEzfzxMFBFviIg5Zf6NtC7KfaYMF+2JiHPLdTRXAOvLZhuAlWV+5QH1K8pdSucCL7UNO0mSpFmu8UxMRNwB9AMnRcQ24PrMvAVYzsgLen8Z+GBEvAb8CHhfZu6/KPj9tO50mgvcWyaAG4C7I+Iq4FlaFwoDbAQuBAaBV4B3H8Lnm1Rbtr/Elau/MOY6QzdcNE2tkSRpdmsMMZm54iD1K0epfZbWLdejrf8QsHiU+i7g/FHqCVzd1D5JkjQ7+cReSZJUpYnenaTZ4OSTOt0CSZJGMMSo2Zt6O90CSZJGcDhJkiRVyRCjZi9/rzVJktRFDDFq9vVvtCZJkrqIIUaSJFXJECNJkqpkiJEkSVUyxEiSpCoZYiRJUpUMMZIkqUo+sVfNzvq5TrdAkqQRDDFqduzRnW6BJEkjOJwkSZKqZIhRs28OtSZJkrqIIUbNdny3NUmS1EUMMZIkqUqGGEmSVCVDjCRJqpIhRpIkVckQI0mSquTD7tTsmKM63QJJkkYwxKjZ2ad3ugWSJI3gcJIkSaqSIUaSJFXJEKNmX3yoNUmS1EUMMZIkqUqGGEmSVCVDjCRJqpIhRpIkVckQI0mSqmSIkSRJVfKJvWq26Gc63QJJkkYwxKjZT7+h0y2QJGkEh5MkSVKVGkNMRKyNiJ0RsbWt9kcRsT0iHi3ThW3LrouIwYh4MiLe3lZfWmqDEbG6rX5aRHy11O+KiCNK/cjyfrAs7520T63X55/+uTVJktRFxnMm5tPA0lHqH8/MM8u0ESAiTgeWA2eUbf4iIuZExBzgk8Ay4HRgRVkX4GNlXz8LvABcVepXAS+U+sfLeuqEp55tTZIkdZHGEJOZXwJ2j3N/lwB3ZuarmfktYBA4p0yDmflMZv4AuBO4JCICeBvwmbL9OuDStn2tK/OfAc4v60uSJE3owt5rIuIK4CHg2sx8ATgF2Ny2zrZSA3jugPqbgROBFzNz3yjrn7J/m8zcFxEvlfW/e2BDImIVsAqgp6eHgYGBCXysg+uZC9cu2TfmOlN17E7qj2OAej/b3r17q237bGa/1cl+q0/NfXaoIeZm4ENAltcbgfdMVqNer8xcA6wB6Ovry/7+/ik5ziduW8+NW8b+yoYun5pjd1T5Beup+l6n2sDAQLVtn83stzrZb/Wpuc8O6e6kzHw+M3+YmT8C/pLWcBHAdmBh26oLSu1g9V3A/Ig47ID6sH2V5ceV9SVJkg4txETEyW1vfx3Yf+fSBmB5ubPoNGAR8DXgQWBRuRPpCFoX/27IzAQeAN5Ztl8JrG/b18oy/07g78r6kiRJzcNJEXEH0A+cFBHbgOuB/og4k9Zw0hDwmwCZ+XhE3A08AewDrs7MH5b9XAPcB8wB1mbm4+UQvw/cGRF/DDwC3FLqtwD/MyIGaV1YvHyiH1aSJM0cjSEmM1eMUr5llNr+9T8MfHiU+kZg4yj1Z/jJcFR7/f8B/6GpfZoGb+3rdAskSRrBJ/ZKkqQqGWIkSVKVDDFq9vATrUmSpC7ir1ir2d5XOt0CSZJG8EyMJEmqkiFGkiRVyRAjSZKqZIiRJElVMsRIkqQqeXeSmp18UqdbIEnSCIYYNXtTb6dbIEnSCA4nSZKkKhli1Ozl77UmSZK6iCFGzb7+jdYkSVIXMcRIkqQqGWIkSVKVDDGSJKlKhhhJklQlQ4wkSaqSIUaSJFXJJ/aq2Vk/1+kWSJI0giFGzY49utMtkCRpBIeTJElSlQwxavbNodYkSVIXMcSo2Y7vtiZJkrqIIUaSJFXJECNJkqpkiJEkSVUyxEiSpCoZYiRJUpV82J2aHXNUp1sgSdIIhhg1O/v0TrdAkqQRHE6SJElVMsRIkqQqGWLU7IsPtSZJkrqIIUaSJFWpMcRExNqI2BkRW9tqfxoR/xgRj0XE5yJifqn3RsT3I+LRMn2qbZuzI2JLRAxGxE0REaV+QkRsioinyuvxpR5lvcFynLMm/dNLkqRqjedMzKeBpQfUNgGLM/PngW8C17UtezozzyzT+9rqNwPvBRaVaf8+VwP3Z+Yi4P7yHmBZ27qryvaSJEnAOEJMZn4J2H1A7W8zc195uxlYMNY+IuJkYF5mbs7MBG4FLi2LLwHWlfl1B9RvzZbNwPyyH0mSpEl5Tsx7gLva3p8WEY8Ae4D/kpl/D5wCbGtbZ1upAfRk5o4y/x2gp8yfAjw3yjY7OEBErKJ1toaenh4GBgYm8nkOqmcuXLtk35jrTNWxO6k/jgHq/Wx79+6ttu2zmf1WJ/utPjX32YRCTET8AbAPuK2UdgCnZuauiDgb+JuIOGO8+8vMjIh8ve3IzDXAGoC+vr7s7+9/vbsYl0/ctp4bt4z9lQ1dPjXH7qhyZ9JUfa9TbWBgoNq2z2b2W53st/rU3GeHHGIi4krgYuD8MkREZr4KvFrmH46Ip4E3AdsZPuS0oNQAno+IkzNzRxku2lnq24GFB9lG02nRz3S6BZIkjXBIt1hHxFLg94Bfy8xX2upviIg5Zf6NtC7KfaYMF+2JiHPLXUlXAOvLZhuAlWV+5QH1K8pdSucCL7UNO2k6/fQbWpMkSV2k8UxMRNwB9AMnRcQ24HpadyMdCWwqd0pvLnci/TLwwYh4DfgR8L7M3H9R8Ptp3ek0F7i3TAA3AHdHxFXAs8C7Sn0jcCEwCLwCvHsiH1SSJM0sjSEmM1eMUr7lIOt+FvjsQZY9BCwepb4LOH+UegJXN7VP0+Cf/rn16tkYSVIX8Ves1eypZ1uvhhhJUhfxZwckSVKVDDGSJKlKhhhJklQlQ4wkSaqSIUaSJFXJECNJkqrkLdYCoHf1FxrXGXrrNDREkqRx8kyMJEmqkiFGkiRVyeEkNfr8W07odBMkSRrBEKNGS447vNNNkCRpBIeTJElSlQwxkiSpSoYYSZJUJUOMJEmqkiFGkiRVybuT1Oj2b78CwGUdbockSe0MMWr0gcdfbr2O56cJbrhoqpsjSRLgcJIkSaqUIUaNFs87jMXzPGknSeou/sukRvecdyIAvfc+3+GWSJL0E56JkSRJVTLESJKkKhliJElSlQwxkiSpSoYYSZJUJUOMJEmqkrdYq9HFX97V6SZIkjSCIUaNtu7Z1+kmSJI0gsNJkiSpSp6JmQV6x/HDjWP5yBnHAj/5IUhJkrqBZ2LU6LJTj+KyU4/qdDMkSRrGECNJkqpkiJEkSVUyxEiSpCqNK8RExNqI2BkRW9tqJ0TEpoh4qrweX+oRETdFxGBEPBYRZ7Vts7Ks/1RErGyrnx0RW8o2N0VEjHUMSZKk8Z6J+TSw9IDaauD+zFwE3F/eAywDFpVpFXAztAIJcD3wZuAc4Pq2UHIz8N627ZY2HEOSJM1y4woxmfklYPcB5UuAdWV+HXBpW/3WbNkMzI+Ik4G3A5syc3dmvgBsApaWZfMyc3NmJnDrAfsa7RiaRlteeo0tL73W6WZIkjTMRJ4T05OZO8r8d4CeMn8K8FzbettKbaz6tlHqYx1jmIhYReusDz09PQwMDBzCx2nWMxeuXTL202un6tgT0dTmJgMv7yz7Gce6Xfj59+7d25Xt0tjstzrZb/Wpuc8m5WF3mZkRkZOxr0M5RmauAdYA9PX1ZX9//5S04RO3refGLWN/ZUOXT82xJ+LKCT7s7vXoxs8/MDDAVP2Z0NSx3+pkv9Wn5j6byN1Jz5ehIMrrzlLfDixsW29BqY1VXzBKfaxjSJKkWW4iIWYDsP8Oo5XA+rb6FeUupXOBl8qQ0H3ABRFxfLmg9wLgvrJsT0ScW+5KuuKAfY12DE2joWU9DC0bdSRPkqSOGddwUkTcAfQDJ0XENlp3Gd0A3B0RVwHPAu8qq28ELgQGgVeAdwNk5u6I+BDwYFnvg5m5/2Lh99O6A2oucG+ZGOMYkiRplhtXiMnMFQdZdP4o6yZw9UH2sxZYO0r9IWDxKPVdox1DkiTJJ/ZKkqQqGWIkSVKVDDGSJKlKhhhJklSlSXnYnWa267buGfe6veN4sN7QDRdNpDmSJAGGGI3DHc99v9NNkCRpBIeTJElSlQwxarRi4VxWLJzb6WZIkjSMw0lq9NHF8wCHlSRJ3cUzMZIkqUqGGEmSVCVDjCRJqpIhRpIkVckQI0mSqmSIkSRJVfIWazXqvff5TjdBkqQRPBMjSZKqZIiRJElVMsSo0effcgKff8sJnW6GJEnDeE2MGi057vBON0GSpBE8EyNJkqpkiJEkSVUyxEiSpCoZYiRJUpUMMZIkqUrenaRGt3/7lU43QZKkEQwxavSBx1/udBMkSRrB4SRJklQlQ4waLZ53GIvnedJOktRd/JdJje4570TAX7OWJHUXz8RIkqQqGWIkSVKVDDGSJKlKhhhJklQlQ4wkSaqSIUaSJFXpkG+xjoh/BdzVVnoj8IfAfOC9wD+X+gcyc2PZ5jrgKuCHwG9n5n2lvhT4c2AO8FeZeUOpnwbcCZwIPAz8Rmb+4FDbrENz8Zd3Ter+eld/oXGdoRsumtRjSpJmnkM+E5OZT2bmmZl5JnA28ArwubL44/uXtQWY04HlwBnAUuAvImJORMwBPgksA04HVpR1AT5W9vWzwAu0ApCm2dY9+9i6Z1+nmyFJ0jCTNZx0PvB0Zj47xjqXAHdm5quZ+S1gEDinTIOZ+Uw5y3IncElEBPA24DNl+3XApZPUXkmSVLnJemLvcuCOtvfXRMQVwEPAtZn5AnAKsLltnW2lBvDcAfU30xpCejEz942y/jARsQpYBdDT08PAwMCEPszB9MyFa5eMfUZiqo49EU1tbvIr8+cD8MCLL068MeM0md/j3r17u7JfNDb7rU72W31q7rMJh5iIOAL4NeC6UroZ+BCQ5fVG4D0TPc5YMnMNsAagr68v+/v7p+Q4n7htPTduGfsrG7p8ao49EVeO4xqUsfzWsqMBuPjv905Gc8ZlMr/HgYEBpurPhKaO/VYn+60+NffZZJyJWQZ8PTOfB9j/ChARfwncU95uBxa2bbeg1DhIfRcwPyIOK2dj2teXJEmz3GRcE7OCtqGkiDi5bdmvA1vL/AZgeUQcWe46WgR8DXgQWBQRp5WzOsuBDZmZwAPAO8v2K4H1k9BeSZI0A0zoTExEHA38KvCbbeU/iYgzaQ0nDe1flpmPR8TdwBPAPuDqzPxh2c81wH20brFem5mPl339PnBnRPwx8Ahwy0TaO9OM51ZlSZJmqgmFmMz8Hq0LcNtrvzHG+h8GPjxKfSOwcZT6M7TuXpIkSRrGJ/ZKkqQqTdYt1prBtrz0WqebIEnSCIYYNXrHV3Z3ugmSJI3gcJIkSaqSIUaSJFXJEKNGQ8t6GFrW0+lmSJI0jCFGkiRVyRAjSZKqZIiRJElVMsRIkqQqGWIkSVKVDDGSJKlKPrFXja7buqfTTZAkaQRDjBrd8dz3O90ESZJGcDhJkiRVyRCjRisWzmXFwrmdboYkScM4nKRGH108D3BYSZLUXTwTI0mSqmSIkSRJVTLESJKkKhliJElSlQwxkiSpSoYYSZJUJW+xVqPee5/vdBMkSRrBMzGSJKlKhhhJklQlh5PU6PNvOQGAd3xl97Qds3f1FxrXGbrhomloiSSpWxli1GjJcYd3ugmSJI3gcJIkSaqSIUaSJFXJECNJkqpkiJEkSVUyxEiSpCp5d5Ia3f7tVzrdBEmSRjDEqNEHHn+5002QJGkEh5MkSVKVJhxiImIoIrZExKMR8VCpnRARmyLiqfJ6fKlHRNwUEYMR8VhEnNW2n5Vl/aciYmVb/eyy/8GybUy0zXp9Fs87jMXzPGknSeouk3Um5lcy88zM7CvvVwP3Z+Yi4P7yHmAZsKhMq4CboRV6gOuBNwPnANfvDz5lnfe2bbd0ktqscbrnvBO557wTO90MSZKGmarhpEuAdWV+HXBpW/3WbNkMzI+Ik4G3A5syc3dmvgBsApaWZfMyc3NmJnBr274kSdIsNhljBAn8bUQk8D8ycw3Qk5k7yvLvAD1l/hTgubZtt5XaWPVto9SHiYhVtM7s0NPTw8DAwAQ/0uh65sK1S/aNuc5UHXs0TW2p/XhNxvtd7927d1r7RZPDfquT/VafmvtsMkLML2bm9oj4l8CmiPjH9oWZmSXgTJkSnNYA9PX1ZX9//5Qc5xO3refGLWN/ZUOXT82xR3PlOH7peTL81oLWa9Nnn27j/a4HBgaYqj8Tmjr2W53st/rU3GcTHk7KzO3ldSfwOVrXtDxfhoIorzvL6tuBhW2bLyi1seoLRqlLkqRZbkIhJiKOjohj988DFwBbgQ3A/juMVgLry/wG4Ipyl9K5wEtl2Ok+4IKIOL5c0HsBcF9Zticizi13JV3Rti9JkjSLTXR8oAf4XLnr+TDg9sz83xHxIHB3RFwFPAu8q6y/EbgQGAReAd4NkJm7I+JDwINlvQ9m5u4y/37g08Bc4N4ySZKkWW5CISYznwH+zSj1XcD5o9QTuPog+1oLrB2l/hCweCLt1MRc/OVdnW6CJEkjdNeVmupKW/d0111JkiSBPzsgSZIqZYhRo4+ccSwfOePYTjdDkqRhDDFqdNmpR3HZqUd1uhmSJA1jiJEkSVUyxEiSpCoZYiRJUpW8xVrV6h3Hb0cN3XDRNLREktQJnomRJElV8kyMGm156bVON0GSpBEMMWr0jq/sbl5JkqRp5nCSJEmqkiFGkiRVyRCjRkPLehha1tPpZkiSNIwhRpIkVckQI0mSqmSIkSRJVTLESJKkKhliJElSlXzYXZcaz+8CSZI0mxli1Oi6rXs63QRJkkYwxKjRHc99v9NNkCRpBK+JkSRJVTLEqNGKhXNZsXBup5shSdIwDiep0UcXzwMcVpIkdRfPxEiSpCoZYiRJUpUcTtKM1rv6C1y7ZB9XNjx3Z+iGi6apRZKkyeKZGEmSVCVDjCRJqpIhRpIkVclrYtSo997nO90ESZJG8EyMJEmqkiFGkiRVyRCjRp9/ywl8/i0ndLoZkiQNc8ghJiIWRsQDEfFERDweEb9T6n8UEdsj4tEyXdi2zXURMRgRT0bE29vqS0ttMCJWt9VPi4ivlvpdEXHEobZXh27JcYez5LjDO90MSZKGmciZmH3AtZl5OnAucHVEnF6WfTwzzyzTRoCybDlwBrAU+IuImBMRc4BPAsuA04EVbfv5WNnXzwIvAFdNoL2SJGkGOeQQk5k7MvPrZf5l4BvAKWNscglwZ2a+mpnfAgaBc8o0mJnPZOYPgDuBSyIigLcBnynbrwMuPdT2SpKkmWVSromJiF7gF4CvltI1EfFYRKyNiONL7RTgubbNtpXaweonAi9m5r4D6pIkSRN/TkxEHAN8FvjdzNwTETcDHwKyvN4IvGeix2lowypgFUBPTw8DAwNTcpyeuXDtkn1jrjNZx246Tid0Y5vGYzr7TZNn79699kuF7Lf61NxnEwoxEXE4rQBzW2b+NUBmPt+2/C+Be8rb7cDCts0XlBoHqe8C5kfEYeVsTPv6w2TmGmANQF9fX/b390/kYx3UJ25bz41bxv7Khi6fnGM3/WDhdPqtBa3Xps/era5dsm/a+k2TZ2BggKn6b1lTx36rT819NpG7kwK4BfhGZv5ZW/3kttV+Hdha5jcAyyPiyIg4DVgEfA14EFhU7kQ6gtbFvxsyM4EHgHeW7VcC6w+1vTp0t3/7FW7/9iudboYkScNM5H+tzwN+A9gSEY+W2gdo3V10Jq3hpCHgNwEy8/GIuBt4gtadTVdn5g8BIuIa4D5gDrA2Mx8v+/t94M6I+GPgEVqhSdPsA4+/3OkmSJI0wiGHmMz8v0CMsmjjGNt8GPjwKPWNo22Xmc/QuntJkiRpmDovctC0Wjyv9cdk6546L+wdj95xXIM0dMNF09ASSdJ4GWLU6J7zTgT8NWtJUnfxt5MkSVKVDDGSJKlKhhhJklQlQ4wkSaqSIUaSJFXJECNJkqrkLdZqdPGXd3W6CZIkjWCIUaOZ/JA7SVK9HE6SJElV8kyMGn3kjGMBfwjSnyaQpO7imRg1uuzUo7js1KM63QxJkoYxxEiSpCoZYiRJUpUMMZIkqUqGGEmSVCXvTuqA8dzlIkmSxmaIUaMtL73W6SZIkjSCIUaN3vGV3Z1ugiRJIxhipEnkA/Ekafp4Ya8kSaqSIUaNhpb1MLSsp9PNkCRpGEOMJEmqkiFGkiRVyQt7pWnmxb+SNDk8EyNJkqpkiJEkSVUyxEiSpCp5TYwaXbd1T6ebMOt43YwkNTPEqNEdz32/002QJGkEh5MkSVKVPBOjRisWzgU8I9NtHHKSNNsZYtToo4vnAYaYGo0n6IBhR1KdHE6SJElV8kzMJBvv//lK3cShKUk16voQExFLgT8H5gB/lZk3dLhJ0qxk0JHUbbo6xETEHOCTwK8C24AHI2JDZj7R2ZZJGs1knYk0DEkaj64OMcA5wGBmPgMQEXcClwCGGGkG6139Ba5dso8rJxiKDEPSzNbtIeYU4Lm299uAN3eoLZIq043XqBmspMnT7SFmXCJiFbCqvN0bEU9O0aFOAr47RfvuWvGxTrdgYn57lvZb7WZqv9X+39M4zMh+m+G6vc9+5mALuj3EbAcWtr1fUGrDZOYaYM1UNyYiHsrMvqk+jiaX/VYn+61O9lt9au6zbn9OzIPAoog4LSKOAJYDGzrcJkmS1AW6+kxMZu6LiGuA+2jdYr02Mx/vcLMkSVIX6OoQA5CZG4GNnW5HMeVDVpoS9lud7Lc62W/1qbbPIjM73QZJkqTXrduviZEkSRqVIWYcImJpRDwZEYMRsbrT7ZmNImJtROyMiK1ttRMiYlNEPFVejy/1iIibSn89FhFntW2zsqz/VESsbKufHRFbyjY3RURM7yecmSJiYUQ8EBFPRMTjEfE7pW7fdbGI+KmI+FpE/EPpt/9a6qdFxFfLd31XueGCiDiyvB8sy3vb9nVdqT8ZEW9vq/v36hSIiDkR8UhE3FPez+w+y0ynMSZaFxQ/DbwROAL4B+D0Trdrtk3ALwNnAVvban8CrC7zq4GPlfkLgXuBAM4FvlrqJwDPlNfjy/zxZdnXyrpRtl3W6c88EybgZOCsMn8s8E3gdPuuu6fyXR5T5g8Hvlq+47uB5aX+KeA/lfn3A58q88uBu8r86eXvzCOB08rfpXP8e3VK++4/A7cD95T3M7rPPBPT7Mc/fZCZPwD2//SBplFmfgnYfUD5EmBdmV8HXNpWvzVbNgPzI+Jk4O3ApszcnZkvAJuApWXZvMzcnK3/im9t25cmIDN3ZObXy/zLwDdoPYnbvuti5fvfW94eXqYE3gZ8ptQP7Lf9/fkZ4PxyRuwS4M7MfDUzvwUM0vo71b9Xp0BELAAuAv6qvA9meJ8ZYpqN9tMHp3SoLRquJzN3lPnvAD1l/mB9NlZ92yh1TaJyuvoXaP1fvX3X5cqwxKPATlqh8WngxczcV1Zp/65/3D9l+UvAibz+/tTE/Dfg94AflfcnMsP7zBCjGaH8X7i32nWpiDgG+Czwu5m5p32ZfdedMvOHmXkmrSelnwP86862SGOJiIuBnZn5cKfbMp0MMc3G9dMH6ojny3AC5XVnqR+sz8aqLxilrkkQEYfTCjC3ZeZfl7J9V4nMfBF4APi3tIb39j9frP27/nH/lOXHAbt4/f2pQ3ce8GsRMURrqOdtwJ8zw/vMENPMnz7oXhuA/XeprATWt9WvKHe6nAu8VIYu7gMuiIjjy90wFwD3lWV7IuLcMiZ8Rdu+NAHl+7wF+EZm/lnbIvuui0XEGyJifpmfC/wqreuZHgDeWVY7sN/29+c7gb8rZ9g2AMvLnTCnAYtoXYjt36uTLDOvy8wFmdlL6/v8u8y8nJneZ52+sriGidYdE9+kNSb8B51uz2ycgDuAHcBrtMZir6I1fns/8BTwf4ATyroBfLL01xagr20/76F1odog8O62eh+wtWzz3ykPgnSacL/9Iq2hoseAR8t0oX3X3RPw88Ajpd+2An9Y6m+k9Q/aIPC/gCNL/afK+8Gy/I1t+/qD0jdP0nbnmH+vTmn/9fOTu5NmdJ/5xF5JklQlh5MkSVKVDDGSJKlKhhhJklQlQ4wkSaqSIUaSJFXJECNJkqpkiJEkSVUyxEiSpCr9f3k85cDCF9YmAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ " fig = plt.figure(figsize=(9, 6))\n", " ax = fig.gca()\n", " final_df['Sales'].hist(bins=50, ax = ax)\n", " ax.axvline(final_df['Sales'].mean(), color = 'pink',linestyle='dashed', linewidth=2)\n" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 49 }, "id": "hYI8hEmeOkEh", "outputId": "e53dc576-6db2-4176-c743-e5cf88d99153" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayCompetitionDistanceYearMonthDayCompetitionOpenStoreType_bStoreType_cStoreType_dAssortment_bAssortment_c
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [Store, DayOfWeek, Sales, Customers, Promo, SchoolHoliday, CompetitionDistance, Year, Month, Day, CompetitionOpen, StoreType_b, StoreType_c, StoreType_d, Assortment_b, Assortment_c]\n", "Index: []" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df[final_df['Sales'] == float('-inf')]" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "id": "Wv7oBeYRx94l" }, "outputs": [], "source": [ "final_df.drop(final_df[final_df['Sales'] == float('-inf')].index, inplace=True)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "EIoOglU0yjM5", "outputId": "7e700885-9c25-4904-fdf9-43cccb1ff941" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 1017209 entries, 0 to 1017208\n", "Data columns (total 16 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Store 1017209 non-null int64 \n", " 1 DayOfWeek 1017209 non-null int64 \n", " 2 Sales 1017209 non-null int64 \n", " 3 Customers 1017209 non-null int64 \n", " 4 Promo 1017209 non-null int64 \n", " 5 SchoolHoliday 1017209 non-null int64 \n", " 6 CompetitionDistance 1017209 non-null float64\n", " 7 Year 1017209 non-null int64 \n", " 8 Month 1017209 non-null int64 \n", " 9 Day 1017209 non-null int64 \n", " 10 CompetitionOpen 1017209 non-null float64\n", " 11 StoreType_b 1017209 non-null uint8 \n", " 12 StoreType_c 1017209 non-null uint8 \n", " 13 StoreType_d 1017209 non-null uint8 \n", " 14 Assortment_b 1017209 non-null uint8 \n", " 15 Assortment_c 1017209 non-null uint8 \n", "dtypes: float64(2), int64(9), uint8(5)\n", "memory usage: 130.2 MB\n" ] } ], "source": [ "final_df.info()" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "ad5_S24gHI_h", "outputId": "5ce153cf-bf13-44b2-a106-bef68fb9c882" }, "outputs": [ { "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", "
StoreDayOfWeekSalesCustomersPromoSchoolHolidayCompetitionDistanceYearMonthDayCompetitionOpenStoreType_bStoreType_cStoreType_dAssortment_bAssortment_c
0155263555111270.0201573182.001000
1145020546111270.0201573082.001000
2134782523111270.0201572982.001000
3125011560111270.0201572882.001000
4116102612111270.0201572782.001000
\n", "
" ], "text/plain": [ " Store DayOfWeek Sales Customers Promo SchoolHoliday \\\n", "0 1 5 5263 555 1 1 \n", "1 1 4 5020 546 1 1 \n", "2 1 3 4782 523 1 1 \n", "3 1 2 5011 560 1 1 \n", "4 1 1 6102 612 1 1 \n", "\n", " CompetitionDistance Year Month Day CompetitionOpen StoreType_b \\\n", "0 1270.0 2015 7 31 82.0 0 \n", "1 1270.0 2015 7 30 82.0 0 \n", "2 1270.0 2015 7 29 82.0 0 \n", "3 1270.0 2015 7 28 82.0 0 \n", "4 1270.0 2015 7 27 82.0 0 \n", "\n", " StoreType_c StoreType_d Assortment_b Assortment_c \n", "0 1 0 0 0 \n", "1 1 0 0 0 \n", "2 1 0 0 0 \n", "3 1 0 0 0 \n", "4 1 0 0 0 " ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df.head()" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "lNT-2ANHHJOo", "outputId": "0d740165-f2e6-43a0-c2d0-c7fc23c729fe" }, "outputs": [ { "data": { "text/plain": [ "['Store',\n", " 'DayOfWeek',\n", " 'Promo',\n", " 'SchoolHoliday',\n", " 'Year',\n", " 'Month',\n", " 'Day',\n", " 'StoreType_b',\n", " 'StoreType_c',\n", " 'StoreType_d',\n", " 'Assortment_b',\n", " 'Assortment_c']" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "categorical_variables" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XQUeQK9cHJTU", "outputId": "68bd5d24-17a9-4d44-e632-4efe0f4c01a2" }, "outputs": [ { "data": { "text/plain": [ "['Customers', 'CompetitionDistance', 'CompetitionOpen']" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numerical_variables" ] }, { "cell_type": "markdown", "metadata": { "id": "rMDnDkt2B6du" }, "source": [ "### 6. Data Scaling" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 423 }, "id": "dL9LWpySC6x_", "outputId": "887fdd24-358d-4293-c1cb-4a4c37903bbb" }, "outputs": [ { "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", "
StoreDayOfWeekPromoSchoolHolidayYearMonthDayStoreType_bStoreType_cStoreType_dAssortment_bAssortment_cCustomersCompetitionDistanceCompetitionOpen
015112015731010005551270.082.0
114112015730010005461270.082.0
213112015729010005231270.082.0
312112015728010005601270.082.0
411112015727010006121270.082.0
................................................
10172041115601201315001013395350.0-8.0
10172051115501201314001013265350.0-8.0
10172061115401201313001013005350.0-8.0
10172071115301201312001013055350.0-8.0
101720811152012013110010105350.0-8.0
\n", "

1017209 rows × 15 columns

\n", "
" ], "text/plain": [ " Store DayOfWeek Promo SchoolHoliday Year Month Day \\\n", "0 1 5 1 1 2015 7 31 \n", "1 1 4 1 1 2015 7 30 \n", "2 1 3 1 1 2015 7 29 \n", "3 1 2 1 1 2015 7 28 \n", "4 1 1 1 1 2015 7 27 \n", "... ... ... ... ... ... ... ... \n", "1017204 1115 6 0 1 2013 1 5 \n", "1017205 1115 5 0 1 2013 1 4 \n", "1017206 1115 4 0 1 2013 1 3 \n", "1017207 1115 3 0 1 2013 1 2 \n", "1017208 1115 2 0 1 2013 1 1 \n", "\n", " StoreType_b StoreType_c StoreType_d Assortment_b Assortment_c \\\n", "0 0 1 0 0 0 \n", "1 0 1 0 0 0 \n", "2 0 1 0 0 0 \n", "3 0 1 0 0 0 \n", "4 0 1 0 0 0 \n", "... ... ... ... ... ... \n", "1017204 0 0 1 0 1 \n", "1017205 0 0 1 0 1 \n", "1017206 0 0 1 0 1 \n", "1017207 0 0 1 0 1 \n", "1017208 0 0 1 0 1 \n", "\n", " Customers CompetitionDistance CompetitionOpen \n", "0 555 1270.0 82.0 \n", "1 546 1270.0 82.0 \n", "2 523 1270.0 82.0 \n", "3 560 1270.0 82.0 \n", "4 612 1270.0 82.0 \n", "... ... ... ... \n", "1017204 339 5350.0 -8.0 \n", "1017205 326 5350.0 -8.0 \n", "1017206 300 5350.0 -8.0 \n", "1017207 305 5350.0 -8.0 \n", "1017208 0 5350.0 -8.0 \n", "\n", "[1017209 rows x 15 columns]" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Scaling your data\n", "for i in numerical_variables:\n", " categorical_variables.append(i)\n", "X = final_df[categorical_variables]\n", "X" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "id": "o6RW3bJDLFUJ" }, "outputs": [], "source": [ "y = final_df['Sales']" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "id": "VU2UTOFMIk0L" }, "outputs": [], "source": [ "numerical_cols = ['Customers','CompetitionDistance','Year','Month','DayOfWeek','Day','CompetitionOpen']\n", "scaler = MinMaxScaler()\n", "scaler.fit(final_df[numerical_cols])\n", "final_df[numerical_cols] = scaler.transform(final_df[numerical_cols])" ] }, { "cell_type": "markdown", "metadata": { "id": "yiiVWRdJDDil" }, "source": [ "##### Which method have you used to scale you data and why?\n", "\n", "- MinMax scaler will convert the data standardization " ] }, { "cell_type": "markdown", "metadata": { "id": "BhH2vgX9EjGr" }, "source": [ "### 7. Data Splitting" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0CTyd2UwEyNM", "outputId": "f7cf7c5b-e6b4-407c-ccc6-460f655c8307" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(813767, 15)\n", "(203442, 15)\n" ] } ], "source": [ "# Split your data to train and test. Choose Splitting ratio wisely.\n", "from sklearn.model_selection import train_test_split \n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)\n", "print(X_train.shape)\n", "print(X_test.shape)" ] }, { "cell_type": "markdown", "metadata": { "id": "qjKvONjwE8ra" }, "source": [ "##### What data splitting ratio have you used and why? " ] }, { "cell_type": "markdown", "metadata": { "id": "Y2lJ8cobFDb_" }, "source": [ "- training set - 80% \n", "- test set - 20%\n", "### because we want to go by the standard norms " ] }, { "cell_type": "markdown", "metadata": { "id": "VfCC591jGiD4" }, "source": [ "## ***7. ML Model Implementation***" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "id": "_PiCSDQTMa9s" }, "outputs": [], "source": [ "\n", "scaler = MinMaxScaler()\n", "X_train = scaler.fit_transform(X_train)\n", "X_test = scaler.transform(X_test)" ] }, { "cell_type": "markdown", "metadata": { "id": "OB4l2ZhMeS1U" }, "source": [ "### ML Model - 1 - Linear Regression" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "id": "yUvfkHYuE7aH" }, "outputs": [], "source": [ "def Calculating_errors(y_train,y_pred_train,y_test,y_test_pred):\n", " MSE_test = mean_squared_error(y_test, y_test_pred)\n", " print(\"MSE on test is\" ,MSE_test)\n", " MSE_train = mean_squared_error(y_train, y_pred_train)\n", " print(\"MSE on train is\" ,MSE_train)\n", " RMSE_test = np.sqrt(MSE_test)\n", " print(\"RMSE on test is\" ,RMSE_test)\n", " RMSE_train = np.sqrt(MSE_train)\n", " print(\"RMSE on train is\" ,RMSE_train)\n", " print('Training MAE: {:0.2f}'.format(mean_absolute_error(y_train, y_pred_train)))\n", " print('Test MAE: {:0.2f}'.format(mean_absolute_error(y_test, y_test_pred)))" ] }, { "cell_type": "markdown", "metadata": { "id": "0V01X2JNV4do" }, "source": [ "### ML Model - 4 - RandomForestRegression" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "id": "eSyZemzq0Sbl" }, "outputs": [], "source": [ "rf = RandomForestRegressor()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 74 }, "id": "K1w7MutN0Sfn", "outputId": "e2765f85-398d-4946-c213-5f3ae9da4a1b" }, "outputs": [ { "data": { "text/html": [ "
RandomForestRegressor()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomForestRegressor()" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HqJKbgx40SlP", "outputId": "ed37d436-e0df-48cd-9f01-93a8379921e2" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The r2 score for testing is 0.9857\n", "The r2 score for training is 0.998\n" ] } ], "source": [ "print(f\"The r2 score for testing is {round(r2_score(y_test,rf.predict(X_test)),4)}\")\n", "print(f\"The r2 score for training is {round(r2_score(y_train,rf.predict(X_train)),4)}\")" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "id": "ke4DBMpWsRf0" }, "outputs": [], "source": [ "new_data=np.array([(3, #store\n", " 2, #dayofweek\n", " 1, #promo\n", " 0, #schoolholiday\n", " 2015, #year\n", " 7, #month\n", " 31, #day\n", " 0,#storeb\n", " 0,#storec\n", " 1,#stored\n", " 0, #assortment b\n", " 1, #assortment c\n", " 570,#cust\n", " 1270, #compdist\n", " 73, #compopen \n", " )])" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "id": "LKLUrH_wyCPk" }, "outputs": [], "source": [ "new_data=scaler.transform(new_data)" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qRQ0y7ha2EWG", "outputId": "1e8d0e8c-6da9-48b4-8217-9b1bc3215828" }, "outputs": [ { "data": { "text/plain": [ "array([7242.5])" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf.predict(new_data)" ] }, { "cell_type": "markdown", "metadata": { "id": "J4A456qPK5Bs" }, "source": [ "#### Which Evaluation metrics did you consider for a positive business impact and why?" ] }, { "cell_type": "markdown", "metadata": { "id": "J1jBcRyqLEJh" }, "source": [ "Here we got r2 score of 96.8% for testing data which means that business can predict their future sales with 96.8% accuracy." ] }, { "cell_type": "markdown", "metadata": { "id": "cBFFvTBNJzUa" }, "source": [ "### Which ML model did you choose from the above created models as your final\n", "\n", "### prediction model and why?" ] }, { "cell_type": "markdown", "metadata": { "id": "0MOuRXabX416" }, "source": [ "Here we got best accuracy from Random Forest Regression. So this model could help businesses to predict their future sales data." ] }, { "cell_type": "markdown", "metadata": { "id": "Beu44QFZRjVA" }, "source": [ "## ***8.*** ***Future Work (Optional)***" ] }, { "cell_type": "markdown", "metadata": { "id": "ujtCI4LRRugg" }, "source": [ "### 1. Save the best performing ml model in a pickle file or joblib file format for deployment process.\n" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "id": "X-3B24iLRuEn" }, "outputs": [ { "data": { "text/plain": [ "['rf.sav']" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import joblib\n", "# save the model to disk\n", "filename = 'rf.sav'\n", "joblib.dump(rf, filename)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [], "source": [ "# Save the File\n", "import pickle\n", "with open('scaler.pkl', 'wb') as file:\n", " pickle.dump(scaler, file)" ] }, { "cell_type": "markdown", "metadata": { "id": "CgM5wrpXSCrf" }, "source": [ "### 2. Again Load the saved model file and try to predict unseen data for a sanity check." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Y0euSfLlSJpv" }, "outputs": [], "source": [ "# Load the File and predict unseen data." ] }, { "cell_type": "markdown", "metadata": { "id": "Pr0d1qMwSS1Z" }, "source": [ "### ***Congrats! Your model is successfully created and ready for deployment on a live server for a real user interaction !!!***" ] }, { "cell_type": "markdown", "metadata": { "id": "gCX9965dhzqZ" }, "source": [ "# **Conclusion**" ] }, { "cell_type": "markdown", "metadata": { "id": "Fjb1IsQkh3yE" }, "source": [ "The Rossmann dataset is a large dataset of sales data for a chain of German pharmacies. The dataset includes over a million rows of data, with various features such as store location, type of product sold, and various sales metrics.\n", "In a machine learning project using the Rossmann dataset, you would likely start by exploring the data and trying to understand the relationships between different features and sales outcomes. You might also want to perform some data cleaning and preprocessing to ensure that the data is ready for modeling.\n", "Once you have prepared the data, you could use a variety of machine learning algorithms to build models that predict sales outcomes based on the available features. Some common approaches might include linear regression, decision trees, or random forests. You could also use more advanced techniques such as gradient boosting or neural networks whcih are beyond the scope of this present project and surely be included in future.\n", "Ultimately, the conclusion of a machine learning project using the Rossmann dataset would depend on the specific goals and objectives of the project. However, a common goal might be to build a model that is able to accurately predict sales outcomes based on the available features, and to use that model to make informed decisions about how to optimize sales and improve business performance.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "gIfDvo9L0UH2" }, "source": [ "### ***Hurrah! We have successfully completed our Machine Learning Capstone Project !!!***" ] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 1 }