Skip to content

Instantly share code, notes, and snippets.

@artun3e
Last active May 2, 2021 08:23
Show Gist options
  • Save artun3e/76f3bb21a48cfe1031b1e4b8e5f065fb to your computer and use it in GitHub Desktop.
Save artun3e/76f3bb21a48cfe1031b1e4b8e5f065fb to your computer and use it in GitHub Desktop.
WALMART DATA ANALYSIS
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# CS 210 GROUP PROJECT\n"
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {},
"outputs": [],
"source": [
">>> import pandas\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import reverse_geocoder as rg\n",
"from collections import OrderedDict\n",
"import seaborn as sns # a visualization library from matplotlib\n",
"import math\n",
"import json\n",
"import pprint\n",
"import datetime\n"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Date</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>IsHoliday</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Date Temperature Fuel_Price MarkDown1 MarkDown2 \\\n",
"0 1 2010-02-05 42.31 2.572 NaN NaN \n",
"1 1 2010-02-12 38.51 2.548 NaN NaN \n",
"2 1 2010-02-19 39.93 2.514 NaN NaN \n",
"3 1 2010-02-26 46.63 2.561 NaN NaN \n",
"4 1 2010-03-05 46.50 2.625 NaN NaN \n",
"\n",
" MarkDown3 MarkDown4 MarkDown5 CPI Unemployment IsHoliday \n",
"0 NaN NaN NaN 211.096358 8.106 False \n",
"1 NaN NaN NaN 211.242170 8.106 True \n",
"2 NaN NaN NaN 211.289143 8.106 False \n",
"3 NaN NaN NaN 211.319643 8.106 False \n",
"4 NaN NaN NaN 211.350143 8.106 False "
]
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features = pd.read_csv(\"/Users/artun/Downloads/walmart/features.csv\")\n",
"walmart_train = pd.read_csv(\"/Users/artun/Downloads/walmart/train.csv\")\n",
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Date</th>\n",
" <th>Weekly_Sales</th>\n",
" <th>IsHoliday</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>24924.50</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>46039.49</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>41595.55</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>19403.54</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>21827.90</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Date Weekly_Sales IsHoliday\n",
"0 1 1 2010-02-05 24924.50 False\n",
"1 1 1 2010-02-12 46039.49 True\n",
"2 1 1 2010-02-19 41595.55 False\n",
"3 1 1 2010-02-26 19403.54 False\n",
"4 1 1 2010-03-05 21827.90 False"
]
},
"execution_count": 182,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>8190.000000</td>\n",
" <td>8190.000000</td>\n",
" <td>8190.000000</td>\n",
" <td>4032.000000</td>\n",
" <td>2921.000000</td>\n",
" <td>3613.000000</td>\n",
" <td>3464.000000</td>\n",
" <td>4050.000000</td>\n",
" <td>7605.000000</td>\n",
" <td>7605.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>23.000000</td>\n",
" <td>59.356198</td>\n",
" <td>3.405992</td>\n",
" <td>7032.371786</td>\n",
" <td>3384.176594</td>\n",
" <td>1760.100180</td>\n",
" <td>3292.935886</td>\n",
" <td>4132.216422</td>\n",
" <td>172.460809</td>\n",
" <td>7.826821</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>12.987966</td>\n",
" <td>18.678607</td>\n",
" <td>0.431337</td>\n",
" <td>9262.747448</td>\n",
" <td>8793.583016</td>\n",
" <td>11276.462208</td>\n",
" <td>6792.329861</td>\n",
" <td>13086.690278</td>\n",
" <td>39.738346</td>\n",
" <td>1.877259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>-7.290000</td>\n",
" <td>2.472000</td>\n",
" <td>-2781.450000</td>\n",
" <td>-265.760000</td>\n",
" <td>-179.260000</td>\n",
" <td>0.220000</td>\n",
" <td>-185.170000</td>\n",
" <td>126.064000</td>\n",
" <td>3.684000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>12.000000</td>\n",
" <td>45.902500</td>\n",
" <td>3.041000</td>\n",
" <td>1577.532500</td>\n",
" <td>68.880000</td>\n",
" <td>6.600000</td>\n",
" <td>304.687500</td>\n",
" <td>1440.827500</td>\n",
" <td>132.364839</td>\n",
" <td>6.634000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>23.000000</td>\n",
" <td>60.710000</td>\n",
" <td>3.513000</td>\n",
" <td>4743.580000</td>\n",
" <td>364.570000</td>\n",
" <td>36.260000</td>\n",
" <td>1176.425000</td>\n",
" <td>2727.135000</td>\n",
" <td>182.764003</td>\n",
" <td>7.806000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>34.000000</td>\n",
" <td>73.880000</td>\n",
" <td>3.743000</td>\n",
" <td>8923.310000</td>\n",
" <td>2153.350000</td>\n",
" <td>163.150000</td>\n",
" <td>3310.007500</td>\n",
" <td>4832.555000</td>\n",
" <td>213.932412</td>\n",
" <td>8.567000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>45.000000</td>\n",
" <td>101.950000</td>\n",
" <td>4.468000</td>\n",
" <td>103184.980000</td>\n",
" <td>104519.540000</td>\n",
" <td>149483.310000</td>\n",
" <td>67474.850000</td>\n",
" <td>771448.100000</td>\n",
" <td>228.976456</td>\n",
" <td>14.313000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Temperature Fuel_Price MarkDown1 MarkDown2 \\\n",
"count 8190.000000 8190.000000 8190.000000 4032.000000 2921.000000 \n",
"mean 23.000000 59.356198 3.405992 7032.371786 3384.176594 \n",
"std 12.987966 18.678607 0.431337 9262.747448 8793.583016 \n",
"min 1.000000 -7.290000 2.472000 -2781.450000 -265.760000 \n",
"25% 12.000000 45.902500 3.041000 1577.532500 68.880000 \n",
"50% 23.000000 60.710000 3.513000 4743.580000 364.570000 \n",
"75% 34.000000 73.880000 3.743000 8923.310000 2153.350000 \n",
"max 45.000000 101.950000 4.468000 103184.980000 104519.540000 \n",
"\n",
" MarkDown3 MarkDown4 MarkDown5 CPI Unemployment \n",
"count 3613.000000 3464.000000 4050.000000 7605.000000 7605.000000 \n",
"mean 1760.100180 3292.935886 4132.216422 172.460809 7.826821 \n",
"std 11276.462208 6792.329861 13086.690278 39.738346 1.877259 \n",
"min -179.260000 0.220000 -185.170000 126.064000 3.684000 \n",
"25% 6.600000 304.687500 1440.827500 132.364839 6.634000 \n",
"50% 36.260000 1176.425000 2727.135000 182.764003 7.806000 \n",
"75% 163.150000 3310.007500 4832.555000 213.932412 8.567000 \n",
"max 149483.310000 67474.850000 771448.100000 228.976456 14.313000 "
]
},
"execution_count": 183,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.describe()"
]
},
{
"cell_type": "code",
"execution_count": 184,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Weekly_Sales</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>421570.000000</td>\n",
" <td>421570.000000</td>\n",
" <td>421570.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>22.200546</td>\n",
" <td>44.260317</td>\n",
" <td>15981.258123</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>12.785297</td>\n",
" <td>30.492054</td>\n",
" <td>22711.183519</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>-4988.940000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>11.000000</td>\n",
" <td>18.000000</td>\n",
" <td>2079.650000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>22.000000</td>\n",
" <td>37.000000</td>\n",
" <td>7612.030000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>33.000000</td>\n",
" <td>74.000000</td>\n",
" <td>20205.852500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>45.000000</td>\n",
" <td>99.000000</td>\n",
" <td>693099.360000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Weekly_Sales\n",
"count 421570.000000 421570.000000 421570.000000\n",
"mean 22.200546 44.260317 15981.258123\n",
"std 12.785297 30.492054 22711.183519\n",
"min 1.000000 1.000000 -4988.940000\n",
"25% 11.000000 18.000000 2079.650000\n",
"50% 22.000000 37.000000 7612.030000\n",
"75% 33.000000 74.000000 20205.852500\n",
"max 45.000000 99.000000 693099.360000"
]
},
"execution_count": 184,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train.describe()"
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Store int64\n",
"Date object\n",
"Temperature float64\n",
"Fuel_Price float64\n",
"MarkDown1 float64\n",
"MarkDown2 float64\n",
"MarkDown3 float64\n",
"MarkDown4 float64\n",
"MarkDown5 float64\n",
"CPI float64\n",
"Unemployment float64\n",
"IsHoliday bool\n",
"dtype: object"
]
},
"execution_count": 185,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Store int64\n",
"Dept int64\n",
"Date object\n",
"Weekly_Sales float64\n",
"IsHoliday bool\n",
"dtype: object"
]
},
"execution_count": 186,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## How sales change as year changes"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Date</th>\n",
" <th>Weekly_Sales</th>\n",
" <th>IsHoliday</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>24924.50</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>46039.49</td>\n",
" <td>True</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>41595.55</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>19403.54</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>21827.90</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Date Weekly_Sales IsHoliday Year Month\n",
"0 1 1 2010-02-05 24924.50 False 2010 2\n",
"1 1 1 2010-02-12 46039.49 True 2010 2\n",
"2 1 1 2010-02-19 41595.55 False 2010 2\n",
"3 1 1 2010-02-26 19403.54 False 2010 2\n",
"4 1 1 2010-03-05 21827.90 False 2010 3"
]
},
"execution_count": 187,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train['Date'] = pd.to_datetime(walmart_train['Date'])\n",
"walmart_train['Year'], walmart_train['Month'] = walmart_train['Date'].dt.year, walmart_train['Date'].dt.month\n",
"walmart_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1a1a79ec88>"
]
},
"execution_count": 188,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Generate at least two histograms and two scatterplots from your data to describe the data set.\n",
"\n",
"Year_sales = walmart_train.groupby(walmart_train[\"Year\"]).sum()[\"Weekly_Sales\"].sort_values(ascending=False)\n",
"Year_sales.plot(kind = \"barh\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## How total number of sales varies in weekdays and holidays"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1a1a86e198>"
]
},
"execution_count": 189,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cols2plot = walmart_train.groupby(walmart_train[\"IsHoliday\"]).sum()[\"Weekly_Sales\"].sort_values(ascending=False)\n",
"cols2plot.plot(kind = \"barh\")"
]
},
{
"cell_type": "code",
"execution_count": 190,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#A scatter plot is a graph used to determine whether there is a relationship between paired data\n",
"#Now we will check whether there are any relationship between fuel price and cpi\n",
"\n",
"fuel_price = walmart_features['Fuel_Price']\n",
"consumer_price_index = walmart_features['CPI']\n",
"\n",
"colors = (0,0,0)\n",
"area = np.pi*3\n",
" \n",
"# Plot\n",
"plt.scatter(fuel_price,consumer_price_index, s=area, c=colors, alpha=0.5)\n",
"plt.title('Fuel Price-CPI')\n",
"plt.xlabel('Fuel Price')\n",
"plt.ylabel('CPI')\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can conclude from here that fuel price and CPI isn't strongly correlated "
]
},
{
"cell_type": "code",
"execution_count": 191,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Now we will check whether there are any relationship between unemployment and consumer price index\n",
"CPI = walmart_features['CPI']\n",
"unemployment = walmart_features['Unemployment']\n",
"\n",
"colors = (0,0,0)\n",
"area = np.pi*3\n",
"\n",
"# Plot\n",
"plt.scatter(CPI,unemployment, s=area, c=colors, alpha=0.5)\n",
"plt.title('CPI-Unemployment')\n",
"plt.xlabel('Consumer price index')\n",
"plt.ylabel('Unemployment')\n",
"plt.show()\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It can be concluded that Consumer Price Index and Unemployment in Walmart(in various states) isn't correlated"
]
},
{
"cell_type": "code",
"execution_count": 192,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fuel_price = walmart_features['Fuel_Price']\n",
"unemployment = walmart_features['Unemployment']\n",
"\n",
"colors = (0,0,0)\n",
"area = np.pi*3\n",
" \n",
"# Plot\n",
"plt.scatter(fuel_price,unemployment, s=area, c=colors, alpha=0.5)\n",
"plt.title('Fuel Price-Unemployment')\n",
"plt.xlabel('Fuel Price')\n",
"plt.ylabel('Unemployment')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is obvious that fuel price and unemployment in Walmart(in various states) isn't much correlated"
]
},
{
"cell_type": "code",
"execution_count": 193,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Date</th>\n",
" <th>Weekly_Sales</th>\n",
" <th>IsHoliday</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>24924.50</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>46039.49</td>\n",
" <td>True</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>41595.55</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>19403.54</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>21827.90</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Date Weekly_Sales IsHoliday Year Month\n",
"0 1 1 2010-02-05 24924.50 False 2010 2\n",
"1 1 1 2010-02-12 46039.49 True 2010 2\n",
"2 1 1 2010-02-19 41595.55 False 2010 2\n",
"3 1 1 2010-02-26 19403.54 False 2010 2\n",
"4 1 1 2010-03-05 21827.90 False 2010 3"
]
},
"execution_count": 193,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### We want to store stores weekly sales for each week. We want to eliminate department from the walmart_train dataset."
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2010-02-05 00:00:00\n",
"2012-10-26 00:00:00\n"
]
}
],
"source": [
"\n",
"columns = {'Store':[],'Date':[],'Weekly_Sales':[],'CPI':[]}\n",
"df =pd.DataFrame(columns)\n",
"mindate = min(walmart_train[\"Date\"])\n",
"maxdate = max(walmart_train[\"Date\"])\n",
"print(mindate)\n",
"print(maxdate)\n",
"#dates will be in this integer\n",
"#now we want to create a unique date list\n",
"unique_date = np.unique(walmart_train['Date'])\n",
"unique_store = np.unique(walmart_train['Store'])\n",
"copdata =walmart_train.groupby(['Date','Store']).sum() \n",
"newdata = copdata.filter(items = ['Store','Date','Weekly_Sales'])\n",
"df = newdata\n",
"df['Date'] = datetime.datetime(2010,2,5)\n",
"df['CPI'] = 0.0\n",
"df.head()\n",
"\n",
"counter = 0\n",
"for i in range(len(unique_date)):\n",
" for s in range(45) :\n",
" df['Date'][counter+s] = unique_date[i]\n",
" counter = counter+45"
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {},
"outputs": [],
"source": [
"walmart_features.head()\n",
"walmart_features.groupby(['Date'])\n",
"#df[(df['column_name'] >= A) & (df['column_name'] <= B)]\n",
"x = datetime.datetime(2012,10,26)\n",
"#print(x)\n",
"dates = pd.to_datetime(walmart_features['Date'])\n",
"copdates = dates.to_frame()\n",
"Dates = copdates[(copdates['Date']<=x)]\n",
"sync = walmart_features.filter(items = ['Date','CPI'])\n",
"df['Store'] = 0\n",
"counter = 0\n",
"for x in range(45) :\n",
" x = 1\n",
" for s in range(45):\n",
" df['Store'][counter] = x\n",
" x = x+1\n",
" counter = counter + 1"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>Weekly_Sales</th>\n",
" <th>Date</th>\n",
" <th>CPI</th>\n",
" <th>Store</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th>Store</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"5\" valign=\"top\">2010-02-05</th>\n",
" <th>1</th>\n",
" <td>1643690.90</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2136989.46</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>461622.22</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2135143.87</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>317173.10</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Weekly_Sales Date CPI Store\n",
"Date Store \n",
"2010-02-05 1 1643690.90 2010-02-05 0.0 1\n",
" 2 2136989.46 2010-02-05 0.0 2\n",
" 3 461622.22 2010-02-05 0.0 3\n",
" 4 2135143.87 2010-02-05 0.0 4\n",
" 5 317173.10 2010-02-05 0.0 5"
]
},
"execution_count": 196,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Date</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>IsHoliday</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Date Temperature Fuel_Price MarkDown1 MarkDown2 MarkDown3 \\\n",
"0 1 2010-02-05 42.31 2.572 NaN NaN NaN \n",
"1 1 2010-02-12 38.51 2.548 NaN NaN NaN \n",
"2 1 2010-02-19 39.93 2.514 NaN NaN NaN \n",
"3 1 2010-02-26 46.63 2.561 NaN NaN NaN \n",
"4 1 2010-03-05 46.50 2.625 NaN NaN NaN \n",
"\n",
" MarkDown4 MarkDown5 CPI Unemployment IsHoliday \n",
"0 NaN NaN 211.096358 8.106 False \n",
"1 NaN NaN 211.242170 8.106 True \n",
"2 NaN NaN 211.289143 8.106 False \n",
"3 NaN NaN 211.319643 8.106 False \n",
"4 NaN NaN 211.350143 8.106 False "
]
},
"execution_count": 197,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#I want to find the CPI corresponding for that date and store which means that there are 143*45 \n",
"#first of all I need to eliminate the cpis of which the date is greater than my maxdate then i can take the cpis consecutively\n",
"\n",
"#so now the motivation is to eliminate the cpi\n",
"#so I can apply a fiter maybe then\n",
"\n",
"walmart_features.filter(items =['Store','Date','CPI'])\n",
"#now i want to eliminate wrt to date\n",
"#df = df[df.score > 50]\n",
"walmart_features['Date'] = pd.to_datetime(walmart_features['Date'])\n",
"walmart_features = walmart_features[walmart_features['Date']<=maxdate]\n",
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>Weekly_Sales</th>\n",
" <th>Date</th>\n",
" <th>CPI</th>\n",
" <th>Store</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th>Store</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"5\" valign=\"top\">2010-02-05</th>\n",
" <th>1</th>\n",
" <td>1643690.90</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2136989.46</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>461622.22</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2135143.87</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>317173.10</td>\n",
" <td>2010-02-05</td>\n",
" <td>0.0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Weekly_Sales Date CPI Store\n",
"Date Store \n",
"2010-02-05 1 1643690.90 2010-02-05 0.0 1\n",
" 2 2136989.46 2010-02-05 0.0 2\n",
" 3 461622.22 2010-02-05 0.0 3\n",
" 4 2135143.87 2010-02-05 0.0 4\n",
" 5 317173.10 2010-02-05 0.0 5"
]
},
"execution_count": 198,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {},
"outputs": [],
"source": [
"# Now the only problem is the sira of the two different dataframes\n",
"#in each iteration, i need to increase the\n",
"#for each date, I need to get the cpi s of the stores(in an increasing order)\n",
"\n",
"walmart_features = walmart_features.reset_index(drop = True)\n",
"\n",
"cnt = 0\n",
"for i in range(len(unique_date)):\n",
" counter = 0\n",
" for k in range(45):\n",
" df['CPI'][k+cnt] = walmart_features['CPI'][i+counter]\n",
" counter = counter + 143\n",
" cnt = cnt + 45 \n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Weekly_Sales</th>\n",
" <th>CPI</th>\n",
" <th>Store</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>6.435000e+03</td>\n",
" <td>6435.000000</td>\n",
" <td>6435.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1.046965e+06</td>\n",
" <td>171.578394</td>\n",
" <td>7.237762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>5.643666e+05</td>\n",
" <td>39.356712</td>\n",
" <td>12.930052</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>2.099863e+05</td>\n",
" <td>126.064000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>5.533501e+05</td>\n",
" <td>131.735000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>9.607460e+05</td>\n",
" <td>182.616521</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>1.420159e+06</td>\n",
" <td>212.743293</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>3.818686e+06</td>\n",
" <td>227.232807</td>\n",
" <td>45.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Weekly_Sales CPI Store\n",
"count 6.435000e+03 6435.000000 6435.000000\n",
"mean 1.046965e+06 171.578394 7.237762\n",
"std 5.643666e+05 39.356712 12.930052\n",
"min 2.099863e+05 126.064000 0.000000\n",
"25% 5.533501e+05 131.735000 0.000000\n",
"50% 9.607460e+05 182.616521 0.000000\n",
"75% 1.420159e+06 212.743293 10.000000\n",
"max 3.818686e+06 227.232807 45.000000"
]
},
"execution_count": 200,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## NOW WE ARE GOING TO PERFORM HYPOTESIS TESTING"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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nfXr17N+/XrGjh0LQEVFBenp6QwePJiioiLmzZvHv//9b0aObBnwlyxZwrx587jvvvtYvnw5ixcvblFmypQp3H///dxyyy1cd911REZGUltby//7f/+PzZs34+bmRm5uLgUFBYSHhzfe11q/pk2bxm9/+1sefPBB5syZw7Rp01p9TzrLlqATAWQ3+ToHaP6vrLGM1rpOKVUGhFiuf9fs3gjL59bqDAFKtdZ1Vsq31sa5481z+5TTStvnUErdgTEiavwNxGXVnoGMDTDxDvAL+fG6UjDlPli1GFI/h/irHddH0aaOjEi6ymuvvcarr77KwoULufbaa1m8eDHx8fGtlvf29gaM3+AbPm/4uq6uDnd3dy677DLef//9c+6rrq7ml7/8Jbt37yYqKorHHnvsnHUiDXW5u7tTV1dHc1rrVtN8m19va/Z9+vTpvPTSS5w4cYI///nPfPzxx6xatarxh7LWmhdffJErrrjinPvWrVvHww8/zJ133nnO9czMTIKCgoiKimLbtm1Wg05UVBQDBgxg48aN7Nixg3fffbdFmYceeojZs2ezZs0aJk+ezIYNG/juu+8oKipiz549eHp6Eh0d3WJtjdbaar8A9uzZw5o1a3j44Ye5/PLLG0eZ9mLLr7PW/iaapzm1VsZe123thy19anlR61e11sla6+SwMJuOhHBeObuh/ixEW/kNJn4u9I2G717p9m4J5zJp0iSWLVvG3r17iYuLY+nSpUyePJnvv/++U/VNnjyZbdu2kZGRAUBVVRVpaWmNPyxDQ0OpqKhoHEnY6vLLL2f58uVUVVUBnDO91vC8YuvWrQQFBREUFNRqPVFRURQXF5Oens7QoUOZOnUqzz33XGPQueKKK3j55Zepra0FIC0tjcrKSq644gqWL1/e+HwqNzeXwsJCALy8vFi9ejVvvfUW7733ntV2b7/9dhYuXMhNN92Eu7t7i9ePHj1KUlISDz74IMnJyRw5coSysjL69++Pp6cnmzZtIiur5akDrfUrLy8PX19fFi5cyG9/+9tO/322xZaRTg4Q1eTrSCCvlTI5SikPIAg41c691q4XA8FKKQ/LaKdp+dbaaKvfke30u/fJ3ArKDQZPbvmauwck3gBbn4czpdAnuPv7J5yKv78/S5cuZenSpaSkpHS6nrCwMN544w0WLFhATU0NAE8++STDhw/n5z//OUlJSURHRzNhwoQO1Ttr1iz27dtHcnIyXl5eXHXVVfzlL38BoG/fvlx00UWUl5ezfPnyduuaNGkS9fX1gDHd9vDDDzN16lTACA6ZmZmMGzcOrTVhYWGsXr2ayy+/nJSUlMapQn9/f955553GAOLn58dnn33GZZddhp+fX4vAN3fuXBYvXmx1ag3g73//O5s2bcLd3Z2EhASuvPJKTCYTV199NcnJyYwZM4YRI0a0uK+1fmVkZPDAAw/g5uaGp6cnL7/8si1vc8dordv8gxGYjgExgBewHxjZrMzdwCuWz+cDH1o+H2kp7225/xjg3ladwEfAfMvnrwC/bKuNJn1YBPyj2bVdwGSMUc9a4Kr2vt/x48drl7ZittavTGv99cxvtX40UOtDq7uvT6Jdhw8fdnQXXMrFF1+sd+3a5ehutGvXrl166tSpju7GOaz9WwR263Z+tjb8aXd6TRsjjnuAdUCK5Yf9IaXU40qpuZZiy4AQS6LA/cBDlnsPAR9iJB18Adytta5vrU5LXQ8C91vqCrHU3WobAEqpTOBvwCKlVI4law7gLuB1IAM4Sm9PIqithuyd1qfWGkQmg3eg8dxHCOEwTz31FNdffz1//etfHd0Vu1JaVqGfIzk5WbvscdWZ2+CNq2D++zDiqtbLrVwIuXvh1weNBAPhcCkpKW0+qBeiu1j7t6iU2qO1TrblfsmL7U0ytwIKhlzYdrkLZkJ5DhSldku3hBC9hwSd3iRrK4QnQp++bZcbNtP4ePSrru+TEKJXkaDTW9TVGM9zhkxtv2zwYAgdDhkSdIQQ9iVBp7c4+QPUVcOQi2wrP+xSyNpmLCYVQgg7kaDTWxRa1lAMsHE1+9AZRpDKcdGkCtGjXHXVVW1uQ2MvixYtsrrAdMaMGXRVAtFjjz3Gc8891yV1OyMJOr1FcSq4exs7DtgiwpKIkitBRxhOnz7dZXWvWbOG4GBZjNwbSNDpLYpSITQW3FpupWGVXwj0jZGRjmiUnJzMzTffzMaNG2lvqUVGRgaXXnopo0ePZty4cRw9epSvv/6a6dOnc+2115KQkMAvfvELzGYzANHR0S227f/www+5//77AXjhhRcYOnQoYGz90rATwJ49e7j44osZP348V1xxBfn5+Y1lZs2axfjx45k2bRpHjhxp0cc//vGPLFq0qLEPAMuWLePXv/5149evvfZaYx8a1NfXs2jRIhITE0lKSuL5559vLDthwgRGjx7N9ddf37j1TlOt9eujjz4iMTGR0aNHM3369DbfW2dnyzY4whUUpULE+I7dE5lsSbMWPcrah4xndPYUngRXtn1iZlpaGmvXruUf//gHd999N7feeiuLFi1i0KBBLcrecsstPPTQQ1x77bVUV1djNpvJzs5m586dHD58mCFDhjBr1iz+85//cMMNN1htb/r06Tz77LMAbNmyhZCQEHJzc9m6dSvTpk2jtraWe++9l08++YSwsDBWrlzJ73//e5YvX84dd9zBK6+8QmxsLDt27OCXv/wlGzdubKz7d7/7HWVlZaxYseKcjT7nz5/PqFGjeOaZZ/D09GTFihXnnI0DsG/fPnJzcxuPQmiYFrzuuuv4+c9/DsAf/vAHli1bxr333nvOva316/HHH2fdunVERER0yzSjI0nQ6Q1qz0DpCRhzc/tlm4pIhh8+grJcCLK6Qfd5OV5cyQsb0rgyaSCXxg/A3U0WovZk7u7uzJkzhzlz5lBUVMTDDz/M4MGD+fbbb5k4cWJjOZPJRG5uLtdeey1A4xkvABMnTmwcsSxYsICtW7e2GnTCw8OpqKjAZDKRnZ3NzTffzObNm9myZQvXXXcdqampHDx4kMsuuwwwRiADBw6koqKCb7/9lhtvvLGxrob93ACeeOIJJk2axKuvvtqiTT8/Py655BI+++wz4uPjqa2tbTyGocHQoUM5duwY9957L7Nnz+byyy8H4ODBg/zhD3+gtLSUioqKFjtOt9WvKVOmsGjRIm666abG4xpclQSd3qA4HdBGGnRHRFo2V8zd3SVB5/++Smf1vjxW78sjql8f/rFgHKOjZF6/Xe2MSLpSWVkZK1euZMWKFXh6erJs2TJGjRp1Tpm2pt46cpwAwIUXXsiKFSuIi4tj2rRpLF++nO3bt/O///u/nDhxgpEjR7J9+/Zz7ikvLyc4OJh9+/ZZrXPChAns2bOHU6dOnXO+ToPbb7+dv/zlL4wYMcLqRpt9+/Zl//79rFu3jpdeeokPP/yQ5cuXs2jRIlavXs3o0aN54403Gg9ka2A2m1vt1yuvvMKOHTv4/PPPGTNmDPv27SMkJKRFOVcgz3R6g4adBcJa7jbbpvBEcPfqkuc6heXVfHYgj1snD+HlW8ZRVVPPixvT7d6OsJ+FCxcybtw4jh07xltvvcXmzZu57bbbzhnJAAQGBhIZGcnq1asB47f5hucbO3fu5Pjx45jNZlauXNn4bKY106dP57nnnmP69OmMHTuWTZs24e3tTVBQEHFxcRQVFTUGndraWg4dOkRgYCAxMTF89NFHgBEE9+/f31jnrFmzGs+hMZlMLdqcNGkS2dnZvPfee40HvTVVXFyM2Wzm+uuv54knnmjc/t9kMjFw4EBqa2utnn3TVr+OHj3KpEmTePzxxwkNDSU7O7vF/a5CRjq9QXGqcZxByAUdu8/DG8JHQe4eu3fpnR0nqDNrlkyNISbUj+9PnOaNbzMprTpLsK+X3dsT5++mm27ijTfewMOj/R8bb7/9NnfeeSePPPIInp6ejT9oL7zwQh566CF++OGHxqSCtkybNo3s7GymT5+Ou7s7UVFRjVv1e3l5sWrVKn71q19RVlZGXV0d9913HyNHjuTdd9/lrrvu4sknn6S2tpb58+czevToxnpvvPFGTCYTc+fOZc2aNVa/13379tG3b8vdO3Jzc1m8eHFjAkLDhpwN03ZDhgwhKSnJakBrrV8PPPAA6enpaK2ZOXPmOX11ObZuR91b/rjk0QYfLNT6hbGdu3fN77R+Mlzrulq7dae6tk6Pf2K9XrxiZ+O1A9mlesiDn+n3d2TZrR1X4gpHG2zatEnPnj3b0d2wyezZs/WGDRsc3Y0eqcuPNhAuoDgNwuI6d29EMtRWQVHnD+hq7r/78ymuOMviKdGN1xIjAokJ9ePT/XLOnnCc0tJShg8fTp8+fZg5c6aju+OSZHrN1dXXQkkGxF3ZufsjLWnWObuNtFo7WL03l6GhfkwdFtp4TSnF1aMH8eLGdArKqxkQ6NNGDcIZzZgxgxkzZji6G20KDg4mLS3N0d1waTLScXWnjoO5DkI7OdLpG2PsSp231y7dMZs1+3NKufCCkBaZS3NHD0Jr+OxAvl3acjVazr4SDmaPf4MSdFxdcUPmWgfTpRsoZYxwCg7apTuZJZWYqusYFRnU4rVh/f1JGBjI5wdkiq05Hx8fSkpKJPAIh9FaU1JS0iJbsaNkes3VNaRLd3SNTlMDkmD3cjDX276NTisO5JQBMCrS+nqci+PCeG3zMapr6/HxPL+2XElkZCQ5OTkUFRU5uiuiF/Px8SEyMvK86pCg4+pKjkLAIPAO6Hwd4YlQd8aoq7MjJov9OaX4eLoR29/f6utjo4KpM2sO5ZUxfkjLhXu9laenJzExMY7uhhDnTabXXF1ZtnEo2/loSCAoOP/9vg7klJE4KAgPd+v/9MYMNkZAe0+49v5TQvRWEnRcXWnW+Qed0Dhw8zzvTSbr6s0cyisjycrznAb9A3yICO7D3mwJOkK4Igk6rqy+ztis83yDjoeXsc7n5PklE6QXVlBda2Z0K89zGoyJCmafjHSEcEkSdFyZKQ90/fkHHbBLBtuBHCOQWMtca2pMVDC5pWcoMtW0WU4I4Xwk6LiyUsumgcFR51/XgEQw5UNlcftlW7E/p4wAHw+iQ/zaLDfW8lxnn0yxCeFyJOi4stITxsfgIedfV3ii8fE8nuscyCklKSIIt3bOzUmMCMLDTbH3RNcdjyyEcAwJOq6sIegEnV9ePWCs1YFOT7HV1NWTetLU6vqcpnw83RkxMEBGOkK4IAk6rqz0BAQMNI4oOF9+IcZ6n06OdLJPVVFbr4kLt74+p7kxUcEcyCmj3iwr8IVwJRJ0XFnZCQiyw/OcBuGJnQ46WSXGIV5D2nme02BMVF8qauo4WlTRqfaEED2TBB1XVnrCPplrDQaMNI6+rq/t8K2ZDUGnn69N5RMjAgFIyS/vcFtCiJ5Lgo6rMtdDWY59g05YPJhrje1wOuhESSUB3h7087PtVNChof54uiuOnGx5+qIQwnlJ0HFVppPGkQb2DDr9jWOCKTzc4VszS6oYHOLb4jiD1nh5uHFBmD9HZKQjhEuxKegopWYppVKVUhlKqYesvO6tlFppeX2HUiq6yWsPW66nKqWuaK9OpVSMpY50S51e59HGr5VSh5RSB5VS7yules/JYI3p0nZ8phM6HJQbFB3p8K0nTlW1uz6nuRHhATLSEcLFtBt0lFLuwEvAlUACsEApldCs2FLgtNZ6GPA88LTl3gRgPjASmAX8Uynl3k6dTwPPa61jgdOWujvTRgTwKyBZa50IuFvK9Q72XKPTwLMP9I2Gwo4dXV1Xbyb7lDHS6YgRAwPJL6umrKrjz5CEED2TLSOdiUCG1vqY1vos8AEwr1mZecCbls9XATOVMY8yD/hAa12jtT4OZFjqs1qn5Z5LLHVgqfOaTrYBxtENfZRSHoAv0HtOB7PnGp2mwuI7PNLJL6umzqyJ7mjQCTeOYzhyUqbYhHAVtgSdCCC7ydc5lmtWy2it64AyIKSNe1u7HgKUWupo3laH2tBa5wLPASeAfKBMa73ehu/XNZSdAP8BxujEnvrHG4kEdbbvi5ZZUgnA4H4dm16LH2hksMkUmxCuw5agY+3Jb/MVe62Vsdf1DrehlOqLMQqKAQYBfkqphVbKopS6Qym1Wym122VOZiy18xqdBv3jjU1ESzJsvqVhjU50aMdGOv0DvAn29ZSRjhAuxJagkwM0/ekVSctpqsYylqmsIOBUG/e2dr0YCLbU0bytjrZxKXBca12kta4F/gNcZO0b1Fq/qrVO1lonh4WFtfpGOBV7r9FpENaQwWb7c52skkq8PNwYENCxPA6llCQTCOFibAk6u4BYS1aZF8bD+E+blfkUuM3y+Q3ARq21tlyfb8k8iwFigZ2t1Wm5Z5OlDix1ftLJNk4Ak5VSvpZnPzOBjj0Bd1ZaG2t07P08ByA0FpR7h57rZJZUMaSfb7sbfVozIjyQ1JMmzLIdjhAuwaO9AlrrOqXUPcA6jAyw5VrrQ0qpx4HdWutPgWXA20qpDIzRx3zLvYeUUh8Ch4E64G6tdT2AtTotTT4IfKCUehLYa6mbTrSxQym1Cvjecn0v8Gpn3yinUlUC9We7Juh4eEO/oR0a6ZwoqWJIB5MIGsQPDKDqbD3Zp6ts3kJHCNFztRt0ALTWa4A1za490uTzauDGVu79M/BnW+q0XD/Gj9lnTa93po1HgUet3ePSynONjwEDu6b+/iNsDjpaa7JOVTI1NrRTTcWFN2yHY5KgI4QLkB0JXFF5vvExcFDX1B8WD6eOQW11u0ULTTVU15o7PdIZPsAfpSBVnusI4RIk6LgikyX3oquCTv8RoM1Qkt5u0cxiI126s6MUXy/jpFHJYBPCNUjQcUXlecZ2NX79u6b+sHjjY2H7yQRZpzq2u7Q1ksEmhOuQoOOKyvONhaHuNj2y67iQC4ygVpzWbtGskkrc3RQRfTu/SHVEeCCZJZVUna1rv7AQokeToOOKTHldN7UGRgZb32goTm23aFZJFRHBffB07/w/tbjwALSG9AI50E0IZydBxxWV53Vd5lqD0DgosmWk0/l06QbxA2UPNiFchQQdV1Se37UjHYCw4cZWOPWtT3lprcksqTzvoBPV1xdfL3dS8uW5jhDOToKOq6mpgJqyrg86oXHGKaKnM1stUlpVi6m6rsPn6DTn5qaICw+QkY4QLkCCjqsxWdboBHT1SCfO+NhGMkFD5trg88hcazAiPIDUkyaMnY+EEM5Kgo6rKW9Yo9PVz3RijY9tJBNkWY40iA49/50ERoQHcrqqlkKT7UcqCCF6Hgk6rqZhpBPY/MgjO/MJAv/wNpMJGo40sNdIByAlX6bYhHBmEnRcTVfvu9ZU2PA2RzqZJZWEB/rg4+l+3k2NCJcD3YRwBRJ0XE15vjEK8Tr/0UW7GtKmW3nOcj67SzcX5OvJoCAfjshIRwinJkHH1ZTndf3UWoOwODhrAtNJqy9n2jHoAJYMNhnpCOHMJOi4GlM3LAxtEDrc+Ghliq2ypo7iihq7HkeQMCiQjMIKqmvr7VanEKJ7SdBxNeX5XZ+51qAh6FhJJmhIIrDnSCdxUBB1Zk1agYx2hHBWEnRcSX0tVBR03/RaQDh4B1od6Zw4ZUmXtuNIJzEiCICDufJcRwhnJUHHlVQUALr7pteUMkY7RS2DTmZDurQdRzqRffsQ6OPBwbwyu9UphOheEnRcSVefGGpNWBwUtzzMLaukin5+XgT6eNqtKaUUiRFBHMqVoCOEs5Kg40oaTgztrpEOGCOdipNQfW4gyCqptMui0OYSI4JIOWmitt5s97qFEF1Pgo4raUhd7s6RTivJBFklVUTbcWqtwchBgZytM5NRKGfrCOGMJOi4ElM+uHlCn37d12bjxp8/Ptepqasnr+wMg+2YRNDgx2QCmWITwhlJ0HElppPGMdVu3fjXGjwE3L3OSSbIOX0GremSkU5MiB9+Xu4cypMMNiGckQQdV2I6aaQxdyd3DwgZdk4yQcPu0vZco9PAzU2RMChQRjpCOCkJOq7EEUEHjOc6TabXflwYav/pNYCRg4I4nF9OvVnO1hHC2UjQcSUVDgw6pzOhthowgo6flzshfl5d0lxiRBBVZ+s5XizJBEI4Gwk6rqK2Gs6cdkzQCYsDbYZTRwFjem1IiB9KqS5pbnSkkUyw90Rpl9QvhOg6EnRcRYUlXdrfQSMdaEwmyLLz7tLNXRDmT7CvJ7szT3dZG0KIriFBx1WYCoyP3bkwtEFoLKCgOJ16syb7dFWXPc8BI5kgeUhfdmWd6rI2hBBdQ4KOq2g4ptoR02uefSB4MBSnkld6htp63aUjHYDk6H4cK6qkpKKmS9sRQtiXBB1X0bAbgSOCDhjPdYrSOHHK/kcaWDMhui8Au7Nkik0IZyJBx1VUnOz+3QiaCh0OJelkFRuLNrtyeg2MDDYvDzd2Z8oUmxDOxKago5SapZRKVUplKKUesvK6t1JqpeX1HUqp6CavPWy5nqqUuqK9OpVSMZY60i11ep1HG8FKqVVKqSNKqRSl1IUde3ucSMMane7cjaCp0OFQV01Z3jG8PNwYGOjTpc15e7gzJjKYXZJMIIRTafcnlFLKHXgJuBJIABYopRKaFVsKnNZaDwOeB5623JsAzAdGArOAfyql3Nup82ngea11LHDaUneH27Dc8wLwhdZ6BDAaSLH1jXE6pnxjCxxHsezBVleYSlTfPri5dU26dFPJ0X05mFvGmbNyfLWsVvV6AAAgAElEQVQQzsKWX4snAhla62Na67PAB8C8ZmXmAW9aPl8FzFTGIo15wAda6xqt9XEgw1Kf1Tot91xiqQNLndd0pg2lVCAwHVgGoLU+q7V23YUdpgLHPc+BxrRp79IMu54W2pYJ0f2oM2v2ZbvuX6sQrsaWoBMBZDf5OsdyzWoZrXUdUAaEtHFva9dDgFJLHc3b6mgbQ4EiYIVSaq9S6nWllNWfhkqpO5RSu5VSu4uKilp/J3oyU75j0qUb+PZD+4XR78xxu54W2pZxg/uiFOyS5zpCOA1bgo61eZLmm161VsZe1zvThgcwDnhZaz0WqARaPI8C0Fq/qrVO1lonh4WFWSvSs9WegepSCHDg9BpQGzyMaJ3LkC44vM2aIF9PEgYGsiXdSX9REKIXsiXo5ABRTb6OBPJaK6OU8gCCgFNt3Nva9WIg2FJH87Y600aO1nqH5foqjCDkeiocuDC0iVO+0QxTuQwL8++2NmeO6M+erNOcrjzbbW0KITrPlqCzC4i1ZJV5YTy0/7RZmU+B2yyf3wBs1Fpry/X5lsyzGCAW2NlanZZ7NlnqwFLnJ51pQ2t9EshWSllOGWMmcNiG79f5OHqNjkWWWyTBqpK4gDPd1ubM+AGYNXydVthtbQohOq/doGN5fnIPsA4j++tDrfUhpdTjSqm5lmLLgBClVAZwP5ZpLK31IeBDjB/2XwB3a63rW6vTUteDwP2WukIsdXe4Dcs99wLvKqUOAGOAv3T0DXIKDbsROGLftSYO1xojrdDqrG5rMykiiLAAb75KkaAjhDPwaL8IaK3XAGuaXXukyefVwI2t3Ptn4M+21Gm5fgwju6359c60sQ9ItnaPS3HkvmtN7DSFsRhQxWkQM61b2nRzU1wS1581B/OprTfj6S7rnYXoyeR/qCsw5Ru7Efg6aDcCQGvN9mJvatz6QHFat7Z9SXx/TNV1ksUmhBOQoOMKKixrdLro/BpbFFecpfRMHSa/mMYjDrrL1GGheHm4sVGm2ITo8STouAJTvsOTCNILTACYQ4Z3+0jHz9uDC4eGsCGlACO3RAjRU0nQcQWmk47dAgdILzSOju4TEQ/luVBj6tb2r0oKJ7Okiu9bO020shg+uRtW3gof3wX7P+jW/gkhDBJ0XIHppMOTCNIKTAT6eOAfYdlCrzi9W9ufPWoQvl7ufLgru+WLxRnw+kw48JExCju6ET6+E75+GmRkJES3kqDj7Bp3I3Dw9FphBcMHBKDCRhgXunmKzd/bgzmjBvLfA3lU1NT9+EL+flh2KdRUwKLP4e4dcP9hGHMLfP0X+PIRCTxCdCMJOs6ugwtDq87WkX2qivLqWrs9/9Bak15gInaAP/SLATePbk8mAPjphCiqztbz+QHLJhbmemNKzcMHbv8SoiYY193cYe4/YMLt8O3/QUrztc5CiK5i0zod0YM1boHTetApr67l7e1ZbDpSyP6cUmrrjWDj6+XO0qkx3DXjAny9Ov9PoaTyLKeraontHwDuntBvaLePdMDYAHRYf39W7srmpxMGw/dvwskf4IblRp+acnODWU9D5jb48lEYPgs8vLu9z0L0NjLScXYNuxFYeaZTW2/mtc3HmP7MJp5dl0qtWbN06lCeuX4Uf5gdz0/i+vPixgx+8tzXbE0v7nQX0iyZa7EDLHuuhXZ/BhuAUoqfJkfx/YlS0jNPwFdPwJCpMPI66ze4e8AVT8Lp47Dzte7trBC9lIx0nF3D9FqzLXBq6uq5+93v2ZBSyMXDw3jgijgSI4Ja3L4k6xQP/fsH7nx7Nx/fPYXhAwI63IX0AiNzrfHesDhI+wLqa42RTze6fnwk//tlKgWfPEpsdSlc+XTb65eGXQoXzITNz8CYmx26wFaI3kBGOs7OdLLFbgTVtfX8/K09bEgp5IlrEnlzyUSrAQdg/JB+vLV0Ir7eHtz+5u5O7da8O+s0AwK96R9gmZ4KjQNzHZw61qlv6Xz08/NiybhAJpz6lIqEBRCe2P5Nlz9ppHhve6HrOyhELydBx9k1pEs3+W3+gVUH2JJexDPXj+LWyUParWJgUB/+det4TpZXc8/733cowUBrzY5jJUyKCUE19CE01vjogGQCgF8EbMNb1bGs7grbbhiQACNmw963oa6mazsnRC8nQcfZmfLPObztu2Ml/Hd/Hv8zM5abJkS1ceO5xg3uyyNzEtiWUcJ/D+TbfN/x4koKTTVMHhry40XL0dUUOyDomOsJ/OFtjvqN5aWDXhSUV9t2X/ISqCqBlP92bf+E6OUk6Di7hn3XgHqz5onPDjMoyIdfXHxBh6taMHEwCQMDeWpNCtW19e3fAOw4bmyyOWlok2ch3v4QGNntC0QBSP8Syk4QOO0u6rXmX9/YOMUXMwP6xsDu5V3aPSF6Owk6zs6U35i59u89ORzKK+ehq+Lx8XTvcFXubopHrk4gr6ya1zbb9sN6x7ESQv29GRrqd+4LYcMdM7226zUIGEjYhOu4dmwE7+zIIq/UhkPl3NwgeTFkbYPCI13fTyF6KQk6zqz2DFSXgf8AaurqeXZ9KuOH9OXqUZ3fEmfy0BCuTAzn5W+Otjs1pbXmu2OnmDy034/PcxqExhkjHbO5033psFPHIWMDjF8E7p7cd2ksaPj7BhvTt8fcAu5eMtoRogtJ0HFmjbsRDOSb1CKKTDXce8mwlgGggx6+Mp7aejMvfNX29NiJU1WcLK9mUtPnOQ1CY6G20tj8s7scXGV8HHMLAJF9fbn1wiGs2pNDRqENG5D6hUL8XDjwAdR1PItPCNE+CTrOrDHoDOCT/XmE+HkxdVjoeVc7OMSXmycOZuWubI4XV7Zabscx43nO5Bgra1vC4oyP3ZlMcPBjiJoMwT8mUPzSstvCc+tsHO2M+qkxejy6sYs6KUTvJkHHmVUYQafKuz9fpRRwVdJAPOx0XPM9l8Ti7eHG375s/Yf1d8dKCPHzYlh//5YvhjYEnW5KJihMgcJDkHj9OZdD/L35+bShfHHoJPuyWzn2oKmhM8AnGA7+u0u6KURvJ0HHmVlGOpvy3KmuNTNvzCC7VR0W4M3SqTH8d38eB3PLWrxeVlXLhpQCLhoWan06zy8U+vTtvmSCg/8B5QYJ81q8tHRaDCF+Xjy99kj7a5A8vCD+akhdYzwzE0LYlQQdZ2bKB3cvVh2qICK4D+MG97Vr9T+fPpRgX09+v/ogZ+vOTQh4+ZujmGrq+OWMVlKzlTJGO90RdLQ2RibR085Zs9TA39uDey4ZxvZjJWyxZY+5xOvgbIWRfi2EsCsJOs7MVEC93wC2ZJQwZ/RA3NzOL4GguUAfT/5ybRL7s0t5dt2PacQny6pZse0414yJIH5gYOsVDEgwpry6+ryakwfg1FEjWLTi5kmDiezbh2fWHcFsbqc/0dPBNxQO/cfOHRVCSNBxZqZ8Trv1o86smTvaflNrTV2VNJCfXTiE17YcZ+0P+VTX1vPCV2mYteb+y4a3fXN4kvFQvvREl/St0cH/GGf4xM9ttYi3hzv3Xzacg7nlrD14su363D0gYS6krYOzrSdSCCE6ToKOMzOdJK8+iFB/LxLaGnGcp/93VTwjBwVy17vfM+KPX/D+zmxumTSEqH6+bd8YPsr4ePKHLusbAEc+M6bW2tkhet6YCIaG+fHixvT2n+2MvA5qqyB9vR07KoSQoOPMKk6SVuXPxBgrizPtyMfTnTeXTOTxeSP53aw4fnv5cH7d3igHoH+C8XC/K4NOURqUZBgbdrbD3U1x94xhHDlp4quUwrYLD7kIfEPgyOd26qgQAuQ8Hedl2Y3gWG0AE6O7/gyYUH9vfnZhdMdu8vKFkNiuDTqpa4yPcVfaVHzumEH8/as0XtyUwcz4/q0Hazd3o87D/zUWinp42anDQvRuMtJxVuV5ABQSzMQYKzsC9BThScaD/q6SugYGjoagSJuKe7q7cdfFw9ifXcrWjHYy2UbMgZoyyNxih44KIUCCjvOyHFNd5tmfuPCOn/bZbcKToCwbqk7Zv+6KQsjeCXHtT601df34CMIDffjnpqNtFxw6Azz9ZIpNCDuSoOOsLCOd/oNicLdzqrRdhScZHwsO2r/utC8AbfPUWgNvD3cWTYlm+7ESUvLLWy/o2QeGzTSCTnduXCqEC5Og46QqirIAuOCCWAf3pB1dmcF2ZA0EDf4xsHXA/AlR+Hi68ca2zLYLjphjbDeU933n+iiEOIcEHSdVlJdJufZlbKztp4M6hH+Ycd6PvYPO2Uo4tskY5XQicy/Y14vrxkXy8b5cSiraOKJ6+OXGGiA5UVQIu7Ap6CilZimlUpVSGUqph6y87q2UWml5fYdSKrrJaw9brqcqpa5or06lVIyljnRLnV6dbcPymrtSaq9S6jPb35ae70zxCQrpR2JEkKO70r7wJMi3czLBsa+hrhpGXNXpKhZfFM3ZOjPv72xj8WqfvhA9VZ7rCGEn7QYdpZQ78BJwJZAALFBKJTQrthQ4rbUeBjwPPG25NwGYD4wEZgH/tASBtup8Gnheax0LnLbU3eE2mvTtf4AU294O5+FRcZJKnwF42mlX6S4VnmQccVDb9qFwHXJkDfgEwZApna4idkAA02JDefu7LGrr23hmM2IOlKQba4KEEOfFlp9YE4EMrfUxrfVZ4AOg+Va+84A3LZ+vAmYqYwHEPOADrXWN1vo4kGGpz2qdlnsusdSBpc5rOtkGSqlIYDbwum1vh3OorTcTVFeEDuiarW/sLnwUmOuMfdjswVxvJBHEXg7unudV1ZIpMRSU17Dmh/zWC8VZRlNHZIpNiPNlS9CJALKbfJ1juWa1jNa6DigDQtq4t7XrIUCppY7mbXW0DYC/A78DXCr1KCP/NGGU4hNi29oUh4ucYHzM3mmf+rJ3QlVxh7PWrLl4eBhDQ/1Y0VZCQVAEDBonU2xC2IEtQcfaU9rmG1e1VsZe1zvchlJqDlCotd5j5fVzKKXuUErtVkrtLioqaq+4wx3LPIab0vQLH+LortgmKAKCouDEd/apL/VzcPOEYZedd1VuborbLopmX3Yp35843XrB+DmQu6cxVV0I0Tm2BJ0coGmKVCTQ/H9eYxmllAcQBJxq497WrhcDwZY6mrfV0TamAHOVUpkY03eXKKXesfYNaq1f1Vona62Tw8LCWnsfeoz87GMAhAwa6uCedEDUJMjecf7HHGhtPM+JmQY+9tnk9PrxkQR4e7Q92hkxx/goox0hzostQWcXEGvJKvPCeGj/abMynwK3WT6/AdiojW18PwXmWzLPYoBYYGdrdVru2WSpA0udn3SmDa31w1rrSK11tKX+jVrrhTa+Lz1aWYGxRsc9qPksZw8WNcnYRaEsu/2ybSlOM87Oiet81lpz/t4e3DQhirU/5HOyrJVkh7A4Yx85CTpCnJd2g47l+ck9wDqMLLAPtdaHlFKPK6UaDjBZBoQopTKA+4GHLPceAj4EDgNfAHdrretbq9NS14PA/Za6Qix1d7iNzr4hPZ3ZrKk7nWN8EegkiQQAgycZH8/3uU7Dehk7Bh2ARRdFY9aat7Zntl5oxGxjH7YzbUzDCSHapNo9V6SXSU5O1rt373Z0N1qVVVLJF8//nKVeG/D4Y0GnFkY6RH0dPDUYxtwMs5/rfD3/mg7uXnD7Bvv1zeLOt3ez8/gpvn1oJn283FsWyNkNr8+E616DUTfZvX0hnJVSao/WOtmWsk6wyEM0dSivnIHqFPX+A50n4IBxGmdksvFcp7NOHYf8/ZDQPGPfPpZMieF0VS2r9+VaLzBoHPiHG4fGCSE6RYKOkzmUV8ZAdQrPYCd6ntMgapKx8WeNqXP3p1geJcZfbb8+NTExph8JAwNZvvW49ZNF3dyMHRDSNxjnGQkhOkyCjpM5lFdOpEcpbs6URNBg8CTQZiP1uDMOfwoDx0DfaLt2q4FSiiVTY0gvrGj9rJ0Rc6C2Eo590yV9EMLVSdBxModzSwnTp5wriaBB5ARAQdb2jt9bmg25u7tsaq3B1aMHEurvxetbjlsvED0NvINkdwIhOkmCjhMpMtVQX1GMh651zqDjE2Q810lf1/F7G7LWujjoeHu4s3hKDN+kFXEgp7RlAQ8vY+fp1LXGdjxCiA6RoONE0gpMhCtLuq4zBh0w0o7z9kJZTsfuO7gKBiRCyAVd068mfnbhEAJ9PHhxY4b1AiNmQ1WJ/XZYEKIXkaDjRIygU2J84bRBx7KyP3Wt7fcUHDKeA425pWv61EyAjydLpsbw5eEC6yeLDrsMPPrAwX+fVzv1Zo3ZLEsWRO8iQceJpBWYuMC7zPjCWXaYbi40FkKHdyzt+Pu3jLU5o37adf1qZvFFMfh7e/APa6Mdb39jL7aD/4a6Ng6As6LsTC3//DqDha/vYOSjXzD68fXc/Np3vLQpg+pama4Trk+CjhNJK6gg3rfc2OzSv7+ju9N5I2ZD5lbbVvbXVsP+D4wRkl9I1/fNIsjXk9suGsKag/n8kFPWssDoBVBdavOITWvNx3tzmPm/3/DMF6kUV9Qwf8Jg5o4eRHl1Lc+uS2XeP7ZxOM/KyEoIFyJBx0lorUk7aeICz9MQFAluVlbMO4sRc4zzddK/bL9syn+NH+7jb2u/rJ3defEFhPp78/vVP1DffBps6AzjGO79H7RbT9XZOu58ew+/XrmfiL59+OzeqXxx33QemzuSP1+bxGf3TmPF4gmcqjrLNS9t48vDBV3y/QjRE0jQcRIny6sx1dQRTiEED3Z0d85PR1b2f/8mBA+B6Old369mAn08+cPseA7klPHejqxzX3RzN7bCyfgSKlo/DiO/7Aw3vrKdDSkF/GF2PB/fdZHVI8Z/EtefdfdNJ35gAL96fy8Hc62MroRwARJ0nETqSWMVf3BNPgRHtVO6h3NzM56JpK2D8jZO7Mzba2ywOe5W4x4HmDt6EFOGhfDMulQKTc12oB69wBix/fCR1Xt/yCnjmpe2kVVSxbLbJnD7tKG4ubW+dVE/Py9euy2Zfn5eLH1zV+s7XgvhxCToOIn0ggq8OYvXmULjN39nd+E9xg/szc9af11rWPsQ+IXBxDu7t29NKKV4fF4iNbVm7nlv77kP+/vHGzskfP9Wi3OCvjiYz43/+hYPNzdW3XUhPxlh2zO4/gE+LFuUTGVNPfe8971ktwmXI0HHSaQWmEj0t+xZ5uzTawD9YmD8ImP67NSxlq8f+hiyv4NL/mi3w9o664Iwf567aTQ7j5/i1yv3nft8Z9KdUJQCGcau17X1Zp7+4gi/eOd7RoQHsvruKYwI71j/R4QH8ujVCezOOs0Hu87z/CEhehgJOk4ivcDEhGAXCjoA0x8wMvG+furc67Vn4MtHYEASjO0Z5+7NHT2IP85JYO3Bk/zmw32cqjxrvJB4AwRGwLYXyCg0cdO/tvPy10eZPyGKD+6YTFiAd6fau2F8JJOH9uOptSktp/WEcGISdJyA2axJK6hgpK9lWxZXCToB4cZI4cCHsHuFsa1MeT6sXGicMDrrrz0qS2/p1Bh+felwPt2fx8XPbuL5L9P4cF8BeyMWQOYWfvP8cjIKK/jHzWN56vpR+Hh2vu9KKf58bRLVtWae+CzFjt+FEI7l4egOiPbllp7hTG09Qz1PgZuHkarrKqb+2jhj57P7YOdrUJ5rLLi86jmImebo3rXwP5fGclVSOE+tPcILX6UD4Ec83/n48lzENwTf9otOj26auyDMn7tmXMALX6WzeEo04wb3tUu9QjiSBB0n0JC5Fq6LjKmcHvTb/3nrEwyL1xrPcDY8auxWcM3LEDrM0T1rVeyAAJYtmkCRqYbq2nrqzBrfvXcSu+3vUJkGAUl2a+uO6UN557ss/rY+jXdun2S3eoVwFJlecwJphUbQCarJd52ptaaUgsTr4H8OwNL1PTrgNBUW4E1UP19iQv1wn/Ir8AuFT+6G+lq7teHn7cFdMy5ga0Yx24+W2K1eIRxFgo4TSDtpYlCQDx7l2a6RLt0apZzrCO6mfPvB7P81jtP+9v/sWvXCyUMYEOjN375MtX6iqRBORIKOE0grqCC+vzeYXHSk4yoS5kHCNUY2XsHhjt17thKK0qwe+eDj6c49l8SyK/M0m9NbOdFUCCchQaeHqzdrMooqSO5baVyQoNOzXfWccVjdm1fDiR2tl9PaOK5hze/gueHwl0Hw0gR4fiS8MAY+/w2YftyD7afJUYQH+vCvb452wzchRNeRRIIeLqukkrN1ZhL6WHYfdvYtcFydfxgs/gLeuxHenAOX/9kYAQUMgPo6KMkwjrrevxJK0sHdG+JmGTsbBEUah8Md3wzfvw0H/wNX/x0S5uHl4cbiKdH8de0RDuaWWd2/TQhnIEGnh0srMJIILvA8ZVyQkU7PFzoMbv8KPvwZrH3A+BM0GCoKoN5y/s6QKXDRvUZA6hN87v2T74LCI/DxnUYdU+6Dy/7EgkmDeXFjBv/afIwXF4zt/u9LCDuQoNPDpRVUADDAXADK3XkPb+ttfPvBzz6F/L3G2UF5+yAoAvqPhCEXQd92EkL6j4DbN8Ca38K2v4NfGIEX3cPNkwazbOtxfndFHFH9fLvnexHCjiTo9HCpBSai+vXB05Rr/NByl78yp+HmBhHjjT+d4e4Js/8GZ0ph/e/Bvz+LLrqa5VuPs2zrcR6bO9K+/RWiG0giQQ+XXmAibkAAlJ5w7XRpYZ2bO1z3KkRPg0/uZtDZTOaMGsiqPTlU1tQ5undCdJgEnR7sbJ2ZY0WVxA4IMHZilqDTO3l4ww0rwDsAPr6TWydFUFFTx8d7cx3dMyE6TIJOD5ZZUkmdWZPYT0NlIYTGOrpLwlH8w2DO3yF/P+MyX2fkoEDe3p4li0WF05Gg04M1ZK7Fe1nWa0jQ6d0S5kLSTajNz/GrhDOkFpjYlXna0b0SokMk6PRgaSdNuCmIrLdMo4RI0On1rnoG+gRzadbzBPq489b2TEf3SIgOkaDTg6UVVBAd4odX6VEjXbpvtKO7JBytT1+45A+4Z3/LI0PT+eLgSTnkTTgVm4KOUmqWUipVKZWhlHrIyuveSqmVltd3KKWim7z2sOV6qlLqivbqVErFWOpIt9Tp1Zk2lFJRSqlNSqkUpdQhpdT/dPztcazUAhPDBwRAcboRcDy8HN0l0ROMuw0GJHJN0cu4m2v4YKccaS2cR7tBRynlDrwEXAkkAAuUUgnNii0FTmuthwHPA09b7k0A5gMjgVnAP5VS7u3U+TTwvNY6FjhtqbvDbQB1wG+01vHAZOBuK/3usSpq6sgsqSRhUKCxdYo8zxEN3Nxh1l/xMOXy5/6beG/HCerqzY7ulRA2sWWkMxHI0Fof01qfBT4A5jUrMw940/L5KmCmUkpZrn+gta7RWh8HMiz1Wa3Tcs8lljqw1HlNZ9rQWudrrb8H0FqbgBQgwra3xfFST5ajNSQM8IOSoxDiHGfMiG4SMx3iZjPvzL85U17MhpSC9u8RogewJehEAE3H7zm0/OHdWEZrXQeUASFt3Nva9RCg1FJH87Y62kYjy1TcWMDqtr9KqTuUUruVUruLioqsFel2h/ONzLWkgHJjvy4Z6YjmLvk9HrWV/MZvHW9tz3J0b4SwiS1Bx9qpWs0XB7RWxl7XO9OGcZNS/sC/gfu01uVWyqK1flVrnay1Tg4LC7NWpNsdzisnqI8n/c9a4qlkronmBoxEJV7PAv05qUePkWE5YVaInsyWoJMDNN1PPxLIa62MUsoDCAJOtXFva9eLgWBLHc3b6mgbKKU8MQLOu1rr/9jwvfYYh/PLSRgYiCpONy6EDndsh0TPNONhPPRZ7vH8L+98d8LRvRGiXbYEnV1ArCWrzAvjof2nzcp8Ctxm+fwGYKM2lkp/Csy3ZJ7FALHAztbqtNyzyVIHljo/6Uwbluc9y4AUrfXfbH1DeoJ6syb1ZLkliSDdOBTML9TR3RI9Uegw1OibWejxJVv2HJD92ESP127QsTw/uQdYh/Ew/kOt9SGl1ONKqbmWYsuAEKVUBnA/8JDl3kPAh8Bh4Avgbq11fWt1Wup6ELjfUleIpe4OtwFMAW4FLlFK7bP8uapT71I3O15cSXWtmYSBgUa6dEgsKGuziEIAF/8OdwWL6lexep/sxyZ6NiV7N50rOTlZ796926F9+HR/Hr96fy9rfjWNhPcnwtAZcO0rDu2T6Nn0Z/dTt/tNbg94mTfuvxElv6SIbqSU2qO1TralrOxI0AMdzivH010xLEiDKV/SpUW71PTf4ubmxuzT77A7S/ZjEz2XBJ0eKCW/nNj+Acb2NyDp0qJ9gYPQyUu53mMzX3yzxdG9EaJVEnR6oMP55cQPDIT8/caF8FGO7ZBwCh7Tf0O9mzdjjr4i+7GJHkuCTg9TZKqhyFRjZK7l7QWfYNnoU9jGP4yqMbczW23ny02bHN0bIaySoNPD7MsuBWBUZBDk74OBoyVzTdgs+NLfUOPWh0H7/i77sYkeSYJOD7Mn6zSe7oqkAT5QcBgGjXV0l4Qz8e1HXvwSfmL+jp3fbnR0b4RoQYJOD/N91mlGDgrC59QRMNfCoDGO7pJwMtFzHqAcf/pse9rRXRGiBQk6PcjZOjP7c0oZP6SvMbUGMtIRHebuG8zBmMWMrd5J9t71ju6OEOeQoNODHM4vp6bObASdvH1GEkHwEEd3SzihEfMeIF/3Q69/BGQBuOhBJOj0IHssi/qMoLPXGOVIEoHohH7BQWwf/AsGn0mhbM9Hju6OEI0k6PQg32edJiK4DwN8FRSmyPMccV7Gz72LVHMU9Rv+BHVnHd0dIQAJOj2G1prdWaeMUU7BIUsSgTzPEZ03JCyQDZF30a86h5pv/+no7ggBSNDpMfLKqikor2Hc4GBjag1goIx0xPm5aNbNbKgfi/rmaSjPd3R3hJCg01N83/g8px/k7ALfEAge7OBeCWc3dnBfPhv0K3R9LXXr/uDo7gghQaen+PZoMX5e7owI94OMr4zjDCSJQNjBrVfN4JW6OYvh7wQAAAzbSURBVHgcWgWZWx3dHdHLSdDpAcxmzVcphUwfHoZn0WGoLIRhlzq6W8JFjB/Sj4PRS8ihP+ZP7oGzlY7ukujFJOj0AAfzyig01TAzfgBkfGlcvGCmYzslXMo9V4ziNzV34nb6OGx4zNHdEb2YBJ0eYENKIUrBT+LCjKm18FEQMMDR3RIuZHRUMIHxM3hbXwU7X4Vj3zi6S6KXkqDTA3yVUsC4wX0J8aiG7B0ytSa6xO+viufZup9S4BUFq38JlcWO7pLohSToOFh+2RkO5ZUzM76/8dunuQ5iL3N0t4QLig71Y9HF8Swx/QJzZRF8tAjq6xzdLdHLSNBxsK9SCgG4NH4AZGwA70CInODgXglX9cufDKMsOIFnPX8JmVtgw6OO7pLoZSToONhXKQVE9etDbGgfI+gMvRjcPR3dLeGifDzd+dPckbxcOoFdA26C7f+AXcsc3S3Ri0jQcaC80jNsTi/mqsSBqIwNUJ4LI691dLeEi5sZP4CFkwezIGsORYMugc/vh73vOLpbopeQoONAb23PQmvNwslDYOe/IGAgxM91dLdEL/CH2QkMH9iP2flLqR58MXxyD+x739HdEr2ABB0HOXO2nvd3nuCKkeFEmXPh6EZIXipTa6Jb+Hi689It46gye3LD6Xs4O3gqrP4FfPUEmM2O7p5wYRJ0HOQ/e3MoO1PLkqkxxroJdy8Yv8jR3RK9SEyoH6/flkxGaT3Xlf2a6qRbYMtz8OGtUFni6O4JFyVBxwG01qzYlklSRBDJ4e6w7z0YeR34hzm6a6KXmTw0hGW3TSC95Cxzs26ieOpjkLYOXpoAP6ySU0eF3UnQcYBVe3LIKKxgydRo1Obn4GwFTLrT0d0SvdSUYaGsWDSB4spapm+O58tpH6KDh8C/l8KyyyFtvQQfYTcSdLpZ9qkq/vTfw0yK6cfc4Ez49kVjWi1inKO7Jnqxi4aFsuZX00iKCOLn684wv/4Jjk9+Ekz58N6N8M8LYcvfoPSEo7sqnJzS8hvMOZKTk/Xu3bu7pO56s2bBa99xOK+cdXeNIeKDS0G5wy+2grd/l7QpREfUmzXv7cjixY0ZFJpqSI70477+e5l0+jM88y3/L0JiIWa6cZx6aByEDYc+fR3bceFQSqk9Wutkm8pK0DlXVwUds1nz17UpvLblOH+7Npbrjj0GaWthyTqImmj39oQ4H9W19by34wQf7ckhJb8cgGmhFSwI2Mfouh8IP/097nVNjkjw6w+hwyE4CgIHQWAEBEX++HmfvnI+lAuze9BRSs0CXgDcgde11k81e90beAsYD5QAP9VaZ1peexj4/+2df4wUdxXAP29mdvfugIO74649oCmQoIE/GqXY0miMNtpfMTZGE6mmJdaEtNWoaWItaWJqY7SaaExTU2hsE2O0UJWkpEkllVb/K7S1/GrpwQGtvTuO47wfQIHb3dnnH/PlOsDsdW/Zm+WO90m+me++ffN9b14y83a+85233wVC4Aequm2iMUVkCbAJaAX+A9ytqvla2piIqUg6p/NFHty8m3+83c/9Kxt5aOQxpG8X3PY4rL6vprYMo9Z09Z9k+7vH2HF4iDffH+bUWBGPEgvlOMu8Pq7L9rM8089i+mgLj9MSDuJz/rLrMWlgJJjPcNDOUNDOsN/OSNDB2aarKc5egM5ZQG5OKy2zcnTMydE+J0fHnAaaGwPEktVlT02Tjoj4wAHgy0AP8Dpwl6q+E9N5ALhOVe8TkTXA11T1myKyAngOuAFYAPwT+ITbLXFMEXke2KKqm0RkA7BbVZ+qpY2JjreWSWesGLJ1Vx8b/n2I4cF+Nq7Yy6r+zUjhDHz9D/DJ22tixzDSolRS+kbPcODYSXpHznL85BiDp8bGt4WwhIYhzeEwbeFx2kqDdGjU2kv/o10HaS8N0qZDFyWm05rjqLZyVFvpp40+beW4zOdMw9UUZncizQuZNbeNjuZGl5RccmrOMX92joxvj6jrxWSSTlCBzg1At6oedoNvAu4E4hfvO4FHXf9vwJMS/Ty5E9ikqmPAERHpduORNKaI7AduBr7ldP7oxn2qVjYu8LsmqCpDH+YZODnGwMgp+nvf47/vH2ag9wgLxo7weOMRVja9g3/oLCz9Itz6C7hqRa3dMIwpx/OERS1NLGppurSBwmL0D7mjvXCil3CkB2/4A64a7qFjtJfrPzxA7swAHiUoAMNRO00DR0st9Gkb/dpKN3M5qY18SANkZ+M3NjOrqZHmhiyzGjLksgGNmQwN2YCGbIbGrEdTAFkPAinhi+Kj+FJCSyU0LFIqhZTCkLAUks8XyBcL5AtF8vkChWKRfCHaFotFCoUi+WJIPixxtghni0o+VIoKoXqUFEIFFQ/P8wn8aOv7HoHv4/s+ge+TCTxyQUAm8MgGAZnAJ5fxyQY+2SCI+pmAbCZLNpcjm82Szebwggx+kEGCDJ6fxQ8yeH4k84IseBnwA/AC8DKoF1ASH0/46A5SFbQUtRReTq8k6SwEPoh97gFuLKejqkURGQXanPy1C/Zd6PpJY7YBI6paTNCvlY0pYfUvt1MIlZVygC25R8flmhFoXY5cezesuteSjWFAdCFsXhA1PoNPNAd+HmERTh2LahKe6IXRXppO9LJktJdrhj9ATnThnx3CKxUifQVOu3Y5IK7FCV0rpO8OOJdUovifSzS42a5ZHfDjg1PuQyVJJ2lC9cI5uXI65eRJ98ET6dfSxkWIyDpgnft4SkS6kvQq4f1Eh15z7TfnBPMB+weti7G4lMdik4zFJZkq4nICHqr6+dm1lSpWknR6gGtinxcBfWV0ekQkAOYCQx+zb5J8EJgnIoG724nr18rGRajq08DTSd9NBSLyRqXzn1cSFpfyWGySsbgkcznHpZInb68Dy0RkiYhkgTXA1gt0tgJrXf8bwCsarVDYCqwRkZxblbYM2FluTLfPq24M3Jgv1NJGZWExDMMwpoKPvdNxz0++D2wjmnZ9VlXfFpHHgDdUdSvwDPAn9xB/iOgCj9N7nujhfRH4nqqGAEljOpM/ATaJyM+Bt9zY1NiGYRiGUQfs5dA6ICLr3JSeEcPiUh6LTTIWl2Qu57hY0jEMwzBSw96mMgzDMFLDkk6KiMhtItIlIt0i8nC9/bkURORZERkQkX0xWauIvCwiB922xclFRJ5wx71HRFbG9lnr9A+KyNqY/HoR2ev2ecK9CFyVjTQRkWtE5FUR2S8ib4vID6v1ewbGpkFEdorIbhebnzn5EhHZ4fze7Bb+4BYHbXZ+7xCRxbGx1jt5l4jcGpMnnmPV2EgbEfFF5C0RebFan6dFXFTVWgqNaDHDIWApkAV2Ayvq7dclHM/ngZXAvpjs18DDrv8w8CvXvwN4iegVptXADidvBQ67bYvrt7jvdgI3uX1eAm6vxkYd4tIJrHT9OUSlmFZYbBRnf7brZ4Adzp/ngTVOvgG43/UfADa4/hpgs+uvcOdPDljizqtz75cmnmOTtVGn+DwI/AV4sRqfp0tc6hLcK7G5i8S22Of1wPp6+3WJx7SY85NOF9Dp+p1Al+tvJKp7d54ecBewMSbf6GSdwLsx+bjeZG1cBjF6gaj+n8Xm/Lg0ERX0vZHo/bzAycfPE6KVpze5fuD05MJz55xeuXPM7TMpG3WIxyJgO1EZsBer8Xm6xMWm19IjqZzQwjK605WrVPUogNt2OHm5Y59I3pMgr8ZG3XBTEp8m+kVvsWF8CmkXMAC8TPQLvKLSV0C89NVkYlZxea2YjbT5HfAQjFdBrcbnaREXSzrpUUk5oZnKZEsYVROryyq+IjIb+DvwI1U9MZFqgmzGxkZVQ1X9FNEv+xuA5Ulqblur2FRTXis1ROQrwICqvhkXJ6jOiLhY0kmPSsoJTXeOiUgngNsOOHm5Y59IvihBXo2N1BGRDFHC+bOqbnFii00MVR0B/kX0TGeeRKWtILn0FVJZ6aty8vHyWpOwkSafBb4qIu8R/ZfYzUR3PjMyLpZ00uNKKMsTL1V0YQmje9wqqtXAqJv+2QbcIiItbqXVLURzykeBkyKy2q3MuofkckiV2EgV5+8zwH5V/W3sK4uNSLuIzHP9RuBLwH6muPSV22eyNlJDVder6iJVXUzk8yuq+m1malzSfmB2JTeiVUQHiOaxH6m3P5d4LM8BR4mKtPcQ/XNrG9HD0INu2+p0Bfi9O+69wKrYOPcC3a59JyZfBexz+zzJRy8yT9pGynH5HNE0xB5gl2t3WGwU4Dqi0lZ7nP8/dfKlRBfHbuCvQM7JG9znbvf90thYj7jj6cKt3pvoHKvGRp1i9AU+Wr02I+NiFQkMwzCM1LDpNcMwDCM1LOkYhmEYqWFJxzAMw0gNSzqGYRhGaljSMQzDMFLDko5hGIaRGpZ0DMMwjNSwpGMYhmGkxv8B4ZnebY9dxsUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# cpi mean is 171\n",
"cpi_mean = 171.578\n",
"\n",
"cop1_df = df[(df['CPI']<cpi_mean)]\n",
"cop2_df = df[(df['CPI']>=cpi_mean)]\n",
"\n",
"ax = sns.kdeplot(cop1_df['Weekly_Sales'].rename(\" < mean cpi weekly sales\"))\n",
"sns.kdeplot(cop2_df['Weekly_Sales'].rename(\"> cpi weekly sales\"))\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [],
"source": [
"from scipy import stats"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.391726118107853e-07"
]
},
"execution_count": 203,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#now extract p value\n",
"# extracting values\n",
"cop1_values = cop1_df[\"Weekly_Sales\"].values\n",
"cop2_values = cop2_df[\"Weekly_Sales\"].values\n",
"\n",
"# two-sided test for the null hypothesis that 2 independent samples \n",
"# have identical average (expected) values\n",
"_, p_value = stats.ttest_ind(a=cop1_values, b=cop2_values, equal_var=False)\n",
"p_value"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since the p-value is below 0.05, we can reject the null hypothesis"
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Date</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>IsHoliday</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Date Temperature Fuel_Price MarkDown1 MarkDown2 MarkDown3 \\\n",
"0 1 2010-02-05 42.31 2.572 NaN NaN NaN \n",
"1 1 2010-02-12 38.51 2.548 NaN NaN NaN \n",
"2 1 2010-02-19 39.93 2.514 NaN NaN NaN \n",
"3 1 2010-02-26 46.63 2.561 NaN NaN NaN \n",
"4 1 2010-03-05 46.50 2.625 NaN NaN NaN \n",
"\n",
" MarkDown4 MarkDown5 CPI Unemployment IsHoliday \n",
"0 NaN NaN 211.096358 8.106 False \n",
"1 NaN NaN 211.242170 8.106 True \n",
"2 NaN NaN 211.289143 8.106 False \n",
"3 NaN NaN 211.319643 8.106 False \n",
"4 NaN NaN 211.350143 8.106 False "
]
},
"execution_count": 204,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linear Regression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We want to see how CPI and fuel price effects unemployment with this experiment"
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {},
"outputs": [],
"source": [
"my_matrix = walmart_features[['CPI','Fuel_Price']].as_matrix() #.values can be used"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {},
"outputs": [],
"source": [
"#Now linear regression \n",
"from sklearn.linear_model import LinearRegression\n",
"#fuel price and CPI is our two different datas\n",
"#i want to correlate more than two attributes \n",
"fuel_array = walmart_features['Fuel_Price']\n",
"CPI_array = walmart_features['CPI']\n",
"# Showing our (X, y) pairs on the scatter plot\n",
"lol = list(zip(fuel_array,CPI_array))"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {},
"outputs": [],
"source": [
"#linear regression = The objective of a linear regression model is to find a relationship between one or more features\n",
"#(independent variables) and a continuous target variable(dependent variable). \n",
"unemployment = walmart_features['Unemployment'].as_matrix()\n",
"unemployment = unemployment.reshape (-1,1)"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"'''sales_array = df['Weekly_Sales'].as_matrix()\n",
"sales_array=sales_array.reshape(-1,1)\n",
"fuel_array = walmart_features['Fuel_Price'].as_matrix()\n",
"fuel_array = fuel_array.reshape(-1,1)\n",
"cpi_array = df['CPI'].as_matrix()\n",
"cpi_array=cpi_array.reshape(-1,1)'''\n",
"plt.plot(my_matrix,unemployment,'go')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 209,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 209,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"regression_model = LinearRegression()\n",
"regression_model.fit(my_matrix,unemployment)"
]
},
{
"cell_type": "code",
"execution_count": 210,
"metadata": {},
"outputs": [],
"source": [
"# Importing the necessary modules for Linear Regression\n",
"from sklearn import linear_model\n",
"lr = linear_model.LinearRegression()"
]
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop('Date',axis = 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are applying linear regression to walmart features dataset"
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X = my_matrix\n",
"y = unemployment\n",
"\n",
"# Split X and y into X_\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=1)"
]
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 213,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 214,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.01523083, -0.33850998]])"
]
},
"execution_count": 214,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# We can reach each coefficient of our features with coef_\n",
"lr.coef_"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([11.75655358])"
]
},
"execution_count": 215,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# And we can reach intercept point (a14) with intercept_\n",
"lr.intercept_"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.10136350699753893"
]
},
"execution_count": 216,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.score(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-0.01511768 -0.362929 ]]\n",
"[11.81195473]\n"
]
}
],
"source": [
"print(regression_model.coef_) \n",
"print(regression_model.intercept_)"
]
},
{
"cell_type": "code",
"execution_count": 218,
"metadata": {},
"outputs": [],
"source": [
"line_pred = regression_model.coef_ * unemployment + regression_model.intercept_\n",
"# This is actually y = a * x + b"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(my_matrix, unemployment, 'go', unemployment, line_pred)\n",
"axes = plt.gca()\n",
"#axes.set_ylim([0, 32])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Date</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>IsHoliday</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Date Temperature Fuel_Price MarkDown1 MarkDown2 MarkDown3 \\\n",
"0 1 2010-02-05 42.31 2.572 NaN NaN NaN \n",
"1 1 2010-02-12 38.51 2.548 NaN NaN NaN \n",
"2 1 2010-02-19 39.93 2.514 NaN NaN NaN \n",
"3 1 2010-02-26 46.63 2.561 NaN NaN NaN \n",
"4 1 2010-03-05 46.50 2.625 NaN NaN NaN \n",
"\n",
" MarkDown4 MarkDown5 CPI Unemployment IsHoliday \n",
"0 NaN NaN 211.096358 8.106 False \n",
"1 NaN NaN 211.242170 8.106 True \n",
"2 NaN NaN 211.289143 8.106 False \n",
"3 NaN NaN 211.319643 8.106 False \n",
"4 NaN NaN 211.350143 8.106 False "
]
},
"execution_count": 220,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Date</th>\n",
" <th>Weekly_Sales</th>\n",
" <th>IsHoliday</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>24924.50</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>46039.49</td>\n",
" <td>True</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>41595.55</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>19403.54</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>21827.90</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Date Weekly_Sales IsHoliday Year Month\n",
"0 1 1 2010-02-05 24924.50 False 2010 2\n",
"1 1 1 2010-02-12 46039.49 True 2010 2\n",
"2 1 1 2010-02-19 41595.55 False 2010 2\n",
"3 1 1 2010-02-26 19403.54 False 2010 2\n",
"4 1 1 2010-03-05 21827.90 False 2010 3"
]
},
"execution_count": 221,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Decision Tree Model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### CPI attribute is used for the decision tree model. Classification is made with respect to mean of CPI values."
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from sklearn import datasets\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Date</th>\n",
" <th>Weekly_Sales</th>\n",
" <th>IsHoliday</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>24924.50</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>46039.49</td>\n",
" <td>True</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>41595.55</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>19403.54</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>21827.90</td>\n",
" <td>False</td>\n",
" <td>2010</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Date Weekly_Sales IsHoliday Year Month\n",
"0 1 1 2010-02-05 24924.50 False 2010 2\n",
"1 1 1 2010-02-12 46039.49 True 2010 2\n",
"2 1 1 2010-02-19 41595.55 False 2010 2\n",
"3 1 1 2010-02-26 19403.54 False 2010 2\n",
"4 1 1 2010-03-05 21827.90 False 2010 3"
]
},
"execution_count": 223,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from os.path import join\n",
"walmart_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {},
"outputs": [],
"source": [
"#Mapping discrete values to continuous values\n",
"walmart_features['IsHoliday'] = walmart_features['IsHoliday'].map({True : 1, False : 0})"
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Date</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>IsHoliday</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Date Temperature Fuel_Price MarkDown1 MarkDown2 MarkDown3 \\\n",
"0 1 2010-02-05 42.31 2.572 NaN NaN NaN \n",
"1 1 2010-02-12 38.51 2.548 NaN NaN NaN \n",
"2 1 2010-02-19 39.93 2.514 NaN NaN NaN \n",
"3 1 2010-02-26 46.63 2.561 NaN NaN NaN \n",
"4 1 2010-03-05 46.50 2.625 NaN NaN NaN \n",
"\n",
" MarkDown4 MarkDown5 CPI Unemployment IsHoliday \n",
"0 NaN NaN 211.096358 8.106 0 \n",
"1 NaN NaN 211.242170 8.106 1 \n",
"2 NaN NaN 211.289143 8.106 0 \n",
"3 NaN NaN 211.319643 8.106 0 \n",
"4 NaN NaN 211.350143 8.106 0 "
]
},
"execution_count": 225,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 226,
"metadata": {},
"outputs": [],
"source": [
"walmart_train['IsHoliday'] = walmart_train['IsHoliday'].map({True : 1, False : 0})"
]
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Dept</th>\n",
" <th>Date</th>\n",
" <th>Weekly_Sales</th>\n",
" <th>IsHoliday</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>24924.50</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>46039.49</td>\n",
" <td>1</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>41595.55</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>19403.54</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>21827.90</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Dept Date Weekly_Sales IsHoliday Year Month\n",
"0 1 1 2010-02-05 24924.50 0 2010 2\n",
"1 1 1 2010-02-12 46039.49 1 2010 2\n",
"2 1 1 2010-02-19 41595.55 0 2010 2\n",
"3 1 1 2010-02-26 19403.54 0 2010 2\n",
"4 1 1 2010-03-05 21827.90 0 2010 3"
]
},
"execution_count": 227,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Date</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>MarkDown1</th>\n",
" <th>MarkDown2</th>\n",
" <th>MarkDown3</th>\n",
" <th>MarkDown4</th>\n",
" <th>MarkDown5</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>IsHoliday</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2010-02-05</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2010-02-12</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>1</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2010-02-19</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2010-02-26</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2010-03-05</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Date Temperature Fuel_Price MarkDown1 MarkDown2 MarkDown3 \\\n",
"0 1 2010-02-05 42.31 2.572 NaN NaN NaN \n",
"1 1 2010-02-12 38.51 2.548 NaN NaN NaN \n",
"2 1 2010-02-19 39.93 2.514 NaN NaN NaN \n",
"3 1 2010-02-26 46.63 2.561 NaN NaN NaN \n",
"4 1 2010-03-05 46.50 2.625 NaN NaN NaN \n",
"\n",
" MarkDown4 MarkDown5 CPI Unemployment IsHoliday Year Month \n",
"0 NaN NaN 211.096358 8.106 0 2010 2 \n",
"1 NaN NaN 211.242170 8.106 1 2010 2 \n",
"2 NaN NaN 211.289143 8.106 0 2010 2 \n",
"3 NaN NaN 211.319643 8.106 0 2010 2 \n",
"4 NaN NaN 211.350143 8.106 0 2010 3 "
]
},
"execution_count": 228,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features['Date'] = pd.to_datetime(walmart_features['Date'])\n",
"walmart_features['Year'], walmart_features['Month'] = walmart_features['Date'].dt.year, walmart_features['Date'].dt.month\n",
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 229,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Temperature Fuel_Price CPI Unemployment\n",
"0 1 42.31 2.572 211.096358 8.106\n",
"1 1 38.51 2.548 211.242170 8.106\n",
"2 1 39.93 2.514 211.289143 8.106\n",
"3 1 46.63 2.561 211.319643 8.106\n",
"4 1 46.50 2.625 211.350143 8.106"
]
},
"execution_count": 229,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features = walmart_features.drop('Date',axis = 1)\n",
"walmart_features = walmart_features.drop('Month',axis = 1)\n",
"walmart_features = walmart_features.drop('MarkDown1',axis = 1)\n",
"walmart_features = walmart_features.drop('MarkDown2',axis = 1)\n",
"walmart_features = walmart_features.drop('MarkDown3',axis = 1)\n",
"walmart_features = walmart_features.drop('MarkDown4',axis = 1)\n",
"walmart_features = walmart_features.drop('MarkDown5',axis = 1)\n",
"walmart_features = walmart_features.drop('Year',axis = 1)\n",
"walmart_features = walmart_features.drop('IsHoliday',axis = 1)\n",
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 230,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>cop</th>\n",
" <th>Unemployment</th>\n",
" <th>CPI</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Temperature Fuel_Price cop Unemployment CPI\n",
"0 1 42.31 2.572 211.096358 8.106 15\n",
"1 1 38.51 2.548 211.242170 8.106 15\n",
"2 1 39.93 2.514 211.289143 8.106 15\n",
"3 1 46.63 2.561 211.319643 8.106 15\n",
"4 1 46.50 2.625 211.350143 8.106 15"
]
},
"execution_count": 230,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features = walmart_features.rename(columns={\"CPI\": \"cop\"})\n",
"walmart_features['CPI'] = 15 # a new cpi column is added to walmart_features\n",
"mean = walmart_features['cop'].mean() # classification will be applied with respect to mean\n",
"#mapping is done with this loop indeed\n",
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 231,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"171.5783938487799\n"
]
}
],
"source": [
"#walmart_features['CPI'] = walmart_features['cop']\n",
"print(mean)"
]
},
{
"cell_type": "code",
"execution_count": 232,
"metadata": {},
"outputs": [],
"source": [
"'''for i in range(walmart_features['CPI'].size) :\n",
" if walmart_features['cop'][i] < mean :\n",
" walmart_features['CPI'][i] = 0\n",
" else :\n",
" walmart_features['CPI'][i] = 1'''"
]
},
{
"cell_type": "code",
"execution_count": 278,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Fuel_Price</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>Temperature</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Fuel_Price CPI Unemployment Temperature\n",
"0 1 2.572 211.096358 8.106 0\n",
"1 1 2.548 211.242170 8.106 0\n",
"2 1 2.514 211.289143 8.106 0\n",
"3 1 2.561 211.319643 8.106 0\n",
"4 1 2.625 211.350143 8.106 0"
]
},
"execution_count": 278,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 286,
"metadata": {},
"outputs": [],
"source": [
"cop_mean = walmart_features[\"CPI\"].mean()\n",
"walmart_features[\"cpi_mod\"] = 0\n",
"walmart_features.loc[walmart_features[\"CPI\"] >= cop_mean, \"cpi_mod\"] = 1"
]
},
{
"cell_type": "code",
"execution_count": 288,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 3289\n",
"0 3146\n",
"Name: cpi_mod, dtype: int64"
]
},
"execution_count": 288,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features[\"cpi_mod\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 289,
"metadata": {},
"outputs": [],
"source": [
"#So, what am i interested is guessing the consumer prıce ındex \n",
"#X = walmart_features.drop('cpi_mod',axis = 1) # these are our features\n",
"\n",
"y = walmart_features['cpi_mod'] # this is what we want to predict."
]
},
{
"cell_type": "code",
"execution_count": 296,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Fuel_Price</th>\n",
" <th>Unemployment</th>\n",
" <th>Temperature</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2.572</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2.548</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2.514</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2.561</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2.625</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Fuel_Price Unemployment Temperature\n",
"0 1 2.572 8.106 10\n",
"1 1 2.548 8.106 10\n",
"2 1 2.514 8.106 10\n",
"3 1 2.561 8.106 10\n",
"4 1 2.625 8.106 10"
]
},
"execution_count": 296,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = walmart_features.drop('CPI',axis =1)\n",
"X = X.drop('cpi_mod',axis = 1) # these are our features\n",
"X.head()"
]
},
{
"cell_type": "code",
"execution_count": 243,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1\n",
"1 1\n",
"2 1\n",
"3 1\n",
"4 1\n",
"Name: CPI, dtype: int64"
]
},
"execution_count": 243,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y.head()"
]
},
{
"cell_type": "code",
"execution_count": 297,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 298,
"metadata": {},
"outputs": [],
"source": [
"# This will create us train and test datasets from the original dataset that we have where\n",
"# 70% of original dataframe will be train set and 30% of it will be test set to evaluate the Decision Tree\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, test_size=0.30)"
]
},
{
"cell_type": "code",
"execution_count": 299,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import tree\n",
"model = tree.DecisionTreeClassifier()\n"
]
},
{
"cell_type": "code",
"execution_count": 307,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Fuel_Price</th>\n",
" <th>Unemployment</th>\n",
" <th>Temperature</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2.572</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2.548</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2.514</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2.561</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2.625</td>\n",
" <td>8.106</td>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Fuel_Price Unemployment Temperature\n",
"0 1 2.572 8.106 10\n",
"1 1 2.548 8.106 10\n",
"2 1 2.514 8.106 10\n",
"3 1 2.561 8.106 10\n",
"4 1 2.625 8.106 10"
]
},
"execution_count": 307,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.head()"
]
},
{
"cell_type": "code",
"execution_count": 300,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
" max_features=None, max_leaf_nodes=None,\n",
" min_impurity_decrease=0.0, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=False, random_state=None,\n",
" splitter='best')"
]
},
"execution_count": 300,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"#i will map nan values for markdowns which actually menas nothing ? -> bunu sor \n",
"#just drop the date object\n",
"\n",
"walmart_features.size\n",
"model.fit(X_train, y_train) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": 301,
"metadata": {},
"outputs": [],
"source": [
"y_predict = model.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 306,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 306,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import accuracy_score\n",
"\n",
"accuracy_score(y_test, y_predict)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's obvious that our model predicted the CPI values with %100 accuracy"
]
},
{
"cell_type": "code",
"execution_count": 303,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[958, 0],\n",
" [ 0, 973]])"
]
},
"execution_count": 303,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"confusion_matrix(y_test, y_predict)"
]
},
{
"cell_type": "code",
"execution_count": 304,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Predicted below mean</th>\n",
" <th>Predicted above mean</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>True below mean</th>\n",
" <td>958</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>True above mean</th>\n",
" <td>0</td>\n",
" <td>973</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Predicted below mean Predicted above mean\n",
"True below mean 958 0\n",
"True above mean 0 973"
]
},
"execution_count": 304,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(\n",
" confusion_matrix(y_test, y_predict),\n",
" columns=['Predicted below mean', 'Predicted above mean'],\n",
" index=['True below mean', 'True above mean'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Random forest algorithm"
]
},
{
"cell_type": "code",
"execution_count": 244,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Temperature Fuel_Price CPI Unemployment\n",
"0 1 42.31 2.572 211.096358 8.106\n",
"1 1 38.51 2.548 211.242170 8.106\n",
"2 1 39.93 2.514 211.289143 8.106\n",
"3 1 46.63 2.561 211.319643 8.106\n",
"4 1 46.50 2.625 211.350143 8.106"
]
},
"execution_count": 244,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features = walmart_features.drop('CPI',axis = 1)\n",
"walmart_features = walmart_features.rename(index=str, columns={\"cop\": \"CPI\"})\n",
"walmart_features.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Temperature is our target label, but currently it seems to have letter codes as labels. Let's check it below and map those labels correctly before proceeding."
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Temperature</th>\n",
" <th>Fuel_Price</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>42.31</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>38.51</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>39.93</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>46.63</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>46.50</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Temperature Fuel_Price CPI Unemployment\n",
"0 1 42.31 2.572 211.096358 8.106\n",
"1 1 38.51 2.548 211.242170 8.106\n",
"2 1 39.93 2.514 211.289143 8.106\n",
"3 1 46.63 2.561 211.319643 8.106\n",
"4 1 46.50 2.625 211.350143 8.106"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 258,
"metadata": {},
"outputs": [],
"source": [
"# Mapping target label to 0 and 1s\n",
"temp_mean = walmart_features['Temperature'].mean()\n",
"walmart_features['COP'] = 15\n",
"for i in range(walmart_features['Temperature'].size) :\n",
" if walmart_features['Temperature'][i] < temp_mean :\n",
" walmart_features['COP'][i] = 0\n",
" else :\n",
" walmart_features['COP'][i] = 1\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 260,
"metadata": {},
"outputs": [],
"source": [
"walmart_features = walmart_features.drop('Temperature',axis = 1)\n",
"walmart_features = walmart_features.rename(index=str, columns={\"COP\": \"Temperature\"})\n"
]
},
{
"cell_type": "code",
"execution_count": 261,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Fuel_Price</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>Temperature</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Fuel_Price CPI Unemployment Temperature\n",
"0 1 2.572 211.096358 8.106 0\n",
"1 1 2.548 211.242170 8.106 0\n",
"2 1 2.514 211.289143 8.106 0\n",
"3 1 2.561 211.319643 8.106 0\n",
"4 1 2.625 211.350143 8.106 0"
]
},
"execution_count": 261,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {},
"outputs": [],
"source": [
"# Creating training and test splits from the original dataframe\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"#walmart_features = walmart_features.drop('Weekly_Sales',axis = 1)\n",
"A = walmart_features.iloc[:, walmart_features.columns != 'Temperature']\n",
"b = walmart_features.iloc[:, walmart_features.columns == 'Temperature']\n",
"\n",
"# 75% for training and 25% for testing\n",
"A_train, A_test, b_train, b_test = train_test_split(A, b, test_size= 0.25, random_state = 42)"
]
},
{
"cell_type": "code",
"execution_count": 265,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"rf = RandomForestClassifier(random_state = 42)"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Store</th>\n",
" <th>Fuel_Price</th>\n",
" <th>CPI</th>\n",
" <th>Unemployment</th>\n",
" <th>Temperature</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2.572</td>\n",
" <td>211.096358</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2.548</td>\n",
" <td>211.242170</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>2.514</td>\n",
" <td>211.289143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>2.561</td>\n",
" <td>211.319643</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>2.625</td>\n",
" <td>211.350143</td>\n",
" <td>8.106</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Store Fuel_Price CPI Unemployment Temperature\n",
"0 1 2.572 211.096358 8.106 0\n",
"1 1 2.548 211.242170 8.106 0\n",
"2 1 2.514 211.289143 8.106 0\n",
"3 1 2.561 211.319643 8.106 0\n",
"4 1 2.625 211.350143 8.106 0"
]
},
"execution_count": 266,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_features.head()"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
" max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
" min_impurity_decrease=0.0, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,\n",
" oob_score=False, random_state=42, verbose=0, warm_start=False)"
]
},
"execution_count": 267,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rf.fit(A_train, b_train)"
]
},
{
"cell_type": "code",
"execution_count": 272,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 2567\n",
"0 2259\n",
"Name: Temperature, dtype: int64"
]
},
"execution_count": 272,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b_train[\"Temperature\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 273,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 868\n",
"0 741\n",
"Name: Temperature, dtype: int64"
]
},
"execution_count": 273,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b_test[\"Temperature\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 268,
"metadata": {},
"outputs": [],
"source": [
"pred_rf = rf.predict(A_test)"
]
},
{
"cell_type": "code",
"execution_count": 269,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy of the random forest model: 0.9210689869484152\n"
]
}
],
"source": [
"# Checking the performance of the model with accuracy score;\n",
"from sklearn import metrics\n",
"\n",
"print(\"Accuracy of the random forest model: \",metrics.accuracy_score(b_test, pred_rf))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Our model uses many decision trees to work properly and it works very well"
]
},
{
"cell_type": "code",
"execution_count": 274,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.07348599, 0.30663925, 0.43827941, 0.18159536])"
]
},
"execution_count": 274,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# It seems our model has a function called feature_importances_\n",
"# Let's call it and see what it does\n",
"rf.feature_importances_"
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x864 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Creating a bar plot for feature importances\n",
"\n",
"# Firstly creating a Pandas Series to match feature importances values and their indices, also sorting them in decreasing order\n",
"feature_importances = pd.Series(rf.feature_importances_, index=A.columns).sort_values(ascending=False)\n",
"\n",
"plt.figure(figsize=(12, 12))\n",
"sns.barplot(x=feature_importances, y=feature_importances.index)\n",
"\n",
"# Add labels to our graph \n",
"plt.xlabel('Feature Importance Score')\n",
"plt.ylabel('Features')\n",
"plt.title(\"Feature Importance Rankings\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"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.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment