diff --git a/module-3/lab-unsupervised-learning/push b/module-3/lab-unsupervised-learning/push new file mode 100644 index 00000000..e69de29b diff --git a/module-3/lab-unsupervised-learning/your-code/main.ipynb b/module-3/lab-unsupervised-learning/your-code/main.ipynb index 9d986f93..bc9fb8ee 100644 --- a/module-3/lab-unsupervised-learning/your-code/main.ipynb +++ b/module-3/lab-unsupervised-learning/your-code/main.ipynb @@ -12,17 +12,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# Import your libraries:\n", "\n", - "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "import pandas as pd" + "import pandas as pd\n", + "\n", + "%matplotlib inline\n" ] }, { @@ -38,7 +39,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -46,6 +47,292 @@ "customers = pd.read_csv('../Wholesale customers data.csv')" ] }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(440, 8)" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#How big is the dataset\n", + "customers.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Channel int64\n", + "Region int64\n", + "Fresh int64\n", + "Milk int64\n", + "Grocery int64\n", + "Frozen int64\n", + "Detergents_Paper int64\n", + "Delicassen int64\n", + "dtype: object" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#What type of data they include\n", + "customers.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ChannelRegionFreshMilkGroceryFrozenDetergents_PaperDelicassen
count440.000000440.000000440.000000440.000000440.000000440.000000440.000000440.000000
mean1.3227272.54318212000.2977275796.2659097951.2772733071.9318182881.4931821524.870455
std0.4680520.77427212647.3288657380.3771759503.1628294854.6733334767.8544482820.105937
min1.0000001.0000003.00000055.0000003.00000025.0000003.0000003.000000
25%1.0000002.0000003127.7500001533.0000002153.000000742.250000256.750000408.250000
50%1.0000003.0000008504.0000003627.0000004755.5000001526.000000816.500000965.500000
75%2.0000003.00000016933.7500007190.25000010655.7500003554.2500003922.0000001820.250000
max2.0000003.000000112151.00000073498.00000092780.00000060869.00000040827.00000047943.000000
\n", + "
" + ], + "text/plain": [ + " Channel Region Fresh Milk Grocery \\\n", + "count 440.000000 440.000000 440.000000 440.000000 440.000000 \n", + "mean 1.322727 2.543182 12000.297727 5796.265909 7951.277273 \n", + "std 0.468052 0.774272 12647.328865 7380.377175 9503.162829 \n", + "min 1.000000 1.000000 3.000000 55.000000 3.000000 \n", + "25% 1.000000 2.000000 3127.750000 1533.000000 2153.000000 \n", + "50% 1.000000 3.000000 8504.000000 3627.000000 4755.500000 \n", + "75% 2.000000 3.000000 16933.750000 7190.250000 10655.750000 \n", + "max 2.000000 3.000000 112151.000000 73498.000000 92780.000000 \n", + "\n", + " Frozen Detergents_Paper Delicassen \n", + "count 440.000000 440.000000 440.000000 \n", + "mean 3071.931818 2881.493182 1524.870455 \n", + "std 4854.673333 4767.854448 2820.105937 \n", + "min 25.000000 3.000000 3.000000 \n", + "25% 742.250000 256.750000 408.250000 \n", + "50% 1526.000000 816.500000 965.500000 \n", + "75% 3554.250000 3922.000000 1820.250000 \n", + "max 60869.000000 40827.000000 47943.000000 " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Some basic information, shows columns with continous data, and \"Channel\" & \"Region\" with different paterns.\n", + "customers.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 298\n", + "2 142\n", + "Name: Channel, dtype: int64" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Channel is a categorical columns with only two values (1.Horeca, 2.Retail)\n", + "customers['Channel'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3 316\n", + "1 77\n", + "2 47\n", + "Name: Region, dtype: int64" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Region is also a categorical. (1.Lisbon, 2.Porto, 3.Other Region)\n", + "customers['Region'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Channel 0\n", + "Region 0\n", + "Fresh 0\n", + "Milk 0\n", + "Grocery 0\n", + "Frozen 0\n", + "Detergents_Paper 0\n", + "Delicassen 0\n", + "dtype: int64" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "customers.isnull().sum()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -67,16 +354,273 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "# Your code here:\n", + " #WHAT DOES EACH COLUMN MEAN?\n", + " #Two columns with nominal values \"Region\" and \"Channel\", rest of the columns shows money spend by each customer in the different supermarket departments\n", + " #supermarket departments are: Fresh, Milk, Grocery, Frozen, Detergents_Paper, Delicatessen.\n", + " #ANY CATEGORICAL DATA TO CONVERT?\n", + " #The two categorical data 'Region' and 'Channel' are already converted\n", + " #ANY MISSING DATA TO REMOVE?\n", + " #Checked before, there are no missing data at all." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ChannelRegionFreshMilkGroceryFrozenDetergents_PaperDelicassen
Channel1.0000000.062028-0.1691720.4607200.608792-0.2020460.6360260.056011
Region0.0620281.0000000.0552870.0322880.007696-0.021044-0.0014830.045212
Fresh-0.1691720.0552871.0000000.100510-0.0118540.345881-0.1019530.244690
Milk0.4607200.0322880.1005101.0000000.7283350.1239940.6618160.406368
Grocery0.6087920.007696-0.0118540.7283351.000000-0.0401930.9246410.205497
Frozen-0.202046-0.0210440.3458810.123994-0.0401931.000000-0.1315250.390947
Detergents_Paper0.636026-0.001483-0.1019530.6618160.924641-0.1315251.0000000.069291
Delicassen0.0560110.0452120.2446900.4063680.2054970.3909470.0692911.000000
\n", + "
" + ], + "text/plain": [ + " Channel Region Fresh Milk Grocery Frozen \\\n", + "Channel 1.000000 0.062028 -0.169172 0.460720 0.608792 -0.202046 \n", + "Region 0.062028 1.000000 0.055287 0.032288 0.007696 -0.021044 \n", + "Fresh -0.169172 0.055287 1.000000 0.100510 -0.011854 0.345881 \n", + "Milk 0.460720 0.032288 0.100510 1.000000 0.728335 0.123994 \n", + "Grocery 0.608792 0.007696 -0.011854 0.728335 1.000000 -0.040193 \n", + "Frozen -0.202046 -0.021044 0.345881 0.123994 -0.040193 1.000000 \n", + "Detergents_Paper 0.636026 -0.001483 -0.101953 0.661816 0.924641 -0.131525 \n", + "Delicassen 0.056011 0.045212 0.244690 0.406368 0.205497 0.390947 \n", + "\n", + " Detergents_Paper Delicassen \n", + "Channel 0.636026 0.056011 \n", + "Region -0.001483 0.045212 \n", + "Fresh -0.101953 0.244690 \n", + "Milk 0.661816 0.406368 \n", + "Grocery 0.924641 0.205497 \n", + "Frozen -0.131525 0.390947 \n", + "Detergents_Paper 1.000000 0.069291 \n", + "Delicassen 0.069291 1.000000 " + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#COLUMN COLLINEARITY - ANY HIGH CORRELATIONS?\n", + "customers.corr()\n", + " #Detect a high direct-correlation between Grocery and Detergents_Paper" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#DESCRIPTIVE STATISTICS - ANY OUTLIERS TO REMOVE?\n", + " #There are some outliers, but I decide to keep them.\n", + " \n", + "import seaborn as sns\n", + "# sns.boxplot(x=customers['Fresh'])\n", + "# sns.boxplot(x=customers['Milk'])\n", + "# sns.boxplot(x=customers['Grocery'])\n", + "# sns.boxplot(x=customers['Frozen'])\n", + "# sns.boxplot(x=customers['Detergents_Paper'])\n", + "# sns.boxplot(x=customers['Delicassen'])\n", + "\n", + "\n", + "\n", + "fig, axs = plt.subplots(3, 2)\n", + "axs[0, 0].boxplot(x=customers['Fresh'])\n", + "axs[0, 0].set_title('Fresh')\n", + "axs[0, 1].boxplot(x=customers['Milk'])\n", + "axs[0, 1].set_title('Milk]')\n", + "axs[1, 0].boxplot(x=customers['Grocery'])\n", + "axs[1, 0].set_title('Grocery')\n", + "axs[1, 1].boxplot(x=customers['Frozen'])\n", + "axs[1, 1].set_title('Frozen')\n", + "axs[2, 1].boxplot(x=customers['Detergents_Paper'])\n", + "axs[2, 1].set_title('Detergents_Paper')\n", + "axs[2, 0].boxplot(x=customers['Delicassen'])\n", + "axs[2, 1].set_title('Delicassen')\n", + "\n", + "for ax in axs.flat:\n", + " ax.set(xlabel='x-label', ylabel='y-label')\n", + "\n", + "# Hide x labels and tick labels for top plots and y ticks for right plots.\n", + "for ax in axs.flat:\n", + " ax.label_outer()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fresh's Skew: 2.5525826879071585\n", + "Milk's Skew: 4.039922122788577\n", + "Grocery's Skew: 3.5751872200807875\n", + "Frozen's Skew: 5.887825728957787\n", + "Detergents_Paper's Skew: 3.6194575783115934\n", + "Delicassen's Skew: 11.113533648709097\n" + ] + } + ], + "source": [ + "# COLUMN-WISE DATA DISTRIBUTION - IS THE DISTRIBUTION SKEWED?\n", + "\n", + "# skewness = 0 : normally distributed.\n", + "# skewness > 0 : more weight in the left tail of the distribution.\n", + "# skewness < 0 : more weight in the right tail of the distribution. \n", + "\n", + "from scipy.stats import skew \n", + "print(f\"Fresh's Skew: {skew(customers['Fresh'])}\")\n", + "print(f\"Milk's Skew: {skew(customers['Milk'])}\")\n", + "print(f\"Grocery's Skew: {skew(customers['Grocery'])}\")\n", + "print(f\"Frozen's Skew: {skew(customers['Frozen'])}\")\n", + "print(f\"Detergents_Paper's Skew: {skew(customers['Detergents_Paper'])}\")\n", + "print(f\"Delicassen's Skew: {skew(customers['Delicassen'])}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -94,20 +638,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Your code here\n", + "# I decide not to do the cleaning of the outliers. The data we are working with is sales from a supermarket.\n", + "# What we want to detect are the outliers (spend more money) so precisely are the more need and see how much do they represent." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ - "# Your comment here" + "# Trying to do some Pareto Analysis.... will create new columns\n", + "# customers['total_spend'] = customers['Milk'] + customers['Grocery'] + customers['Fresh'] + customers['Frozen'] + customers['Detergents_Paper'] + customers['Delicassen']\n", + "# customers['spendpercentage'] = customers['total_spend'] / customers['total_spend'].sum() * 100\n", + "# customers.head(1)" ] }, { @@ -127,7 +676,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ @@ -135,7 +684,216 @@ "\n", "from sklearn.preprocessing import StandardScaler\n", "\n", - "# Your code here:\n" + "# Your code here:\n", + "#it does not have sense to Scale the nominal columns so we will not scale them.\n", + "customers_nom = customers[['Channel','Region']]\n", + "customers = customers.drop(columns = (['Channel', 'Region']))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "customers_columns = list(customers.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()\n", + "scaler.fit(customers)\n", + "customers_array = scaler.transform(customers)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FreshMilkGroceryFrozenDetergents_PaperDelicassen
00.0529330.523568-0.041115-0.589367-0.043569-0.066339
\n", + "
" + ], + "text/plain": [ + " Fresh Milk Grocery Frozen Detergents_Paper Delicassen\n", + "0 0.052933 0.523568 -0.041115 -0.589367 -0.043569 -0.066339" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(customers_array, columns= customers_columns)\n", + "df.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ChannelRegionFreshMilkGroceryFrozenDetergents_PaperDelicassen
0230.0529330.523568-0.041115-0.589367-0.043569-0.066339
123-0.3913020.5444580.170318-0.2701360.0864070.089151
223-0.4470290.408538-0.028157-0.1375360.1332322.243293
3130.100111-0.624020-0.3929770.687144-0.4985880.093411
4230.840239-0.052396-0.0793560.173859-0.2319181.299347
\n", + "
" + ], + "text/plain": [ + " Channel Region Fresh Milk Grocery Frozen Detergents_Paper \\\n", + "0 2 3 0.052933 0.523568 -0.041115 -0.589367 -0.043569 \n", + "1 2 3 -0.391302 0.544458 0.170318 -0.270136 0.086407 \n", + "2 2 3 -0.447029 0.408538 -0.028157 -0.137536 0.133232 \n", + "3 1 3 0.100111 -0.624020 -0.392977 0.687144 -0.498588 \n", + "4 2 3 0.840239 -0.052396 -0.079356 0.173859 -0.231918 \n", + "\n", + " Delicassen \n", + "0 -0.066339 \n", + "1 0.089151 \n", + "2 2.243293 \n", + "3 0.093411 \n", + "4 1.299347 " + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Change the name of my dataset to 'final'\n", + "final = pd.merge(customers_nom, df, left_index = True, right_index = True)\n", + "final.head(5)" ] }, { @@ -149,13 +907,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n", + " n_clusters=8, n_init=10, n_jobs=None, precompute_distances='auto',\n", + " random_state=None, tol=0.0001, verbose=0)" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "# Your code here:\n", + "from sklearn.cluster import KMeans\n", + "kmeans = KMeans()\n", + "kmeans.fit(final)" ] }, { @@ -167,11 +941,74 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, 6, 1, 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 6, 0, 6, 0, 6, 6, 6,\n", + " 1, 5, 0, 0, 6, 6, 5, 1, 6, 6, 6, 1, 6, 0, 1, 0, 0, 1, 1, 6, 0, 0,\n", + " 0, 5, 0, 2, 0, 5, 6, 6, 1, 0, 1, 6, 5, 0, 6, 6, 0, 2, 0, 0, 6, 5,\n", + " 6, 0, 6, 6, 1, 1, 6, 1, 0, 6, 6, 5, 6, 6, 6, 0, 0, 6, 6, 2, 2, 1,\n", + " 6, 1, 6, 6, 5, 7, 0, 6, 0, 6, 6, 6, 0, 0, 0, 1, 6, 6, 0, 0, 0, 0,\n", + " 6, 0, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 1, 1, 1, 0, 6, 1, 6, 6,\n", + " 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 6, 6, 5, 6, 6, 6, 1, 6, 6, 6, 6,\n", + " 6, 5, 0, 6, 0, 0, 0, 6, 6, 5, 0, 0, 0, 6, 6, 6, 0, 5, 6, 0, 6, 0,\n", + " 1, 6, 6, 6, 6, 1, 0, 4, 6, 6, 6, 6, 0, 0, 6, 6, 6, 0, 6, 1, 1, 3,\n", + " 3, 3, 5, 5, 1, 3, 3, 5, 3, 3, 3, 5, 3, 5, 3, 3, 0, 0, 5, 3, 0, 3,\n", + " 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3,\n", + " 3, 3, 3, 0, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3,\n", + " 0, 3, 0, 3, 0, 3, 3, 3, 3, 1, 6, 6, 1, 1, 6, 0, 6, 0, 1, 1, 1, 1,\n", + " 6, 6, 6, 1, 6, 6, 6, 0, 3, 3, 3, 0, 0, 3, 0, 0, 0, 0, 5, 0, 0, 3,\n", + " 3, 0, 3, 1, 5, 3, 3, 0, 3, 3, 3, 5, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3,\n", + " 3, 5, 3, 2, 1, 0, 3, 3, 3, 3, 0, 0, 6, 5, 6, 6, 0, 0, 6, 5, 6, 5,\n", + " 6, 0, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 1, 1, 6, 0,\n", + " 6, 6, 0, 1, 6, 0, 1, 1, 1, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 1, 6, 6,\n", + " 0, 6, 6, 6, 6, 1, 6, 6, 6, 6, 1, 0, 6, 6, 6, 6, 6, 1, 6, 0, 0, 6,\n", + " 0, 6, 0, 0, 6, 6, 0, 1, 0, 1, 6, 6, 6, 6, 6, 6, 6, 1, 1, 5, 6, 6],\n", + " dtype=int32)" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "# Your code here:\n", + "kmeans.labels_" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6 166\n", + "0 99\n", + "3 85\n", + "1 55\n", + "5 27\n", + "2 5\n", + "7 2\n", + "4 1\n", + "Name: labels, dtype: int64" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final['labels'] = kmeans.labels_\n", + "final['labels'].value_counts()\n", + "\n", + "#if not expecified kmeans by default make clusters. I think 5 will make better results" ] }, { @@ -185,13 +1022,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 55, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "DBSCAN(algorithm='auto', eps=0.5, leaf_size=30, metric='euclidean',\n", + " metric_params=None, min_samples=5, n_jobs=None, p=None)" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here\n" + "# Your code here\n", + "from sklearn.cluster import DBSCAN\n", + "clustering = DBSCAN(eps=0.5)\n", + "clustering.fit(final)" ] }, { @@ -203,11 +1055,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 56, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "-1 266\n", + " 0 124\n", + " 4 22\n", + " 3 7\n", + " 5 6\n", + " 1 5\n", + " 6 5\n", + " 2 5\n", + "Name: labels_DBSCAN, dtype: int64" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here\n" + "# Your code here\n", + "final['labels_DBSCAN'] = clustering.labels_\n", + "final['labels_DBSCAN'].value_counts()" ] }, { @@ -234,11 +1107,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ - "# Your code here:\n" + "# Your code here:\n", + "# plt.figure()\n", + "# plt.subplot(211)\n", + "# plt.scatter(final['Detergents_Paper'],final['Milk'],c=final['labels'],cmap='brg')\n", + "# plt.subplot(212)\n", + "# plt.scatter(final['Detergents_Paper'],final['Milk'],c=final['labels_DBSCAN'],cmap='brg')\n", + "\n", + "\n", + "fig, axs = plt.subplots(2)\n", + "fig.suptitle('Detergents_Paper vs Milk')\n", + "axs[0].set_title('K-Means]')\n", + "axs[0].scatter(final['Detergents_Paper'],final['Milk'],c=final['labels'],cmap='brg')\n", + "axs[1].set_title('DBSCAN')\n", + "axs[1].scatter(final['Detergents_Paper'],final['Milk'],c=final['labels_DBSCAN'],cmap='brg')" ] }, { @@ -250,11 +1159,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ - "# Your code here:\n" + "# Your code here:\n", + "fig, axs = plt.subplots(2)\n", + "fig.suptitle('Grocery vs Fresh')\n", + "axs[0].set_title('K-Means]')\n", + "axs[0].scatter(final['Grocery'],final['Fresh'],c=final['labels'],cmap='brg')\n", + "axs[1].set_title('DBSCAN')\n", + "axs[1].scatter(final['Grocery'],final['Fresh'],c=final['labels_DBSCAN'],cmap='brg')\n" ] }, { @@ -266,11 +1204,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEVCAYAAAD5IL7WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd5hU5fXA8e+Zme2FuvSOCAoGFMROVERRUIzGmkQTNcQSu4mamJ+mWGJNNAZFRU1sIWoUe8GKgLhYKFKl910622fm/P5477ptlu07e5fzeZ55dubeO/eeO7t77jvvfYuoKsYYY/wnEO8AjDHG1I8lcGOM8SlL4MYY41OWwI0xxqcsgRtjjE9ZAjfGGJ+yBG5MHYnIRyJyiff8JyLybrxjMvsmS+D7MBFZJSIFIrKn3KNbvONqSiLycxGJlDvflSLypIjsX5/9qeqzqnpiY8dpTG1YAjenqmp6uceGyhuISCgegTWhWaqaDrQBTgAKgLkiMiS+YRlTN5bATRUi0kdEVEQuFpE1wAfe8tNEZKGI7PCqEQ7wlp9TqRRfJCIfeeuSROReEVkjIptF5BERSfHWHSsi60TkehHZIiIbReQX1cR0rohkV1p2rYhM856fIiLfishuEVkvIjfUdJ6qGlHV71T1cuBj4LZy+z5cRGZ65/qNiBxbTVw/F5EZ5V4PFpH3RGSbd76/85aPFJFZ3v42isg/RCTRWyci8oD3GewUkXmlF5O9nZeIjBeRr719zhSRH5Rbt0pEbvD2tVNE/iMiyTV9JsZnVNUe++gDWAWcEGN5H0CBfwFpQAqwP5AHjAESgN8Cy4HESu/NBBYBv/Je/w2YBrQHMoDXgDu9dccCYeBP3j5PAfKBdjFiSgV2AwPKLfsCONd7vhE4xnveDjikmnP+OTAjxvKLgM3e8+7AVi+egHfOW4Esb/1HwCWV9+ed30bgeiDZe32Yt244cDgQ8j7fRcA13rqTgLlAW0CAA4Cuezsv4BBgC3AYEAQu9H6fSeV+t3OAbt5nvwi4NN5/c/Zo3IeVwM0rXgluh4i8Umndbaqap6oFwDnAG6r6nqqWAPfiEvuRpRuLSAB4DvhIVR8VEQF+CVyrqttUdTdwB3BuuWOUAH9S1RJVfRPYAwysHKSq5gOvAud5xxoADMJdHEr3c6CIZKrqdlX9so6fwwZcogP4KfCmqr6pqlFVfQ/IxiX0vRkPbFLV+1S1UFV3q+rnXvxzVXW2qoZVdRXwKPDDcrFneOcjqrpIVTfWcF6/BB5V1c/VfZN4GijCXSRKPaiqG1R1G+7COayOn4lp4SyBm9NVta33OL3SurXlnncDVpe+UNWot757uW1uxyWiq7zXWbiS89zSiwTwtre81FZVDZd7nQ+kVxPrc3gJHDgfeMVL7ABn4hLsahH5WESOqPaMY+sObPOe9wbOKndh2wEcDXStYR89ge9irRCR/UXkdRHZJCK7cBeyjgCq+gHwD+BhYLOITBaRzBrOqzdwfaUYe+J+T6U2lXu+t8/V+JQlcLM35Yeq3IBLGoCrt8UljPXe63NxyfXHXgkdIBd3g3BwuYtEG3U3EOvjXaCjiAzzjvXc94GqfqGqE4BOwCvA1Dru+0fAp97ztcC/y8XcVlXTVPWuGvaxFuhfzbpJwGJcFVAm8DtcdUlp/A+q6nBgMK666jc1nNda4PZKMaaq6vN1PG/jY5bATW1NBcaJyGgRScDV8xYBM0XkYOAhXGk+p/QNXin9MeABEekEICLdReSk+gTgldRfBO7BVXe85+0zUVx77DbexWMXEKlpfyISFJG+IvIQrj7+j96qZ4BTReQkb5tk74Zrjxp2+TrQRUSu8W7eZojIYd66DC+uPSIyCLisXByHishh3ueaBxQCkRrO6zHgUu99IiJpIjJORDJqOm/TelgCN7WiqktwdcMP4UrWp+KaIBYDE3A32GZIWUuUt7y33oi72Tnbqzp4nxh13HXwHK7p338rVb38DFjlHeNSL9bqHCEie3AJ8SPcjddDVXW+d65rvXP6HZCDK+3+hhr+X7w6/jG4z2YTsAw4zlt9A67aZzcu+f6n3FszvWXbcdVUW3H3GKo9L1XNxtWD/8N733LcDVWzDxFVm9DBGGP8yErgxhjjU5bAjTHGpyyBG2OMT1kCN6aJicjtIpInInbDyTQqS+CmxfLG8zih3OtzRWS7iPwwxrYzxI3fMrjS8te95Uc3R8yxqOrvgaHxOr5pvSyBG18QkQtxPRXHqerH1Wy2FLig3Hs64cYg2VbN9sb4miVw0+KJyETgPuAkVZ25l02fAc7zxmQB1+76Rdx4IqX7CojI70TkOxHJFZEXRKRduXUvet3dK4y46K1/RkQeFJG3vNEBZ4lI33LvfVAqjih4YCN/FMZUYAnctHSXAX8GRnudV/ZmLa5Dy2jv9QW4ERXLuw4YB4wCeuB6Pj5Ybv3rwACgC7AA+Hel958P/AHXE3SNFxvAybiBpAbgOjWdi5X8TROzBG5aujHAbGB+Lbf/F3CBVxeeoqpfVFr/K+B3qrpeVQtxY4CfLSIBb+TBp7xRBEvXDReRtHLvf1FVs72u7c9SNsJfCa5H5SAAVf1WVcsPJmVMo7MEblq6S3GDOz3uDaCFiDxersv+bytt/yJufO0rqFr6BugFvFZuBL/5uEG7OnnjntwtIiu8ruvLvfd0LPf+mCP8qeq7wCO4QatKJ66wcUlMk7IEblq6LbgqkWOAfwKo6iVaNgXc3eU3VtU9uFELJ+LqxCtbB4ypNIpfsldavgA3dOvxuOnW9vPeIzH2U4Wq/k1VDwGGAAfiqmuMaTKWwE2Lp26ezuOBsSLyQC3eciPwQ29QqsoeAe4QkV7gWqqIyGneugzcCItbceOY317bGMVNmTZS3PyheUAxtRgR0ZiGsARufMFLxscDPxaRO2vYdr2qflbN6vtxk0pMF5HdwEzgUG/dk7hxzzcAC711tdUWeALYgZvObCNQm4uNMfVmoxEa08RE5M+4WYqSVNUmFjaNxhK4Mcb4lFWhGGOMT1kCN8YYnwo158E6duyoffr0ac5DGmOM782dOzdXVbMqL2/WBN6nTx+ys2vqDW1M66eqFM2bQ/7sDwm260j6yWcRzGgT77BMCyUiq2Mtb9YEbowBjUTYePXZ5H/6NlpcjCQmkXPndXR/4m1SDjky3uEZH7E6cGOa2e5pz5L/6TtoQT5EwmhBHpq3m41XnIFGrO+PqT1L4MY0s10vTUEL8qosjxbmU7TwyzhEZPzKErgxzWyvfS+sX4apA0vgxjSzzDN+jqSkVVkeSEomacjwOERk/MoSuDHNLHPCz0g5/DgkNQ1EkOQUJDWdrg+9iASD8Q7P+Ii1QjGmmUkoRLdHplGYPYP8z10zwoxTziHYrkO8QzM+U2MCF5EpwHhgi6oO8ZbdBvwSyPE2+52qvtlUQRrT2ogIKYceQ8qhx8Q7FONjtalCeQoYG2P5A6o6zHtY8jbGmGZWYwJX1U+wyVmNMabFachNzF+LyDwRmSIi7RotImOMMbVS3wQ+CeiPm5F7I3BfdRuKyEQRyRaR7JycnOo2M8YYU0f1SuCqullVI6oaBR4DRu5l28mqOkJVR2RlVRlMyxhjTD3VK4GLSNdyL38ELGiccIwxxtRWbZoRPg8cC3QUkXXArcCxIjIMUNwErr9qwhiNMcbEUGMCV9XzYix+ogliMcYYUwfWld4YY3zKErgxxviUJXBjjPEpS+DGGONTlsCNMcanLIEbY4xPWQI3xhifsgRujDE+ZQncGGN8yhK4Mcb4lCVwY4zxKUvgxhjjU5bAjTHGpyyBG2OMT1kCN8YYn7IEbowxPmUJ3BhjfMoSuDHG+FSNCVxEpojIFhFZUG5ZexF5T0SWeT/bNW2YxhhjKqtNCfwpYGylZTcB01V1ADDde22MMaYZ1ZjAVfUTYFulxROAp73nTwOnN3JcxhhjalDfOvDOqroRwPvZqboNRWSiiGSLSHZOTk49D2eMMaayJr+JqaqTVXWEqo7Iyspq6sMZY8w+o74JfLOIdAXwfm5pvJCMMcbURn0T+DTgQu/5hcCrjROOMcaY2qpNM8LngVnAQBFZJyIXA3cBY0RkGTDGe22MMaYZhWraQFXPq2bV6EaOxRhjTB1YT0xjjPEpS+DGGONTlsCNMcanLIEbY4xPWQI3xhifsgRujDE+ZQncGGN8yhK4Mcb4lCVwY4zxKUvgxhjjU5bAjTHGpyyBG2OMT1kCN8YYn7IEbowxPmUJ3BhjfKrG8cD3BZFwMfM+/SeLZk8BlAMO+wU/GPVrgqHEeIdmjDHV2ucTuKoybdLJbFo1m3BJPgCz3/gDKxdM40dXfoiIxDlCY4yJrUFVKCKySkTmi8jXIpLdWEE1p/XLP2bz6jnfJ2+AcEk+W9bOZd3SD+IYmTHG7F1j1IEfp6rDVHVEI+yr2W1cOZOScsm7VElRHhtXzoxDRMYYUzv7fBVKWkYXEhJSKNgTYfFnF7N+yfFoNERWn68ZdGhPnr/9O2a/uoXMjgmcfnVvhp+UFe+QjTEGAFHV+r9ZZCWwHVDgUVWdHGObicBEgF69eg1fvXp1vY/XFIoLdzPl/3ry8b9vZVdOf6KR0huXEQKBIMHEACWFUQCS0oKcf0s/zr6pf/wCNsbsc0RkbqxajoZWoRylqocAJwNXiMioyhuo6mRVHaGqI7KyWl7pNTE5g6FHv8uerf3KJW+AINEo3ydvgKK8CM/+8Tv27Chp/kCNMaaSBiVwVd3g/dwC/A8Y2RhBNbddOd0IJqTWattQUoClX+xs4oiMMaZm9U7gIpImIhmlz4ETgQWNFVhz6j4wDanlJxENK22yrH24MSb+GlIC7wzMEJFvgDnAG6r6duOE1bwGH9WW7gNSCSXuvc13IAideifTb2hGM0VmjDHVq3cCV9UVqjrUewxW1dsbM7DmJCLc9cFIRp3dhVCiIAEYenx7fn7HAJLTg6RmhkhKDdB7cAZ/eXuEde4xxrQIDWqFUlcjRozQ7OyW3d9HVVGFQMAl6aKCCN99tYv0dgn0OiA9ztEZY/ZF1bVC2efbgVcmIpQvYCelBDnwyHbxC8gYY6phoxEaY4xPWQI3xhifsgS+D9m+uYj7L5rPWR2mc37XD3j6lqUUF0biHZYxpp5aXR346tXwxBOwfj2MGQNnngkJCfGOKv4K88Jcdegstm8sIhJ2N65fvm8Vi2bt4K7pvux/Zcw+r1Ul8HfegTPOgHAYiovhP/+Be+6BTz+F1Np1tGy1Pnx2A3u2FX+fvAGKC6Ms/nwnS7N3sv+INnGMzhhTH62mCiUchp/8BPLzXfIGyMuDRYtg0qS9v3fTynz+cflCrhwxk3svmMeqBbtrfVxVJRqJ1rxhnC3+fCeFeTHiVFjx9a7mD8gY02C+KoEX5m3j29lT2LJ2LgUcywtvXcjMmcl07QrnnFOWuMsrKIDnnoPrr4+9z9ULd3PtEbMpLogSCSsrvt7FjJc28ac3hvODYztUG0vxrgI+vvollj3/JdGSCF2P7sdxk86m/YFdG+lsG1ePQekkpgQoLqiYxANB6NJvH/96YoxP+aYjz86c75h632GUlOSzKbcr97zwJUUlaai6a1BKiiuFl8QYKLBdO5fEx46tuu6Wk7P58p1cKn8MPQam8djiY2LGoqq8eNQD5Hy5jkhR2C0USMxM5mdL/0BqJ9fVfsN3+Tx50xK++WAbaW1DnHFdH8Zd1uv7TkLNaWduMRf1/4T8XeHvlwUThK79Unn026PjEpMxrV0xxbzFW2xgA0dyJEMZWq/9+L4jz8cvXUlRwXZUo7wz5w8Vkje4knYgECGjzwI6H/0SqsLmGWdRvKEPA7v+h3/+ZTVPPDyetMSBRHO2cuhBhYyb2IOFn26vkrwBNizPpzA/QnJqEIBtG79lxfxXkUCQtsEjyZ23oSx5AyhEiiIsfGwmh/7+JHLXF3LViJkU7AoTjcLubSU88dulrFuSx2UPHtjUH1cVbTomcu+Mw3jgF/NZMc9VEQ0/sSPXThliyduYJrCUpYxiFPnkEyaMIJzMyfyH/xAk2CjH8EUJvGB3DlP+0I1oNMy2djC90xBSei2haEdnVrzwOzZ9cjbRaAL9z/gr/c+5i6iIS8qRBPouE9rO7c/Dr75PcUkaxeE0goRJoZBRyV+QmhJlz/ZwlWMmJgd4efcJBEMBPn/rj3z5/l+JRErcOCjRAHx2NNG5VRPxfmcN4+SpF/HYDYuZ9tBqwsUVP9+E5AD/WnMsbeM4omHerjChBCEppXH+iIwxVQ1hCN/yLUpZDkgllXu5l8u4rE778mUJPBIp4YPnLmHZV1OJRsNsbwtzRkJa0I1am5K1jgOvuIIDL78S1QASCKMBRQABCEVYewB89MzN5BV2RNUlrAgJ5BFgQWE/hoQXk5QaoCi/rG44MTnA8T/vxOzcV/h49b/ZsPo1uidGSM+j7Fcx8iNY3AvyysZHCaUk0OnQXgAs+GRbleQNkJgUYM3C3bTdS/16U0vLbNG/dmN8byUrWcGKCskbIJ98HuXROifw6rTo/+RZr/2O5V//l0i4EIClA1zhtzwJKBBBiMSsClGgeMAa9JtgpeVBcskiNflbDjwqk68/2kVCcojioiiHjGvLuguu4aP52RRG8qAXrOwBQ74Remz2DhIIIPuvRr8a7MUhhFITGHzxEQDs2FLxjqoQ5VC+4PBdn5N+c1t2XX42GeefigRdXDnrCvl82hYADp/QiY7dkxvwyRlj4qmYYgLVNPIrJkZri3pqsQlcVVkwYxLhkgJ27unKKzPupM0RvyFRcsptQ4WBp2KO8qqg4djVFUkU8cc91xN6N8JPkpMIjzuLrDuu41N9jClLZhJR745owF045g1OJPzxMfQZ9D6hpBCdj+lPzopkIoVheo4ZyKi/n0ly+zS2bihk6/rCCkFcwmPszzKStJjIbNgyfyF5r06ny38f5M3Ja5l8zWLvawM8dv1ifvW3QZzyq14N+xAbYPvmIpZ8vpO2nRMZOLKNDaFrTB3sz/60ox155FVYnkwy53N+ox2n5SbwaISS4ny2RdrxTP6vSD3jLcIFGSS2cwk8UpxIMLHmK1k0kkjuZ+NxZfGyJJRIESOYw8NcQXvdyriCN2k79d+s3bWcJy5/gajEaM4SCbBo+1GkrtpB1/0WcNKf/kja3ys2G/zXrcv43/2riJSrVu/Pdy55l7vyal4BeW9/wtpXvuTRq3IoqXQqj16zmOEndaRzn7ImfoV5YQKhAIlJjdt8P1wS5e0n1vHJCxuJRpXk9CDzPthOQlIAjSrtuiZx5/uH0qlXSqMetzXLI48buZGneZoiijie43mIhxjAgHiHZpqBIDzP84xlLBEiFFJIOunsx35cy7WNdpwWm8ADwRDhHl34rN8e+ob+SjCpgA6bA6SvhNyOsCsJopEgRAPkb+5DbvbJJLXbRNZh0whI1NV3i7Lw3idIzGlPkBISKKGYJJIpojcrCaKsYD9W0J9sRnJm+L8c8fpsOHgYHPlF1aBSC9Bh8/juzfM59+ZMUtM7sWf5RtbP3UToiclMmj6ApdH9iBDE9ZESOrGZU3iDxBhfm6IFxUz/06docX+gYn9/jSqfvbyZM67ry4pvdnHfz+ezct5uBDjgqHb83/+GkdkhKeZnt+G7fD5/bQsJiQGOPKMz7bvE3g5gx5YiLh82k+0bi6qsKyly9wWKVuTzx9O+5OGvj6p2P6ai8YxnNrMpxH0Te5d3OYzDWMpSOtIxztGZ5nA0R7Oc5TzN06xhDcdxHBOYQAKNN7ZHgxK4iIwF/g4EgcdV9a5GicrzzdAQEtlDcolyxMeQVBRlYxdY2wuCQS8hBiOkdV1BYe/5rH7lGhY++AgdR7xJQvpuNnx4PpGCTEAJECFMIifwPu3Zyg7aU1Yidz9f4ixW0Ic1Tw9l6yd7aHvgLLqP/hehtN1lm417g+iiE+ixtB2LjxtBoCgfQdlER3bzA0ooq645jFmcxYuEcMVxBXaTwUeMog27OSg6n4L53xFlvyrnHg1HiISVrevzuf6o2d/3olRg4cwtnDf0Be7+6gAGZ1Ucx+SZ25Yx9a4VqEIwKDx2w2KufWIIx57XLeZn/M8rF8VM3hViicC6pXmsX5ZH9wFpe93WwNd8zRzmfJ+8ARSlkEIe4zFu5uY4RmeaUxe6cCM3Ntn+653ARSQIPAyMAdYBX4jINFX9tjECU1U2RdYTCCgHzYeUAhCFpQMhWqn1mwQjdBj2IW0HzWHt279kyeQHKkdLlBBR4P2EHzKh999geTvKV6k4Ud4+M5/2p1xH2o4urH71Cr574fcc+eAIkjtucJskFMOYyWy8uJCQ14U+j1RW0I8RfE5g5ExWRQaQOH9/flz8IomUsJQBfMwP2UUmg1jEWnrwMQN4jVP5ceS/BIlSuZN7QCP0f28Sz95UTKGOrRhrJIHo1kx++6+J/OFnf+bwTqcCMOWmJfz3ryu/3yzs3QF/4KIFDD2+Pd98sI1Ppm4iNTPE2F/2ZMjR7Zj1yuZa/T5CISFvZ9XmlqaqRSyKeQOrgAK+5Ms4RGRaq4aUwEcCy1V1BYCIvABMABolgYsI0ZIkQgkFdMwBFYgEoLia5tMiEErJo/epDxNK2cWmz37E1rmngFb6RwpE2V7Qg+QY/2CaUkTWsPcIdFtBarcVZO6XzYqpN7Lsmds46JqJbqMg7BrxDU//Np0L7+7CvMjBPMNPAXWl7zkAUcKhEh7lVxzEPF7nNEpIAITV9CaBku9L6q9xGmN4l/c40at6gSARTgy8T8bH77NaL6LqhQYQJbq5PQ8tvJSRWeP47KUtvHzfqtifTUkRfzzyXVZvTqEwzw0f+8nUjUy4svfefgUV9xEQ+v7AJnOujUEMinFJdjewhjEsDhGZ1qohCbw7sLbc63XAYQ0Lp8z6tQVs+OB8eox+ko+OjVKUDKEwUEO/IwmW0OPEKXT94VR2fHskc299HY1UrHPK3289ybkZUFSpqV40QGBw2fUnmFjMfj/5M9vmj6qwmQZh4cg83vhxHh//56cVqk28dxINB1lFH1bQj2iFj1m8ZO4UkswBLGIo8/jK++c+OGEh3YJb0MIwPVjHtwymShKPBqDvSvaUbGdb0Uae+9PKCiMNVtg0EmXIimls5EQKcaMOlhQqL96zivR2IfYUV1+yDgQhISnAVZMHk5DYasY+a1IHczDDGc4c5lCEq54ShGSS+SW/jHN0pjVpyH9kNY32Km0kMlFEskUkOycnJ8ZbYlOC5H51AiREKUpxRwu7QiyylzkIREACEErZQ9sDP6Pb6H9X3CAaIPXCSdBjHSQVuGWBCCQVIpdOgpTCKvtsf9AnVZaVJCufjd+J7OWKEiaRaMwus2UfXQkJbKYzHdjK+DYzGJf8If2P74NG3X6P5wN3jEC5k04sgoPmQ99VKFFSQ5nkrqsa9/enTICDmMcoPq6yLm9nmGCCVPlt9huWzvCxHTjxoh48MOsIRp3dMgfpaqne5E0u4AJSSCFAgOM4jlnMohOd4h2aaUUaUgJfB/Qs97oHsKHyRqo6GZgMrit9bXeekZnIfuf/pUrbbg24BB4Ie3Xhe2meHErJo/sJT7P+3YtK383AideS3HUN3H8dfHgczDoC2u6AU96A/ZdX2YcIMTsIAYSTw3sPoFaE5xMuoOScEGdfkknS0EEUfjGfgs/mosXFpFLIpTzCI1mnobvaQVIxjH0LznuBkCRxWNappIYy2G94G75+f2uM/Stn8iLt2Ukv1lRdG4VgkvCLO/dn5bzdpGSEGHdpT/oMseqShkgnnclM5lEeBVwJ3JjG1pAE/gUwQET6AuuBc6HxWqinpEBa96Ux12nAJR4FiEKkKJVgcn7MjjzRcFl1RWLbzfQe/6j3ogROetc9oMaqmcokAgPnZLB4bxslFkIgCoXeV4iKZwEISakBuvRN5ax/HEZqGxdr6ugjSOjXk+LFK6C4hANYzF25a3h6YpAl4xeSEEgiGggypN0orj1oCgAX3bU/vxk1h6L8spJ6kDDjeI2jmUWYIOvpETPMUGKA/gdncub1fev2IZgaWeI2TaneCVxVwyLya+AdXDPCKaq6sLECS0wEikOQULVDjQKqASJ7Msn+vzfI3G8ug6+4qsp24YI01r9zMQCBpDz2v/B3lfvzABAsdjdJo7GaZ0ah4/ok9nQsJhxSIgmQUCQkFQQ468kMvuBt3mEsJd+3/fYkF0C/lXDR4/Cbe13FebmdZnQOMH5ifwaObMOIk7MIBsuCkkCAHp88R+5v72bPC2+gkQhZE0bz11tvpqBdgNV7FpKV3JPOqX2+f8+A4W2499ORPH3LMpZMX0e7ki2crG8y2LunHEhK5NPwKIhR/RQuirLfIZkxTt4Y05K16NEIb5l+DtnFUyuUrFWheHdblj99B5tmnEm0JJmRdx1HmwEVm2dFo0G2zD6Vr29/iaR2Gxnwsz/Qs3g9evTnkFQIoQgkRGizOZHz/9GB/E4JPHvpalfPHgAUJAopeQGu/E0PkguEGeN3sqlnMb2XJHPUm20IhQVR4buEHrzZ4yCKAwls67WbkjZFMGQhHPyNq7tevh/ccz2s7QmBKG1GL+WJqVeR1qZpJuuMFhSSe8Nd7HryJbSwmOTDhtJp0m3saNeHK4fPIn9XmEiJ+70npwU5+6a+nHdL1bboxpiWobrRCFt0Age44p0TWFY4g0Ciu5tftKMDOV+MY8f8H5LZeQn9j55CakYuSpBO89uTlLgHAsLw99PZUrAfn+/fjoKitqTP68dxIzfQfl0v5nbdAQeHGbc7lf7bkkg56WjSxx/HqvnTee3VG1gVWkVKcQId2vdndeZGes8oIJEkDup4HP0SBzMt4xNmd5hFnyWp9Oo8hp9dNYm8nVFmbZzGjuTlbCz4js0Fq+idMZhRnc9m2tp/kJ3zFqFwOif0/Cm/OPAvJAebfhYcVQVVJFD2zWBnbjEv37eSz1/LoU1WAj+6ti+Hn2Y31oxpyXybwEvlFe8iMZBMUEIUlwRIDLpuKsGEEKpa7WBL0agSCWu9m8CpKiVaTIIk2oBOxpi4aBEJXERygNXNdsCKOgK5cTp2Y7D448/v5+D3+MH/51Df+Huralblhc2awDlNKCsAABrCSURBVONJRLJjXcH8wuKPP7+fg9/jB/+fQ2PHb13rjDHGpyyBG2OMT+1LCXxyvANoIIs//vx+Dn6PH/x/Do0a/z5TB26MMa3NvlQCNz4mIqtEpEBEdovIDhGZKSKXikjAW/+UiBSLyB5vm7ki8sNy708UkftEZJ23zUoReaDSMc73Bl7bIyIbReQtETm60jY/FxEVkbMrLT/WW/5wpeUzROTnjf6BGIMlcOMvp6pqBtAbuAu4EXii3Pq7VTUdaANMAl72Jh4BuBkYgRvHPgM4Dviq9I0ich3wN+AOoDPQC/gnboz78i4Etnk/K8sDLhCRPvU+Q2PqoNUncBEZKyJLRGS5iNwU73jqSkR6isiHIrJIRBaKyNXxjqk+RCQoIl+JyOsN3Zeq7lTVacA5wIUiMqTS+ijwHNAel4wBDgX+p6ob1Fmlqv/yYmsD/Am4QlVfVtU8VS1R1ddU9TfeNm1F5E3gWKAAOElEOlPRDuAp4NaGnmNjE5Frvb+fBSLyvIgk1/yu+BKRKSKyRUQWlFvWXkTeE5Fl3s928Yxxb6qJ/x4RWSwi80TkfyLStiHHaNUJvNy0bycDBwLniciB8Y2qzsLA9ap6AHA4cIUPzwHgamBRY+5QVefghjU+pvxy7/d+AbASKJ0zbjZwnYhcLiIHScVutUcAycD/9nK4vwPFuFE4+wFLgJ/E2O524EwRGVj3M2oaItIduAoYoapDcIPPnRvfqGrlKWBspWU3AdNVdQAw3XvdUj1F1fjfA4ao6g+ApdCwCVJbdQKn3LRvqloMlE775huqulFVv/Se78Ylwe7xjapuRKQHMA54vAl2vwFX0ga4QUR24Koy/gb8QVVLx1+8E/grLulmA+tFpLQapAOQq6oxpyYSkUxgFDAYeM77W3qGGNUoqroJeARXom9JQkCKiISAVGKM3d/SqOonuOqq8iYAT3vPnwZOb9ag6iBW/Kr6brm/s9lQzRjPtdTaE3isad98lfzK8+pWDwY+j28kdfY34LcQY6LIhutO2T/JvaraFkjB1XffIyInA6hqRFUfVtWjgLa4kvIUETkA2Ap09JJbLP1w1Sb9gYtF5HFcaf0gEYk1yeVfcVUsQxvnFBtGVdcD9wJrgI3ATlV9N75R1VtnVd0IrnADvp7i6CLgrYbsoLUn8FpN++YHIpIOvARco6q74h1PbYnIeGCLqs5tgn0fikvgM8ov9+q4FwCf4Ur+VFpfoKoPA9txVWuzgEKqL82FgEG4v50s4DxcKR5cVU3l/W/FXbT+XPezanxePfEEoC/QDUgTkZ/GN6p9m4j8Hlc9+mxD9tPaE3itpn1r6UQkAZe8n1XVl+MdTx0dBZwmIqtwVVjHi8gzDdmhiGR6F4YXgGdUdX6MbQYBRwMLvdfXeE39UkQk5FWfZABfqepO4P+Ah0XkdBFJFZEEETlZRO4GSidznQgMw808NRu4EvhJNSX3+4EjgQMacq6N5ARgparmqGoJ8DIuNj/aLCJdAbyfW+IcT515f3vjgZ9oAzvitPYE/v20byKSiLtxMy3OMdWJd7PtCWCRqt4f73jqSlVvVtUeqtoH9/l/oKr1Lf29JiK7cdViv8clyV+UW/9brw13HvAu8CR4k1K6KpD7gE240eCuAM5U1RVenPcD1wG34BL2WuDXwCu4m5xhYLZXx30wrgniE7gbgpVvVOF9S7qbsvr5eFoDHO5dmAQYTSPfUG5G0yi793Ah8GocY6kzERmLa/56mqrmN3h/rb0npoicgvs6Wzrt2+1xDqlOvI4knwLzKatD/p2qvhm/qOpHRI4FblDV8fGOpa68uu7HgURgBfALVd0e36hqT0T+iGt2GcZdfC5R1aL4RrV3IvI8rtlmR1xroltxF9SpuHb6a4CzVLXyjc4WoZr4bwaScPddwBUKLq33MVp7AjfGmNaqtVehGGNMq2UJ3BhjfMoSuDHG+FR1HReaRMeOHbVPnz7NeUhjjPG9uXPn5saaE7NZE3ifPn2o76z0xrQmK1fC738P06dD+/Zw3XVwySUgsbqemX2eiMScDL5ZE7gxBtavh+HDYedOiEZhyxa45hpYsgTuvTfe0Rk/sTpwY5rZ/fdDXp5L3qXy8+Hhh2Hr1urfZ0xllsCNaWaffgrFxVWXJyXBwoXNH4/xL0vgxjSzAQMgEOM/r6gIevVq/niMf1kCN6aZ3XADJFeaDycpCUaNAmukZerCErgxzezgg+G//4UePVwiT0qC00+HF1+Md2TGb6wVijFxcMopsGYNbN4M6enuYUxd1VgCr2ZizttEZL2IfO09TmnaMI1pfUSgSxdL3qb+alOF8hQxxjsGHlDVYd7Dd0ObGmOM39WYwKuZWNQYY0ycNeQm5q9FZJ5XxdKuuo1EZKKIZItIdk5OTnWbGWOMqaP6JvBJuBm6h+Fmub6vug1VdbKqjlDVEVlZVcZiMcYYU0/1SuCqullVI6oaBR4DRjZuWMYYY2pSrwReOiu050fAguq2NcYY0zRqbAdefmJOEVmHm5jzWG+SVwVWAb9qwhiNMcbEUGMCV9XzYix+ogliMcYYUwfWld4YY3zKErgxxviUJXBjjPEpS+DGGONTlsCNMcanLIEbY4xPWQI3xhifsgRujDE+ZQncGGN8yhK4Mcb4lCVwY4zxKUvgxhjjU5bAjTHGpyyBG2OMT1kCN8YYn7IEbowxPmUJ3BhjfKrGBC4iU0Rki4gsKLesvYi8JyLLvJ/tmjZMY4wxldWmBP4UMLbSspuA6ao6AJjuvTbGGNOMakzgqvoJsK3S4gnA097zp4HTGzkuY4wxNahvHXhnVd0I4P3s1HghGWOMqY0mv4kpIhNFJFtEsnNycpr6cMYYs8+obwLfLCJdAbyfW6rbUFUnq+oIVR2RlZVVz8MZY4yprL4JfBpwoff8QuDVxgnHGGNMbdWmGeHzwCxgoIisE5GLgbuAMSKyDBjjvTbGGNOMQjVtoKrnVbNqdCPHYowxpg6sJ6YxxviUJXBjjPEpS+DGGONTlsCNMcanLIEbY4xPWQI3xhifsgRujDE+ZQncGGN8yhK4Mcb4lCVwY4zxKUvgxhjjU5bAjTHGpyyBG2OMT1kCN8YYn7IEbowxPlXjeOD7ClVYssT9HDQIROIdkTHG7J2VwIG5c6FfPxg+HA49FPr2hezseEdljDF7t8+XwHftgtGjYefOsmV5eW7ZmjXQpk38YjPGmL1pUAlcRFaJyHwR+VpEfFlmffFFCIerLo9EYOrU5o/HGGNqqzFK4Mepam4j7CcuNm2CgoKqy/Py3LpoFFavhsxM6NCh+eMzxpjq7PN14EcdBampsddlZ0OPHjBkCHTvDiefDNu2NW98xhhTnYYmcAXeFZG5IjIx1gYiMlFEskUkOycnp4GHa3yjRsHIkbHXTZsGGzdCfj4UFcEHH8C4cc0bnzHGVKehCfwoVT0EOBm4QkRGVd5AVSer6ghVHZGVldXAwzU+EbjkEkhKqnnb4mKYNw++/bbp4zLGmJo0KIGr6gbv5xbgf0A1ZdmWrbgYEhJqt21CAqxb17TxGGNMbdQ7gYtImohklD4HTgQWNFZgzWnMGCgpqd22hYUwbFjTxmOMMbXRkBJ4Z2CGiHwDzAHeUNW3Gyes5tWtG/zxj+5mZsD7RNLSXLVKqFw7nbQ0uOwy6NQpPnEaY0x59W5GqKorgKGNGEtc3XgjHH88PPmka0J49tkwdCjcfju8/jq0bw/XXQcXXBDvSI0xxhFVbbaDjRgxQrOtj7oxxtSJiMxV1RGVl+/z7cCNMcavLIEbY4xP7fODWe1r9uyBGTMgORmOPrriTVpjjL/Yv+8+5NlnYeLEsqSdmAhvvFF9T1RjTMvWqqpQwmG49VbXYiQYdInp88/jHVXLsHQp/PKXbliAXbvcIzcXTjop9mBexpiWr1Ul8Msug3vvhe3b3SiCX3zhxvWuTdf3oiJYscI1IWyNnnyy+mFz33qr+eMxxjScLxN4NOp+7toFn33mEm9uLjzzjCthlldYCHfdVf2+VOHOO6FjR/jBDyArC66+2iW2muzeDc89B48/7iZ/aMm2bYvd2zQahR07mj8eY0zD+aoO/F//gt//3o1Fkp7uSs2pqW4sk4ED3TglhYUV3xOJ7H16tCeegL/8pWLif/xx1+vyjjuqf98HH8Bpp7nBsKJR97jpJleFU9727TBnjhtLfPjw+M21OX68u9js2VNxeSTivqUYY3xIVZvtMXz4cK2vZ55RTU1VdWXmqo+EBFWR2OsCAdUTT1TdssXtKxxWjUbd8379Yr8nPd1tF0t+vmpGRtX3pKaqzpxZtt1f/6qanKzapo3b34ABqitX1vsjaJBwWHXMGNW0tLJ409JUb7opPvEYsy944w3VY45xeeaii1RXrarffoBsjZFTfZPA+/SpPnlXTtbVrRMpW5+YqDpxYvUXhVBIdc8ed+xt21Qvv1w1K0u1c2fVH/0odgIXcftUVX3vvYrJsjS2Aw4ou3g0t5IS1WefVR0/XvXss12Mxpim8fDDFfNLMKjatm39knh1CbzFV6Hk5rpqjtWra7d9af14LKUfJbhqlyefdFUllevNwQ1wlZrqqmkOPxxWrXLvATc2Sqw6ctWyFh0PPVT1hmg06urKFyyAgw6q3fk0plAIzj/fPYwxTaew0FWpls8tkYirwrz9dpg8uXGO06IT+KJFcOSRLok2xZAtJSUu4SYnVzxGaipccw0ccwzMnFn12NUNPZuWBuec456vWhV7GxH47rv4JHBjTPP47rvYy8Nh+PDDxjtOi26FcumlsHNn07ZTFnFzXR5yiCt1H3ssTJnibkZ+9ln1F45g0N00Le0Uk5bmpls7+WT3nuq+MezZA+ee6463eLFblp8Pt90G/fq5x223WdtsY/ysU6eyb+yV9ejReMdpsaMRRiKup2BZlYgCTdeEIxRyLVtmz3YXjo8+2vv2GRmulcrGja454YQJbjhacFUzl11W/S8Q3IWjQwdXUh89Gr75pqwFTXKyG8p25syy8cmbi6prnjlpErz5ppvM+Zpr4LDDmjeO1qCgAN55x1WljR4NXbrEOyLTnCZMcL//oqKyZamp8PLLrgNdXVQ3GmGLvYkZibiWJd1Yq8fygY7lLf0hH2gWG10LCnZrFps1hbxKNxOjtbrZWZ/WLOVvVvbooVpcXBZvbq7qfffFvrlZ3SMtTfW669wN01itYN55p2z/S5ao/u1vqpMnu2M1pvfeU+3Zs+y8g0HVpKSyc01NVX3qqcY9Zms3Y4ZrfZSZ6X6Xycmqd98d76hMc9q92zV4SEpyfwOZmaqPPFK/fVHNTcwWWwIHOKbfOpJXfkuIKBvowgKGICiH8CVt2UmUAEEidEhcxy+63MFubc+j22/i3T1nVtpT+XNseCk+ORkWL4mwNvAuz749n89eH8Sid0YTLkyr035EXMehLVtir/vTn+CWW9xkEw884OrPVF2p/J573AQTle3Y4dq1T53qvlVccgnccIP7NhPL22/DqafG7qVZXkYG5OTUbvLnfV1REXTu7Kr/yktNdf0H7NvMviU31/3v9O9f/f9hTZpkPHARGSsiS0RkuYjc1JB9xdIhdwkhomwmi3kMJUqIA1hMW3YSJEoCYQIo24q7c/+ah5i5dTy3dLiKi9veXTlS95AoobRtpAa2UjGpl98yQibbSSa/2m0yMsPc+d1RnHNhLpMvv4pv3/sh4eIkEimkDdsR9tIUphzV2MkbXJJu2xZuvhnuu8/dOC291kajcP318KMfVaymycuDwYNdsl+7FlaudMn81FPLtikoqHgT9uqra07e4C4o8+fX6rT2ee+/H7s1VGGhu79i9i0dO8IBB9Q/ee9NQyY1DgIPAycDBwLniciBjRWYqlK0uxgFFjIEEIQoXdlAsFKCdGXqAIvyh/PI+tu5vP2fSaAoxk6DaF4mAQLEKokLUYbxNYeSzTHMYCRzSMBlyHR2M4T5HM4sOhfMZvo957DpszOIliQTyW8D0RDFJLGTNoQIE2IvFeC1EI3Cb37jStrVdeufNg2uvNI937kTBg2CDRsqJo+CAvj0U9cL89BDXUk6LQ3OOsv1El2+vHbxlJS4QcJMzWI1SwX3e6ncE9aYhmhICXwksFxVV6hqMfACMKFxwoLiYqGAFKIIaeyhN6vIYguBakrFAFFCbAt34tYVzzCcbNKo+t+iCBINEKt0HSBKMkUkECFIlHZs5zBm056tHM4surGetuyk257d9H5rCMlVrhECBCghkTAJMY9RWyKuxLa3MVmiUTe8QGkrlg0bYm9XUODm8szOdvsrKXE3Ug44ANq1qzmWYBCGDHEtZEzNjj8+dlPT0gunMY2lIQm8O7C23Ot13rIKRGSiiGSLSHZOTk6td75sGSyjP4IynC/Zn6UcxHw0Rsm5YpoMECaJNuzmcGaTTMX2eILShU0EqJwZoyRRSCa7ym0LaeQzjK8IEf3+wwqoECTC/izZyxnUr65dxNWx17auORBwA1U9//zeOzFVvhBEo7B5s6szDwZjvyc93SWdIUPglVdqF49xrYvuuw9SUso+27Q010T1tNPiGpppZRrSkSdWhqpS5FTVycBkcDcxa7vznj0hnTwECHnJNghEvQcIAZQIAQIx6pwFCBKhDytZTGnNjhIiTF9WkUCYxQwiQBRFSKaQ4cytclICJFC1kjgAdGBbDWch1Lb5Y1KSq6I45hhXFXLPPTW+BXDJvmvX+jc3LG2uGQqVNXfq3t31FEtMdDfjrNNR3V1+ORx1FDz1lKveOuMMOOWU5m8Walq3hiTwdUDPcq97ANV8ia+f7myokvoCQBRhDT1JJ48dtKEXa0iMmWSVtlRsCnAYnxNA6cVaurGBnbQhkWLS2FPnryNhQjRG+/TUVHdzq3wvzrsr34et5n333utKeT/9KTz4YMU2p7WVnAz/+x8ceKArPSYk1H0fpqqhQ90NZWOaSkPKA18AA0Skr4gkAucC0xonLMjMdNUd1VnG/mQzghyyCKAxt4wi7CH9+1ft2UZquSqVEBE6sI0M9tSYgjVYqVIzqRCd8DIugceOM0CEQIwLy/frvZYm995blrwB+vRxddqlX8FFXLI+7zzX27NbNzjiCPjvf+EXv3Dv+b//c1Ud6emxjlTDuam7udmliyVvY/yk3iVwVQ2LyK+Bd3C1G1NUdWFjBSYC22lDFlsr3LhUYBeZRLyWJDtpy/uM4WC+pCO5FVqoRBFW0tdLpFEO5Nsq5WUFSkighCApFFa5omlCEXLC+5CbBd8MhYQSKE6EE94ndeI/OWzUF2Tf8g6Rgoyy2FFClJBMAbtpG/P8/vAH+PWvXYk3Vh30jTe6r9zPP+9uiJ111t7nrkxPd+OOv/8+PPYYvPqqqx6JRl396+DBrppk5syq723Txo1Vbozxlxbdkeebj7dz1bHzSKKIINHvy7qLGchaegIBUsmjmBAREhjCQrqyEbztNtGZLXQmg110ZgvzEvrTsaSAPqwmRAl5pLGa3uQm9eSGa/L5cuo0IqsyQL2MGgoTPnYGwcsfRBKLYUsn2NSdko5bKYqmkNplFSW72pO86Ho2TTqV1B2bSKaQfFLZkNSfnEBnMjJcV/uCAndRCgRc88A772zsT7eiBQvcxBS5uXD66e4RDLr245MmueeBgKt7nz7dzUZkjGmZquvI06ITOMD67/L58dBl7M6DIhJITdhOKBKBaCKdWcemxP0oTsikSxehx/COzFuQR2biXE4Y9Tkd+57EP/8+hJ27Aoz7cTJ3/DWBxYtdPfHBB7sqiu3b3c3DUAiiGmX6N2/zzao5tG/XhqP7nMOrU7sx88utDBoY4pcXJ9AmawfLvunCU08GSEpyHWFKm9dFIkpJYYSNW4IsXCj07evqlWfMcK04UlNdXfXAgU3w4dbBqlVurJcOHdyYDE3RwcAY03h8m8CNMWZf1yISuIjkALWcmqHRdQRy43TsxmDxx5/fz8Hv8YP/z6G+8fdW1azKC5s1gceTiGTHuoL5hcUff34/B7/HD/4/h8aO37oVGGOMT1kCN8YYn9qXEngjTSMaNxZ//Pn9HPweP/j/HBo1/n2mDtwYY1qbfakEbowxrUqrT+BNPWtQUxORniLyoYgsEpGFInJ1vGOqDxEJishXIvJ6vGOpDxFpKyIvishi73dxRLxjqgsRudb7+1kgIs+LSHK8Y6qJiEwRkS0isqDcsvYi8p6ILPN+1mJE+/ioJv57vL+heSLyPxGJPdZGLbXqBN7UswY1kzBwvaoeABwOXOHDcwC4GlgU7yAa4O/A26o6CBiKj85FRLoDVwEjVHUIbuyic+MbVa08BYyttOwmYLqqDgCme69bqqeoGv97wBBV/QGwFLi5IQdo1QmcJp41qDmo6kZV/dJ7vhuXOKpMnNGSiUgPYBzweLxjqQ8RyQRGAU8AqGqxqu6Ib1R1FgJSRCQEpNLIQz83BVX9BKoMuj8BeNp7/jRwerMGVQex4lfVd1W1dIjS2bhhuOuttSfwWs0a5Bci0gc4GPg8vpHU2d+A30ItZ3tuefoBOcCTXjXQ4yKSFu+gaktV1wP3AmuAjcBOVX03vlHVW2dV3QiucAN0inM8DXER8FZDdtDaE3itZg3yAxFJB14CrlHVXTVt31KIyHhgi6rOjXcsDRACDgEmqerBQB4t+6t7BV498QSgL9ANSBORn8Y3qn2biPweVz36bEP209oTeJPPGtQcRCQBl7yfVdWX4x1PHR0FnCYiq3BVWMeLyDPxDanO1gHrVLX0m8+LuITuFycAK1U1R1VLgJeBI+McU31tFpGuAN7PLXGOp85E5EJgPPATbWA77taewJt01qDmICKCq3tdpKr3xzueulLVm1W1h6r2wX3+H6iqr0p/qroJWCsipQMBjwa+jWNIdbUGOFxEUr2/p9H46CZsJdOAC73nFwKvxjGWOhORscCNwGmqmt/Q/bXqBO7dLCidNWgRMLUxZw1qJkcBP8OVXL/2HqfEO6h90JXAsyIyDxgG3BHneGrN++bwIvAlMB/3f9/iezSKyPPALGCgiKwTkYuBu4AxIrIMGOO9bpGqif8fQAbwnve//EiDjmE9MY0xxp9adQncGGNaM0vgxhjjU5bAjTHGpyyBG2OMT1kCN8YYn7IEbowxPmUJ3BhjfMoSuDHG+NT/A7hKuolfbgbEAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ - "# Your code here:" + "# Your code here:\n", + "fig, axs = plt.subplots(2)\n", + "fig.suptitle('Frozen vs Delicassen')\n", + "axs[0].set_title('K-Means]')\n", + "axs[0].scatter(final['Frozen'],final['Delicassen'],c=final['labels'],cmap='brg')\n", + "axs[1].set_title('DBSCAN')\n", + "axs[1].scatter(final['Frozen'],final['Delicassen'],c=final['labels_DBSCAN'],cmap='brg')" ] }, { @@ -282,11 +1249,369 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 60, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ChannelRegionFreshMilkGroceryFrozenDetergents_PaperDelicassenlabels_DBSCAN
labels
01.9494952.737374-0.3620790.3448440.508236-0.3683310.492080-0.005204-0.565657
11.0909092.7818181.758302-0.163364-0.2793470.881870-0.4363240.336702-0.818182
22.0000002.8000001.0767645.1091175.638317-0.0898995.6888370.420295-1.000000
31.0705881.317647-0.151931-0.370756-0.4195410.001695-0.420507-0.1894491.129412
41.0000003.0000001.9668175.1755031.2872176.900600-0.55486216.478447-1.000000
52.0000002.333333-0.4290521.5773871.965388-0.2458172.1692050.423837-1.000000
61.0301203.000000-0.272882-0.410086-0.492844-0.183743-0.448824-0.203555-0.253012
71.0000002.5000000.7927840.561685-0.0113019.252557-0.4640470.933164-1.000000
\n", + "
" + ], + "text/plain": [ + " Channel Region Fresh Milk Grocery Frozen \\\n", + "labels \n", + "0 1.949495 2.737374 -0.362079 0.344844 0.508236 -0.368331 \n", + "1 1.090909 2.781818 1.758302 -0.163364 -0.279347 0.881870 \n", + "2 2.000000 2.800000 1.076764 5.109117 5.638317 -0.089899 \n", + "3 1.070588 1.317647 -0.151931 -0.370756 -0.419541 0.001695 \n", + "4 1.000000 3.000000 1.966817 5.175503 1.287217 6.900600 \n", + "5 2.000000 2.333333 -0.429052 1.577387 1.965388 -0.245817 \n", + "6 1.030120 3.000000 -0.272882 -0.410086 -0.492844 -0.183743 \n", + "7 1.000000 2.500000 0.792784 0.561685 -0.011301 9.252557 \n", + "\n", + " Detergents_Paper Delicassen labels_DBSCAN \n", + "labels \n", + "0 0.492080 -0.005204 -0.565657 \n", + "1 -0.436324 0.336702 -0.818182 \n", + "2 5.688837 0.420295 -1.000000 \n", + "3 -0.420507 -0.189449 1.129412 \n", + "4 -0.554862 16.478447 -1.000000 \n", + "5 2.169205 0.423837 -1.000000 \n", + "6 -0.448824 -0.203555 -0.253012 \n", + "7 -0.464047 0.933164 -1.000000 " + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Your code here:\n", + "final.groupby(['labels']).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ChannelRegionFreshMilkGroceryFrozenDetergents_PaperDelicassenlabels
labels_DBSCAN
-11.4887222.4736840.1544730.3144270.3408480.1383850.2883170.1758042.334586
01.0000003.000000-0.290084-0.531163-0.581463-0.213106-0.500693-0.2810376.000000
11.0000003.0000002.330913-0.593472-0.609298-0.370277-0.517654-0.2627251.000000
22.0000003.000000-0.7633290.6007250.412071-0.5077860.608619-0.3379850.000000
32.0000003.000000-0.7070520.0406390.253227-0.4285140.3767150.1070530.000000
41.0000001.000000-0.171174-0.548618-0.609922-0.321448-0.534924-0.3038183.000000
51.0000001.000000-0.409825-0.522690-0.5876950.764752-0.523890-0.3234783.000000
61.0000002.000000-0.356662-0.577682-0.481258-0.102396-0.557298-0.2072743.000000
\n", + "
" + ], + "text/plain": [ + " Channel Region Fresh Milk Grocery Frozen \\\n", + "labels_DBSCAN \n", + "-1 1.488722 2.473684 0.154473 0.314427 0.340848 0.138385 \n", + " 0 1.000000 3.000000 -0.290084 -0.531163 -0.581463 -0.213106 \n", + " 1 1.000000 3.000000 2.330913 -0.593472 -0.609298 -0.370277 \n", + " 2 2.000000 3.000000 -0.763329 0.600725 0.412071 -0.507786 \n", + " 3 2.000000 3.000000 -0.707052 0.040639 0.253227 -0.428514 \n", + " 4 1.000000 1.000000 -0.171174 -0.548618 -0.609922 -0.321448 \n", + " 5 1.000000 1.000000 -0.409825 -0.522690 -0.587695 0.764752 \n", + " 6 1.000000 2.000000 -0.356662 -0.577682 -0.481258 -0.102396 \n", + "\n", + " Detergents_Paper Delicassen labels \n", + "labels_DBSCAN \n", + "-1 0.288317 0.175804 2.334586 \n", + " 0 -0.500693 -0.281037 6.000000 \n", + " 1 -0.517654 -0.262725 1.000000 \n", + " 2 0.608619 -0.337985 0.000000 \n", + " 3 0.376715 0.107053 0.000000 \n", + " 4 -0.534924 -0.303818 3.000000 \n", + " 5 -0.523890 -0.323478 3.000000 \n", + " 6 -0.557298 -0.207274 3.000000 " + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "final.groupby(['labels_DBSCAN']).mean()" ] }, { @@ -298,11 +1623,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ - "# Your observations here" + "# Your observations here\n", + " #Seems that in this case, K-means clusterizes better" ] }, { @@ -318,11 +1644,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 89, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ - "# Your code here" + "Nc = range(1, 20)\n", + "kmeans = [KMeans(n_clusters=i) for i in Nc]\n", + "kmeans\n", + "score = [kmeans[i].fit(final).score(final) for i in range(len(kmeans))]\n", + "score\n", + "plt.plot(Nc,score)\n", + "plt.xlabel('Number of Clusters')\n", + "plt.ylabel('Score')\n", + "plt.title('Elbow Curve')\n", + "plt.show()" ] }, { @@ -331,7 +1679,8 @@ "metadata": {}, "outputs": [], "source": [ - "# Your comment here" + "# Your comment here\n", + " #With 5 clusters will optimize the number of clusters." ] }, { @@ -345,11 +1694,42 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 117, "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Your code here\n", + "def draw_DBSCAN(eps=0.1, min_samples=0.1, title=''):\n", + " clustering = DBSCAN(\n", + " eps = eps,\n", + " min_samples=min_samples\n", + " )\n", + " clustering.fit(final);\n", + " fig = plt.figure()\n", + " ax.scatter(final['Grocery'], final['Fresh'], c=final['labels'],cmap='brg')\n", + " plt.title(title, fontsize=18)" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "draw_DBSCAN(0.2, 2, 'eps 0.2, min_samples 0.2')" ] }, { @@ -364,9 +1744,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda env:data_env]", "language": "python", - "name": "python3" + "name": "conda-env-data_env-py" }, "language_info": { "codemirror_mode": { @@ -378,9 +1758,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.7.5" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 }