Skip to content

Instantly share code, notes, and snippets.

@prateekiiest
Created July 28, 2020 03:23
Show Gist options
  • Save prateekiiest/601341c0d9ad3add8f5dceb9bda770a6 to your computer and use it in GitHub Desktop.
Save prateekiiest/601341c0d9ad3add8f5dceb9bda770a6 to your computer and use it in GitHub Desktop.
vaccine prediction on dummy data
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\"data_new.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>UUID</th>\n",
" <th>Gender</th>\n",
" <th>Age</th>\n",
" <th>Profession</th>\n",
" <th>Locality/Pin Code</th>\n",
" <th>Rate of infection in that zone</th>\n",
" <th>Pre-existing medical conditions</th>\n",
" <th>Travel history in the last 1 month</th>\n",
" <th>Coming in contact with someone who has been diagnosed with Covid 19</th>\n",
" <th>Do you have any kind of Covid 19 symptoms</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3445-8574-6625-7046</td>\n",
" <td>F</td>\n",
" <td>59</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>586102</td>\n",
" <td>0.9</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4850-7196-6694-3565</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>Public Policy</td>\n",
" <td>585275</td>\n",
" <td>0.9</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1735-1721-7830-2262</td>\n",
" <td>M</td>\n",
" <td>38</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>570020</td>\n",
" <td>0.8</td>\n",
" <td>Pulmonary</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5589-4350-6261-4583</td>\n",
" <td>F</td>\n",
" <td>29</td>\n",
" <td>Bank</td>\n",
" <td>563114</td>\n",
" <td>1.1</td>\n",
" <td>Diabetes</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>8748-8954-4871-2639</td>\n",
" <td>F</td>\n",
" <td>32</td>\n",
" <td>Work from Home</td>\n",
" <td>581319</td>\n",
" <td>1.0</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" UUID Gender Age Profession Locality/Pin Code \\\n",
"0 3445-8574-6625-7046 F 59 Blue Collar worker 586102 \n",
"1 4850-7196-6694-3565 M 1 Public Policy 585275 \n",
"2 1735-1721-7830-2262 M 38 Blue Collar worker 570020 \n",
"3 5589-4350-6261-4583 F 29 Bank 563114 \n",
"4 8748-8954-4871-2639 F 32 Work from Home 581319 \n",
"\n",
" Rate of infection in that zone Pre-existing medical conditions \\\n",
"0 0.9 None \n",
"1 0.9 None \n",
"2 0.8 Pulmonary \n",
"3 1.1 Diabetes \n",
"4 1.0 None \n",
"\n",
" Travel history in the last 1 month \\\n",
"0 N \n",
"1 N \n",
"2 Y \n",
"3 N \n",
"4 N \n",
"\n",
" Coming in contact with someone who has been diagnosed with Covid 19 \\\n",
"0 N \n",
"1 N \n",
"2 N \n",
"3 Y \n",
"4 Y \n",
"\n",
" Do you have any kind of Covid 19 symptoms \n",
"0 Y \n",
"1 Y \n",
"2 Y \n",
"3 Y \n",
"4 N "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.cluster import KMeans"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>UUID</th>\n",
" <th>Gender</th>\n",
" <th>Age</th>\n",
" <th>Profession</th>\n",
" <th>Locality/Pin Code</th>\n",
" <th>Rate of infection in that zone</th>\n",
" <th>Pre-existing medical conditions</th>\n",
" <th>Travel history in the last 1 month</th>\n",
" <th>Coming in contact with someone who has been diagnosed with Covid 19</th>\n",
" <th>Do you have any kind of Covid 19 symptoms</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1735-1721-7830-2262</td>\n",
" <td>M</td>\n",
" <td>38</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>570020</td>\n",
" <td>0.8</td>\n",
" <td>Pulmonary</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5589-4350-6261-4583</td>\n",
" <td>F</td>\n",
" <td>29</td>\n",
" <td>Bank</td>\n",
" <td>563114</td>\n",
" <td>1.1</td>\n",
" <td>Diabetes</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>8748-8954-4871-2639</td>\n",
" <td>F</td>\n",
" <td>32</td>\n",
" <td>Work from Home</td>\n",
" <td>581319</td>\n",
" <td>1.0</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>9059-2726-5895-7502</td>\n",
" <td>M</td>\n",
" <td>30</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>560051</td>\n",
" <td>0.8</td>\n",
" <td>Kidney Ailments</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7065-8302-9904-5184</td>\n",
" <td>F</td>\n",
" <td>69</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>574286</td>\n",
" <td>1.0</td>\n",
" <td>Heart</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>995</th>\n",
" <td>9981-8093-6006-7258</td>\n",
" <td>M</td>\n",
" <td>42</td>\n",
" <td>Bank</td>\n",
" <td>560009</td>\n",
" <td>1.0</td>\n",
" <td>Diabetes</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>996</th>\n",
" <td>5077-3958-1800-5552</td>\n",
" <td>F</td>\n",
" <td>26</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>591152</td>\n",
" <td>1.1</td>\n",
" <td>None</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>997</th>\n",
" <td>6521-4528-5718-6437</td>\n",
" <td>M</td>\n",
" <td>70</td>\n",
" <td>Public Policy</td>\n",
" <td>586101</td>\n",
" <td>0.8</td>\n",
" <td>Pulmonary</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>998</th>\n",
" <td>4937-5598-1107-1287</td>\n",
" <td>F</td>\n",
" <td>30</td>\n",
" <td>Health Care</td>\n",
" <td>577116</td>\n",
" <td>0.8</td>\n",
" <td>Heart</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>999</th>\n",
" <td>5305-3729-1958-3444</td>\n",
" <td>F</td>\n",
" <td>51</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>577232</td>\n",
" <td>1.1</td>\n",
" <td>None</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>998 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" UUID Gender Age Profession Locality/Pin Code \\\n",
"2 1735-1721-7830-2262 M 38 Blue Collar worker 570020 \n",
"3 5589-4350-6261-4583 F 29 Bank 563114 \n",
"4 8748-8954-4871-2639 F 32 Work from Home 581319 \n",
"5 9059-2726-5895-7502 M 30 Blue Collar worker 560051 \n",
"6 7065-8302-9904-5184 F 69 Blue Collar worker 574286 \n",
".. ... ... ... ... ... \n",
"995 9981-8093-6006-7258 M 42 Bank 560009 \n",
"996 5077-3958-1800-5552 F 26 Blue Collar worker 591152 \n",
"997 6521-4528-5718-6437 M 70 Public Policy 586101 \n",
"998 4937-5598-1107-1287 F 30 Health Care 577116 \n",
"999 5305-3729-1958-3444 F 51 Blue Collar worker 577232 \n",
"\n",
" Rate of infection in that zone Pre-existing medical conditions \\\n",
"2 0.8 Pulmonary \n",
"3 1.1 Diabetes \n",
"4 1.0 None \n",
"5 0.8 Kidney Ailments \n",
"6 1.0 Heart \n",
".. ... ... \n",
"995 1.0 Diabetes \n",
"996 1.1 None \n",
"997 0.8 Pulmonary \n",
"998 0.8 Heart \n",
"999 1.1 None \n",
"\n",
" Travel history in the last 1 month \\\n",
"2 Y \n",
"3 N \n",
"4 N \n",
"5 Y \n",
"6 N \n",
".. ... \n",
"995 N \n",
"996 Y \n",
"997 Y \n",
"998 N \n",
"999 Y \n",
"\n",
" Coming in contact with someone who has been diagnosed with Covid 19 \\\n",
"2 N \n",
"3 Y \n",
"4 Y \n",
"5 Y \n",
"6 Y \n",
".. ... \n",
"995 Y \n",
"996 N \n",
"997 Y \n",
"998 N \n",
"999 Y \n",
"\n",
" Do you have any kind of Covid 19 symptoms \n",
"2 Y \n",
"3 Y \n",
"4 N \n",
"5 Y \n",
"6 N \n",
".. ... \n",
"995 N \n",
"996 Y \n",
"997 N \n",
"998 Y \n",
"999 N \n",
"\n",
"[998 rows x 10 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"X = df.to_numpy()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "could not convert string to float: 'N'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-10-072b548222e0>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mkmeans\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mKMeans\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_clusters\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\cluster\\_kmeans.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[0;32m 857\u001b[0m \u001b[0morder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"C\"\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy_x\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 858\u001b[0m X = check_array(X, accept_sparse='csr', dtype=[np.float64, np.float32],\n\u001b[1;32m--> 859\u001b[1;33m order=order, copy=self.copy_x)\n\u001b[0m\u001b[0;32m 860\u001b[0m \u001b[1;31m# verify that the number of samples given is larger than k\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 861\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0m_num_samples\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mn_clusters\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36mcheck_array\u001b[1;34m(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)\u001b[0m\n\u001b[0;32m 529\u001b[0m \u001b[0marray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marray\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcasting\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"unsafe\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 530\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 531\u001b[1;33m \u001b[0marray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0morder\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0morder\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 532\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mComplexWarning\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 533\u001b[0m raise ValueError(\"Complex data not supported\\n\"\n",
"\u001b[1;32m~\\anaconda3\\lib\\site-packages\\numpy\\core\\_asarray.py\u001b[0m in \u001b[0;36masarray\u001b[1;34m(a, dtype, order)\u001b[0m\n\u001b[0;32m 83\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 84\u001b[0m \"\"\"\n\u001b[1;32m---> 85\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0morder\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0morder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 86\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: could not convert string to float: 'N'"
]
}
],
"source": [
"kmeans = KMeans(n_clusters=2, random_state=0).fit(X)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import OneHotEncoder"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"enc = OneHotEncoder(handle_unknown='ignore')\n",
"gend_enc = [['Male', 1], ['Other', 3], ['Female', 2]]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneHotEncoder(categories='auto', drop=None, dtype=<class 'numpy.float64'>,\n",
" handle_unknown='ignore', sparse=True)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"enc.fit(gend_enc)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting kmodes\n",
" Downloading kmodes-0.10.2-py2.py3-none-any.whl (18 kB)\n",
"Requirement already satisfied: numpy>=1.10.4 in c:\\users\\prate\\anaconda3\\lib\\site-packages (from kmodes) (1.18.1)\n",
"Requirement already satisfied: scipy>=0.13.3 in c:\\users\\prate\\anaconda3\\lib\\site-packages (from kmodes) (1.4.1)\n",
"Requirement already satisfied: joblib>=0.11 in c:\\users\\prate\\anaconda3\\lib\\site-packages (from kmodes) (0.14.1)\n",
"Requirement already satisfied: scikit-learn>=0.19.0 in c:\\users\\prate\\anaconda3\\lib\\site-packages (from kmodes) (0.22.1)\n",
"Installing collected packages: kmodes\n",
"Successfully installed kmodes-0.10.2\n"
]
}
],
"source": [
"!pip install kmodes"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"from kmodes.kmodes import KModes\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 1, iteration: 1/100, moves: 71, cost: 6444.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 2, iteration: 1/100, moves: 222, cost: 6429.0\n",
"Run 2, iteration: 2/100, moves: 22, cost: 6429.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 3, iteration: 1/100, moves: 209, cost: 6445.0\n",
"Run 3, iteration: 2/100, moves: 60, cost: 6445.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 4, iteration: 1/100, moves: 220, cost: 6416.0\n",
"Run 4, iteration: 2/100, moves: 117, cost: 6416.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 5, iteration: 1/100, moves: 181, cost: 6411.0\n",
"Run 5, iteration: 2/100, moves: 3, cost: 6411.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 6, iteration: 1/100, moves: 245, cost: 6539.0\n",
"Run 6, iteration: 2/100, moves: 61, cost: 6510.0\n",
"Run 6, iteration: 3/100, moves: 1, cost: 6510.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 7, iteration: 1/100, moves: 197, cost: 6553.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 8, iteration: 1/100, moves: 247, cost: 6587.0\n",
"Run 8, iteration: 2/100, moves: 5, cost: 6587.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 9, iteration: 1/100, moves: 204, cost: 6442.0\n",
"Run 9, iteration: 2/100, moves: 24, cost: 6442.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 10, iteration: 1/100, moves: 180, cost: 6428.0\n",
"Run 10, iteration: 2/100, moves: 0, cost: 6428.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 11, iteration: 1/100, moves: 241, cost: 6540.0\n",
"Run 11, iteration: 2/100, moves: 45, cost: 6540.0\n",
"Best run was number 5\n"
]
}
],
"source": [
"km = KModes(n_clusters=2, init='Huang', n_init=11, verbose=1)\n",
"# fit the clusters to the skills dataframe\n",
"clusters = km.fit_predict(df)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"kmodes = km.cluster_centroids_\n",
"shape = kmodes.shape\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([['1003-2909-7850-6803', 'M', '16', 'Bank', '586101', '0.9',\n",
" 'Cancer', 'Y', 'Y', 'Y'],\n",
" ['1025-4232-8458-4165', 'F', '18', 'Blue Collar worker', '583101',\n",
" '1.1', 'Kidney Ailments', 'N', 'N', 'N']], dtype='<U32')"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kmodes"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "'memoryview' object is not callable",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-34-51a1c04d5f98>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mkmodes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m: 'memoryview' object is not callable"
]
}
],
"source": [
"kmodes."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0,\n",
" 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0,\n",
" 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0,\n",
" 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n",
" 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1,\n",
" 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1,\n",
" 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1,\n",
" 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0,\n",
" 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,\n",
" 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1,\n",
" 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,\n",
" 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1,\n",
" 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0,\n",
" 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0,\n",
" 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1,\n",
" 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1,\n",
" 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,\n",
" 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0,\n",
" 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1,\n",
" 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1,\n",
" 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,\n",
" 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0,\n",
" 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n",
" 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1,\n",
" 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0,\n",
" 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1,\n",
" 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1,\n",
" 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,\n",
" 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1,\n",
" 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1,\n",
" 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0,\n",
" 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0,\n",
" 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1,\n",
" 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1,\n",
" 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0,\n",
" 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1,\n",
" 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,\n",
" 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1,\n",
" 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1,\n",
" 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0,\n",
" 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1,\n",
" 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1,\n",
" 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n",
" 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0,\n",
" 1, 0, 0, 0, 0, 0, 1, 0, 1, 1], dtype=uint16)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clusters"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns; sns.set() # for plot styling\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1000"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(clusters)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 1, iteration: 1/100, moves: 0, cost: 7298.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 1, iteration: 1/100, moves: 16, cost: 6468.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 1, iteration: 1/100, moves: 10, cost: 6219.0\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run 1, iteration: 1/100, moves: 7, cost: 6001.0\n"
]
}
],
"source": [
"cost = []\n",
"for num_clusters in list(range(1,5)):\n",
" kmode = KModes(n_clusters=num_clusters, init = \"Cao\", n_init = 1, verbose=1)\n",
" kmode.fit_predict(df)\n",
" cost.append(kmode.cost_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Elbow Method to find optimal cluster"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x21d89edf6c8>]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y = np.array([i for i in range(1,5,1)])\n",
"plt.plot(y,cost)\n"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"df_copy = df.copy()\n"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"df_new = df_copy.reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"clustersDf = pd.DataFrame(clusters)\n",
"clustersDf.columns = ['cluster_predicted']\n",
"combinedDf = pd.concat([df_new, clustersDf], axis = 1).reset_index()\n",
"combinedDf = combinedDf.drop(['index', 'level_0'], axis = 1)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"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>UUID</th>\n",
" <th>Gender</th>\n",
" <th>Age</th>\n",
" <th>Profession</th>\n",
" <th>Locality/Pin Code</th>\n",
" <th>Rate of infection in that zone</th>\n",
" <th>Pre-existing medical conditions</th>\n",
" <th>Travel history in the last 1 month</th>\n",
" <th>Coming in contact with someone who has been diagnosed with Covid 19</th>\n",
" <th>Do you have any kind of Covid 19 symptoms</th>\n",
" <th>cluster_predicted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3445-8574-6625-7046</td>\n",
" <td>F</td>\n",
" <td>59</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>586102</td>\n",
" <td>0.9</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4850-7196-6694-3565</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>Public Policy</td>\n",
" <td>585275</td>\n",
" <td>0.9</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1735-1721-7830-2262</td>\n",
" <td>M</td>\n",
" <td>38</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>570020</td>\n",
" <td>0.8</td>\n",
" <td>Pulmonary</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5589-4350-6261-4583</td>\n",
" <td>F</td>\n",
" <td>29</td>\n",
" <td>Bank</td>\n",
" <td>563114</td>\n",
" <td>1.1</td>\n",
" <td>Diabetes</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>8748-8954-4871-2639</td>\n",
" <td>F</td>\n",
" <td>32</td>\n",
" <td>Work from Home</td>\n",
" <td>581319</td>\n",
" <td>1.0</td>\n",
" <td>None</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>995</th>\n",
" <td>9981-8093-6006-7258</td>\n",
" <td>M</td>\n",
" <td>42</td>\n",
" <td>Bank</td>\n",
" <td>560009</td>\n",
" <td>1.0</td>\n",
" <td>Diabetes</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>996</th>\n",
" <td>5077-3958-1800-5552</td>\n",
" <td>F</td>\n",
" <td>26</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>591152</td>\n",
" <td>1.1</td>\n",
" <td>None</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>997</th>\n",
" <td>6521-4528-5718-6437</td>\n",
" <td>M</td>\n",
" <td>70</td>\n",
" <td>Public Policy</td>\n",
" <td>586101</td>\n",
" <td>0.8</td>\n",
" <td>Pulmonary</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>998</th>\n",
" <td>4937-5598-1107-1287</td>\n",
" <td>F</td>\n",
" <td>30</td>\n",
" <td>Health Care</td>\n",
" <td>577116</td>\n",
" <td>0.8</td>\n",
" <td>Heart</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>999</th>\n",
" <td>5305-3729-1958-3444</td>\n",
" <td>F</td>\n",
" <td>51</td>\n",
" <td>Blue Collar worker</td>\n",
" <td>577232</td>\n",
" <td>1.1</td>\n",
" <td>None</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1000 rows × 11 columns</p>\n",
"</div>"
],
"text/plain": [
" UUID Gender Age Profession Locality/Pin Code \\\n",
"0 3445-8574-6625-7046 F 59 Blue Collar worker 586102 \n",
"1 4850-7196-6694-3565 M 1 Public Policy 585275 \n",
"2 1735-1721-7830-2262 M 38 Blue Collar worker 570020 \n",
"3 5589-4350-6261-4583 F 29 Bank 563114 \n",
"4 8748-8954-4871-2639 F 32 Work from Home 581319 \n",
".. ... ... ... ... ... \n",
"995 9981-8093-6006-7258 M 42 Bank 560009 \n",
"996 5077-3958-1800-5552 F 26 Blue Collar worker 591152 \n",
"997 6521-4528-5718-6437 M 70 Public Policy 586101 \n",
"998 4937-5598-1107-1287 F 30 Health Care 577116 \n",
"999 5305-3729-1958-3444 F 51 Blue Collar worker 577232 \n",
"\n",
" Rate of infection in that zone Pre-existing medical conditions \\\n",
"0 0.9 None \n",
"1 0.9 None \n",
"2 0.8 Pulmonary \n",
"3 1.1 Diabetes \n",
"4 1.0 None \n",
".. ... ... \n",
"995 1.0 Diabetes \n",
"996 1.1 None \n",
"997 0.8 Pulmonary \n",
"998 0.8 Heart \n",
"999 1.1 None \n",
"\n",
" Travel history in the last 1 month \\\n",
"0 N \n",
"1 N \n",
"2 Y \n",
"3 N \n",
"4 N \n",
".. ... \n",
"995 N \n",
"996 Y \n",
"997 Y \n",
"998 N \n",
"999 Y \n",
"\n",
" Coming in contact with someone who has been diagnosed with Covid 19 \\\n",
"0 N \n",
"1 N \n",
"2 N \n",
"3 Y \n",
"4 Y \n",
".. ... \n",
"995 Y \n",
"996 N \n",
"997 Y \n",
"998 N \n",
"999 Y \n",
"\n",
" Do you have any kind of Covid 19 symptoms cluster_predicted \n",
"0 Y 1 \n",
"1 Y 0 \n",
"2 Y 0 \n",
"3 Y 0 \n",
"4 N 1 \n",
".. ... ... \n",
"995 N 0 \n",
"996 Y 1 \n",
"997 N 0 \n",
"998 Y 1 \n",
"999 N 1 \n",
"\n",
"[1000 rows x 11 columns]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"combinedDf"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"cluster_0 = combinedDf[combinedDf['cluster_predicted'] == 0]\n",
"cluster_1 = combinedDf[combinedDf['cluster_predicted'] == 1]"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 582 entries, 1 to 997\n",
"Data columns (total 11 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 UUID 582 non-null object \n",
" 1 Gender 582 non-null object \n",
" 2 Age 582 non-null int64 \n",
" 3 Profession 582 non-null object \n",
" 4 Locality/Pin Code 582 non-null int64 \n",
" 5 Rate of infection in that zone 582 non-null float64\n",
" 6 Pre-existing medical conditions 582 non-null object \n",
" 7 Travel history in the last 1 month 582 non-null object \n",
" 8 Coming in contact with someone who has been diagnosed with Covid 19 582 non-null object \n",
" 9 Do you have any kind of Covid 19 symptoms 582 non-null object \n",
" 10 cluster_predicted 582 non-null uint16 \n",
"dtypes: float64(1), int64(2), object(7), uint16(1)\n",
"memory usage: 51.2+ KB\n"
]
}
],
"source": [
"cluster_0.info()\n"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3cAAAE/CAYAAADlpzo+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXQUVfr/8U/2sARkCYvKz/mqoygiDqCYEYgoIqusI5sgYgRkUEHnGwGjKIpoxhEHcQFFOAooi6CAgKIZ+LIoAiqI2yCIIiCEPYFsna7fH0566E5Vpyv0khTv1zmeY6qfvvXUrXtv1UNvUYZhGAIAAAAAVGrRkU4AAAAAAHD2KO4AAAAAwAEo7gAAAADAASjuAAAAAMABKO4AAAAAwAEo7gAAAADAASjuAAAAAMABYiOdgF3Hjp2S281P8wEAAAA4t0RHR6lWrWqWj1e64s7tNijuAAAAAMAHb8sEAAAAAAeguAMAAAAAB6h0b8sEAAAAUHEUF7t07Fi2XK7CSKfiGNHRMapSpbqqV6+pqKiogJ9HcQcAAACg3I4dy1ZiYlVVq9bAViECc4ZhqLjYpZyc4zp2LFu1a9cL+Lm8LRMAAABAublchapWrQaFXZBERUUpNjZO551XR4WF+baeS3EHAAAA4KxQ2AVfVFS0JHu/EkBxBwAAAAAOQHEHAAAAIKS++GKLMjLSbT9v3LiHQpBN+WRkpOuLL7Zo/fq1mj9/rmXc9OkvaffuXQG1efr0afXp0y1YKfKFKgAAAAAqpu3bv4p0CqW0bp3q9/Gvv96mW265NUzZeKO4w1mrVTNesfEJnr9dhQU6doKvwgUAADhXud1u/fOfz2nLls+VkJCg9u3/W+x06XKzPvjgE0nSpEmP68Ybb9Yll1yqJ57I0OnTp1S/fgM9+uiTmjNntnJzc5WRka6nnsrUjBkv67PPNsow3Bo6dJjatLlRo0YNU1JSkvbv36fXXntT8fHxpXIZNWqYLrnkUm3b9pWqV6+uJ598Rvn5+Ro79iHFxMSoRYtr1bfvAD3zzJM6evSIatWqo3HjHlPdunW1ZMkizZ8/T8nJycrPz5MkrVixTLt379KoUaO1fPl7eueduZKi1K/fQFWrVk0//PCdMjIe1vTps/XFF1v05ptvyOVyqW3bG3X33cOVl5enJ554RAcO7Nfll18R1H6nuMNZi41P0NbMNM/fLdJfl0RxBwAAcK7KylqtI0cOa86chdq58wfdf/8ItWx5nWX8Bx8sVefO3dStWw8tWDBPu3f/qHvvvU/Ll7+np57K1MaN63X69Cm98cYc5ebmasSIoWrevKUk6dprr1evXn/xm0/VqtU0e/Y8zZ8/V6+//qruuGOI9u79Re+9t0I1atRURsbDSku7V40bX6G1a/+lV199UcOGjdT8+fP0xhtvqbCwSHfc0cerzUOHDmrOnDc1c+abioqK1qhRw/TKKzN1+eVX6MEH0+VyFWnhwrf1yiszFRsbq0ce+f1tnd98s0ONGl2kZ555XitXLtcXX2w5+w7/D4o7AAAAAEG1fftXSk29SVFRUbrsssZ6+unntHjxAsv4P/2phSZMGK+vv96mdu3aq1mzP3k9vnXrZm3YsE5fffWlJCkv77T27ftVktS4cdmvfnXs2EWSdPPNt2r06JG64w7p/PPPV40aNSVJX331hX79da8kyTDcql49Sd9887WaN2+hqlWrqWpVqUWLa73aLHm8WrXqkqQ33pjj8/gO7dmzW8OGDZEk5efn6aefduvrr7/S4MFDJUk33XSL3nhjRpn5B4riDgAAAEBQxcTEev08wi+/7DGNc7lckqTmzVtq1qx5WrdujV577WX9+ute/eUv/Txxbvfvb8Xs1KmrJOnIkcM677xakqTExMQy84mNLSl7DMXE/P6dkgkJZz7P0MyZbykmJkYul0s5OTn66qutpY7J3zHu379Pdesme+X85z+30fjxEyRJJ0+eUEJCgjZt2uiJiY6OlhS8n5Hg2zIBAAAABNVVV12t//u/NTIMQ7t2/agPPljmeSwmJlaHD2crNzdXX3+9TZL08sv/1Natn6tnzz7q1+8O7d79o1d7TZs206pVH8jlcik7+5CGDh3o+QxcINas+f0zfqtXf6jmza8t9fgVVzTRypXLJUnvvbdI06Y9ryZNmuqLL7YoNzdXJ0+e1Natm72e07jxFfrqqy90+vRp5eXl6cEH71N+fr5iYmJVXFysK664Ulu2fK6jR4/I5XLpf/93tL7+eruaNfuTPvlktSRp7dosGYY74OMoC6/cAQAAAAiqdu1u1vbtX2rIkP6Ki4tXhw4dPd98OWRImu699241bHi+rrzyKklSjx599MQTGZo/f66qVq2mRx55XNLvReID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UNwBAAAAgANQ3AEAAACAA1DcAQAAAIADUNwBAAAAgANQ3AEAAACAA1DcAQAAAIADRKS4W7ZsmTp37qwOHTpo7ty5kUgBAAAAABwlNtw7PHjwoKZMmaLFixcrPj5e/fr1U6tWrXTppZeGOxUAAAAAcIywF3cbN27U9ddfr/POO0+SdOutt2rVqlUaNWpUwG3UrVWt1Lb4GnVKbYuOjiI+QvElsU6M99c3lT2+Iowd4ok/m/jKtJbYja9Ma4nd+Iowdogn3izWifGVaW2wG18Rxk444v2JMgzDsPWMszR9+nSdPn1aY8aMkSQtXLhQ27dv15NPPhnONAAAAADAUcL+mTu3262oqP9W44ZheP0NAAAAALAv7MVdgwYNlJ2d7fk7Oztb9erVC3caAAAAAOAoYS/u/vznP+vTTz/V0aNHlZeXp48++kht27YNdxoAAAAA4Chh/0KV+vXra8yYMRo8eLCKiorUp08fXX311eFOAwAAAAAcJexfqAIAAAAACL6I/Ig5AAAAACC4KO4AAAAAwAEo7gAAAADAASjuAAAAAMABKO4AAAAAwAHC/lMIwfTPf/5TH374oaKiotSnTx/dddddXo8vXLhQc+bM8fz966+/qnv37mrfvr0mT56sgoICderUSWPGjPHETJs2TStXrpQkpaamKj09XYsXL9brr7+umJgYtWrVSmPHjlVsbKxlfIk5c+boww8/1FtvveXZNmjQIB09etTz/IkTJ2rTpk169913FR8fr86dO+vee+/1e4zz58/XW2+9paioKF111VV64oknFB8fH9CxP/bYY6X6MTc3V/369dOrr76qCy+8UF9++aUmT56sU6dO6fLLL9czzzzj1b5v/Pr165WZmSm3260rr7xSTz31lCfe7HibNWtWqg1//bNmzRq/59nfsZh59tlndezYMT3zzDOebWvWrNHEiROVlZXlN/7jjz/Wiy++KMMwdOGFF2ry5MmqWbOmJzYrK0vTpk1TXl6ebrjhBmVkZGjjxo2W480sXpKKioqUlpamkSNHqlWrVp54f2PebLyZjc9x48Zp69atqlKliiRp1KhRuuWWWyxzsWrbKh9/x2t2fo8cOWK5X3/H4cssf39zxSz3efPmae7cuTIMw7OfqKgo09y7dOmiDz74wLN/sznmOx79tV/CbHymp6fr+uuvV69evfz2ib+5a9b3e/bs0YwZMyRJbdu21cMPP+y3fbvn9pdfftErr7wil8ulO++8UwMHDvR7vsqzllj1mdVcsZpbvudr165dev755z2PHTx4UM2aNdP06dMt+8df/mbHW55ri1X+vmOtrOuE2Vrpr2/M+tNqLSlx5nmZNm2a3n33XdWoUUOSdPvtt3uNhzPj77zzTo0dO9az/ejRo6pZs6aWL19u2jetWrWyfa7szsW1a9fqueeekyRddtllmjhxoqpVq2bZn/7OrW9fXnzxxX7zN+t7f3PdbKzZXRuee+45y/lmxmwOmvE3j834uy6dybf/yxqbvjnv3r1bEyZM0IkTJ5ScnKznn3/ec203y8Fu+999950eeeQRnTp1Si1bttQTTzxhOR7uuusuW+Pnrrvusr32+Bv/VvdRVvcBvvH+rhO+ZsyYYXn/a+b999+3vGaV8D3eNm3a+J1fZmNy3bp1fu85zjy333zzjR577DEVFRWpYcOG+vvf/+5Z58ziV69eralTp8rtdqtp06aaOHGi51yZrVWB3POXYlRSmzZtMvr162cUFRUZeXl5Rrt27Yxdu3ZZxv/73/82brnlFmP//v1Gamqq8csvvxhFRUXG0KFDjTVr1hiGYRgbNmww+vbtaxQUFBiFhYXG4MGDjenTpxtt2rQxDh48aBiGYUyYMMF44403LOM/+ugjwzAMY+fOnUabNm2MO+64w5OD2+02WrdubRQVFXm2bdiwwejatauRk5NjuFwuY/jw4caHH37o9xhvueUWIycnx3C73UZ6eroxa9Ysv31VcuxHjhwp9dhXX31ldO3a1WjSpImxd+9eIycnx7jhhhuM7777zjAMwxgzZowxd+5cy3jDMIy2bdsaP/74o2EYhnHfffcZCxYssDxeqzas4u2cZ6t2z7Rx40ajVatWxsMPP+zZlp2dbXTs2NFo166d3/iSvvntt98MwzCMF154wXjyySc9sb/88ovRunVr48CBA0ZhYaHRv39/Y82aNZbjzSp+165dRt++fY2mTZsan332WUB9YTberMZn165dPeO5rNyt2rbK57vvvrM8XrPz62+/ZR1HWfnPnj3bcq74m1unTp0yXC6X0bdvX2PdunWWuZ/JbI75jsdffvnFsv0SvuPzt99+M4YPH25cffXVxrvvvuu3TxYvXmw5d83yP336tHHttdcaR44cMYqKiow+ffoYGzZssGx/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uc3Pz9cjjzyi2bNna/369RowYIDnc4D+5kdqaqo2bdqkdu3a6fHHH/d6zGytsruWV9ribteuXfruu+8kSVWqVFGHDh30ww8/lIorLCzU5s2bddNNN0mSGjRooOzsbM/j2dnZXi8/b926VUOGDNFDDz2knj17qqCgQFdffbXee+89vfPOO6pfv77Xv174xi9fvlw7d+5U9+7dlZGRoR07dmj06NGSpC1btujTTz/1PNcwDElShw4dtGzZMr311luKj4/3tG91jLt27VK/fv3Us2dP/fWvf7XsI99jD0TdunXVrFkzNWrUSDExMerUqZO2b99uGb9lyxZddtll+n//7/8pOjpat99+uz7//HPL4y35wKpVW77xBw8eDOg8l2XFihXasGGDunfvrqlTpyorK0uLFi1Sdna2evfurWHDhunQoUMaMGCAZfzTTz/tibn88ss1adKkUn2XkpKi2rVrKzExUe3bt9fGjRstx5tZvL++NhsP27ZtsxxvUunx+cMPP+jDDz/06uPY2FjTXL788ku/bZvls2nTJsvjNTu/5513XkB94Hscvqz60mquWPXl1q1bJUmxsbHq0qWLZ6xZjWU7c+zAgQOW7VuNN398+8Tf3DXL/+OPP1ZKSorq1Kmj+Ph49erVyzN3zdr3t3aatX/BBRfYGvtLliyxtZZcddVVln0W6PUhEJ988ok6d+5cZv/7WwvNjnfz5s22ri12BXqdCLQt3/5csWKF6VpiNpbHjRvn9crGmdcCf2P/448/DqjvSwR6rsozFxs0aKCFCxfq3Xff1RVXXGH5bgZJfu8b/I1Ns/zN4mfMmGE5183G2iuvvGJrbfj+++8DunbbXbfs3hPYvUaWsLrOWeX8xhtv6KKLLlLTpk0lSV27dvXbn0uWLLHVfsm9RonDhw971kKz87t9+3Zb42flypW21x6r8e/L3z2tmbLusc+Um5tref9rZv369X6vWVbHW3IuzeaX1Zg0W2PMzu0999yjhIQEXX311ZKkvn37enKyWgvXr1/v2V+3bt28+t5sv+Vay8v8VF4FtWbNGqNXr15GQUGBUVBQYNx1113G8uXLS8Vt377d6Nevn+fv/Px8o23btsaePXsMl8tl3H333caKFSsMwzCM/fv3G61atTI2btzoiT969KiRmppq5OTkGAUFBcaAAQOMpUuXWsaf6bPPPvP68GlWVpbRo0cPIz8/38jJyTG6detmbNq0ybjtttuMoqIi4+TJk8att95qbNmyxfIYlyxZYqSmphpLliwps498j92fdu3aGXv37jX2799vtGnTxti/f79hGL9/kHfKlCmW8T/++KORmprq+XDoK6+84vmQqdnxnvmB+pI2/PXPyy+/HNB5NsvNyrvvvlvqg9979+41/UKVM+NdLpfRs2dP46WXXjKN++qrr4xbb73VOHHihOfDwXPmzLEcb2bxJR+CNgzDuOOOO7y+2KCsMe873szG53fffWe0bdvWOH78uFFYWGgMHTrUWLZsWZm5+LbtLx+r47Ua//72a3UcgfT97NmzLeeKWe4vvfSS0a5dO+PEiROG2+02xo4da0yfPt0y9y+++CKgOVYyHn/44QfL9s9kNj4ffvhhry9UMesTf3PXLP8XX3zRuO2224xTp04ZbrfbePTRR42pU6datu9v7TRrf8uWLUa7du2MI0eOGKdPnzZuu+02Y9u2bZbna86cOeVeS3z7rKy54ju3zM6XYRjGkSNHjDZt2pSKMesff2uh2fHOnDmz3NcWq/xLcs/JyQnoOmG2Vpq1bdafL774oulacqaS83LkyBHjuuuuM3755RfD7XYb48aNM1599dVS+Zx5Ht1ut3Httdca+fn5XjFWfWPnXNmdi8XFxUabNm2M3377zXC73caYMWOMV155xbI//d03WI1Nq/yt7gOs5rrZWHvxxRdtrQ3Tpk3zO9/MmK1bvsqax77Kui75Kul/q+ucVc55eXleXzgzffp0429/+5tlDrNnz7bVvmH8/oUqJfd2GRkZxmuvvWYYhvn5ff/9922Nn1dffdXW2jN79uwyx7/Z2mB2H+Ab7+864eu7776zvP81s27dOstrVgmrMWM1v8zG5ObNm8u85yg5t8ePHzdSUlI8X4q0dOlS0z4qiT969Khx/fXXG/v27TMMwzCmTp1qPProo4ZhmK9Vga7lvirtTyGkpqZq+/bt6tGjh2JiYtShQwd16dKlVNzevXvVoEEDz98JCQl65plndN9996mgoECpqame9ybPnDlTBQUFXl/l269fP/31r39V37595XK51LVrV3Xr1s1vfP/+/U1zbteunbZt26YePXrI7XZrwIABuu6669ShQwfddtttKi4u1pAhQ9SiRQvLYzx+/LgOHz6sWbNmadasWZKkm266SQ888ECZxx6Ihg0bauLEiRoxYoQKCgp0xRVXmH7VbIlLLrlEDzzwgAYPHqyYmBhddNFFmjhxouXx/ulPf7Jsyyz+zjvvlMvlKvM8h0NWVpa+/fZbFRcXe/7V7qqrrvK8gtesWTOlpaVpwIABKioq0g033KD+/fvr4osvNh1vZvH+3voQ6JgvYTU+hw0bpv79+8vlcqlDhw7q2rWrJNnKxV8+tWvXNj1eq/Ff1n4DmWdmfVlcXGw5V8xyHzlypGrXrq1+/fopJiZGLVu29Lzd0mosr1ixIuA5dtlll2nYsGGm7dtl1SdWc9dqbpX862dcXJyaNm2qYcOG+W3fau00a79FixYaM2aMBg8erKKiIvXp08fzr5tWc6Vq1apBWUvszhUrv/76q+n5teofq7XQ7HiHDBmipKSkoFxbfC1atCjg60QgzPpz1KhRqlWrlula4qt27dqaOHGi7r33XhUVFal58+Zljv2jR48qLi6u1BcmWPVNkyZNbJ0rO3MxOjpaEydOVFpamgoLC5WSkqK7777bMr5WrVqW9w1WY3P79u2m+ZvF9+jRQ+edd57pXDcbayNHjtRVV11la20oKioKeL4Fyu48tnuNLNG4cWPL65yZxMREvfTSS8rIyFBeXp4aNGigzMxMyxwGDRqk2NjYgNuXpOeee04ZGRnKzc1VkyZNPJ/7Mju/t912mwoKCgIeP8OHD1e9evUCXnsGDRqkhISEoFyLfPm7x/bVuHFjy/tfM61bt9a3335res0qYTVmduzYYTq/zMbkqlWrAl5/a9asqcmTJ2v06NEyDEN16tTx++p1rVq19OSTT2r48OGKiorSpZdeqieeeEKS+VrVuXPncq3lUYbxn/cGAgAAAAAqrUr7mTsAAAAAwH9R3AEAAACAA1DcAQAAAIADUNwBAAAAgANQ3AEAAACAA1DcAQBwhqKiIrVu3VppaWmRTgUAAFso7gAAOMPq1avVuHFj7dixQ7t27Yp0OgAABIzfuQMA4AyDBg1S586dtXPnTrlcLs8PAs+YMUOLFi1StWrV1LJlS33yySfKyspSYWGhnnvuOW3evFnFxcW68sorlZGRoerVq0f4SAAA5xpeuQMA4D9+/PFHffnll+rYsaN69Oih999/X8eOHdO6deu0ePFiLVq0SIsXL9apU6c8z5kxY4ZiYmK0ePFiLV26VPXq1dNzzz0XwaMAAJyrYiOdAAAAFcXbb7+tdu3aqVatWqpVq5YuvPBCLViwQNnZ2erYsaNq1KghSRo4cKA+++wzSdKaNWuUk5OjjRs3Svr9M3t16tSJ2DEAAM5dFHcAAEg6ffq03n//fcXHx+umm26SJOXm5mrOnDnq0qWLzvwUQ0xMjOf/3W63xo8fr9TUVEnSqVOnVFBQEN7kAQAQb8sEAECStGzZMp133nlat26dsrKylJWVpY8//linT59WkyZN9NFHHyknJ0eStGjRIs/zWrdurblz56qwsFBut1uPPvqonn/++UgdBgDgHEZxBwCAfn9L5l133eX1qlyNGjU0aNAgzZ49W7fffrv69u2rXr16KScnR1WqVJEkjRw5UhdccIF69uypzp07yzAMjR07NlKHAQA4h/FtmQAAlOHrr7/Wl19+qcGDB0uSZs2apW3btumFF16IcGYAAPwXxR0AJHQ5KgAAAFhJREFUAGXIzc3V+PHjtXv3bkVFRalhw4Z68sknVb9+/UinBgCAB8UdAAAAADgAn7kDAAAAAAeguAMAAAAAB6C4AwAAAAAHoLgDAAAAAAeguAMAAAAAB/j/2uFrCNMGkNYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplots(figsize = (15,5))\n",
"sns.countplot(x=combinedDf['Age'],order=combinedDf['Age'].value_counts().index,hue=combinedDf['cluster_predicted'])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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AAAYGKEPAAAAAAyM0AcAAAAABkboAwAAAAADI/QBAAAAgIER+gAAAADAwAh9AAAAAGBghD4AAAAAMDBCHwAAAAAYGKEPAAAAAAyM0AcAAAAABkboAwAAAAADI/QBAAAAgIER+gAAAADAwAh9AAAAAGBghD4AAAAAMDBCHwAAAAAYGKEPAAAAAAyM0AcAAAAABkboAwAAAAADI/QBAAAAgIER+gAAAADAwAh9AAAAAGBghD4AAAAAMDBCHwAAAAAYGKEPAAAAAAyM0AcAAAAABkboAwAAAAADI/QBAAAAgIER+gAAAADAwAh9AAAAAGBghD4AAAAAMDBCHwAAAAAY2AMV+tasWaM2bdqoZcuWWrx4sb3LAQAAAIBCz8neBdwUFxenWbNmKTw8XC4uLuratavq1aunp59+2t6lAQAAAECh9cCEvqioKNWvX1+lSpWSJLVq1UobN27U0KFDs/V6BwdTjtZX2r14jmt8kLiU9LB3Cfclp+2VU4W5fWnbrBXmtpVo33uhfe2Hts1aYW5bifa9F9o3c7StfWW3be81n8lqtVrzoqD79emnnyopKUnvvPOOJGn58uU6cuSIQkJC7FwZAAAAABReD8w5fRaLRSbTXwnVarVmeAwAAAAAyLkHJvSVLVtW8fHxtsfx8fHy8vKyY0UAAAAAUPg9MKGvYcOG2rNnj/78808lJydr8+bN8vHxsXdZAAAAAFCoPTAXcilTpozeeecd9e7dW2lpaerUqZNeeOEFe5cFAAAAAIXaA3MhFwAAAABA3ntghncCAAAAAPIeoQ8AAAAADIzQBwAAAAAGRugDAAAAAAN76EPfvn379OKLLyogIEDt2rVT69at9cUXX9ief+mll3T27Nn7Xs/169c1a9Ys+fv7KyAgQK+++qqioqLu+brKlStLkj766CN99NFH913H/di3b5969epl1xoKwtmzZ1WtWjUFBASoffv28vPzU79+/fS///0vy9f16tVL+/btu2P6rW0XEBCQ7TpeeukltWnTxva3GRgYqL1792b5mtyu62F09uxZvfTSS3dMv/mZu5/lffvtt/r8888lZf+ze/78eY0YMUJ+fn5q166dBg8erDNnzuSqFqPp16+f/vOf/9geT5s2TS+++KKuX79um9a4ceMcfVffq50TExMVGBiotm3b6rfffst50dmQ13+DyL577ftzYvTo0QoPD8/jCpEbudl/39x3Hz16VOPGjSvAaoGC9cDcssGeqlWrprCwMEk3dvR+fn5q1KiRnn766Txbx5gxY+Ti4qIVK1aoSJEiOnnypPr3768vvvgiT9eDvOHl5aXIyEjb46lTpyo0NFQzZ868r+XeuszsmD9/vipUqCBJ2rZtm0aMGKFdu3bly7qQd44dO5aj+ZOSktSrVy/1799f06dPl8lk0urVq9WvXz9t2LBBzs7O+VRp4VC/fn1FR0frlVdekSRFRUWpRo0aio6OVoMGDRQbG6tixYrZPit5ISYmRi4uLvyYN7CC2Pej4OV2/2dWZ1YAABbHSURBVP3888/r+eefz+/ykE0bN27U/PnzZTabZbVaFRAQoAEDBuTLurZu3apjx47p7bff1pw5c9SwYUPVrl07X9ZlTw99T9/tUlNT5ejoqBIlSmSYHh4ertGjR9se39qrM3/+fHXo0EHt2rVTaGiobr8LRmxsrDZv3qzx48erSJEikm4cyZ05c6ZcXV0lSStXrlTbtm3l7++v0aNH69q1a5nW+NVXX6lz585q27atOnTooFOnTkm60TM0bNgwtWrVShcvXrTNP2TIEO3YsUOSNHPmTNuH5vz582rbtm2W669fv74GDBiggIAAmc1m2zK/+OIL9erVS8nJyYqNjVW/fv3UoUMHdevWTT/++KOkG0c/hwwZotatW2vbtm3Z2v4Pqnr16unnn3+WlLH39/bez2XLlql9+/Zq3779XXv9bh7Bv3Tpkv7+97+rdevWCggI0J49e7JVQ3x8vBISEnThwgUNHjxY/v7+6tChg7777rscrWv58uV69913bfN+9NFHmj9/fg62iPGlp6drypQpts/2okWLJElms1nBwcHq0qWLXn75Zb3xxhtKSUmxve6XX37RN998o2+++UYrV66UJB05ckRdu3ZV8+bN79rrt27dOj366KPq0qWLTCaTJKldu3YaMWKErl+/rsTERL311lvq0qWLmjdvrrFjx8pqtWrfvn3q1KmTAgMDNWrUKF27dk2jRo1SYGCgAgICtHbt2vzfUAWgQYMG+v777yVJcXFxcnFxUatWrWwHQA4ePKhGjRpJkg4fPqzOnTurXbt26tOnj2JjYyXd+M4eOnSoWrVqpZiYGNuyDx06pJYtW9rmk6SLFy9q7NixOnnypIYMGaLw8HD16tVL/v7+mjlzZqafv48++khjxoxRt27d1KpVK0VERGjUqFHy9fXVsGHD7tg33IvFYtHkyZPl5+entm3b2j6j+/btU79+/TRo0CC1adNGM2bM0CeffKLAwEAFBgbqwoULkqTvvvtOnTp1Uvv27TV06FAlJCTkZvM/FG7d92/YsEGvvvqq2rVrJ19fXx06dEjSjb+h0NBQdenSRS1atLDtV29KTk5Wt27dtHjxYnu8BWTi5v47s++Gm27dn8fExKhz587y9/dXz549bT2F9/q9h7wRFxenadOmaeHChVq9erW++eYbrV+/Xlu3bs2X9b388st6++23JUkHDhxQenp6vqzH3gh9unFUPiAgQP7+/nrppZdUt25deXl5Zeu13333nY4dO6YVK1YoIiJCcXFxWr16dYZ5YmJi9Pjjj6tYsWIZpterV08VKlTQyZMnNW/ePIWFhWnNmjUqWrSoPv7447uuLzExUf/5z38UFhamtWvXqlmzZhl2MD4+Ptq0aZM8PDxs05o2bWobFnjw4EGdOnVK6enp2rlzp5o2bZrl+hMSEjRw4EBFRkbKyelGx3B4eLg2b96sefPmqWjRoho1apRGjhypVatWKSQkRO+8845t3aVKldKGDRvuOoSpsEhLS9OmTZtUo0aNe85brFgxRUREaOrUqRo5cmSG4We3mj17th577DFt2LBBoaGh+uc//3nPZa9du1aPP/643N3dFRISovr162vNmjWaM2eOxo4da/uhl511tWnTRnv27FFiYqJt2Q/jcNDz588rICAgw7+bli1bJklatWqVVqxYoa1bt+rgwYP6/vvv5ezsrKVLl2rLli26evVqhh9/Tz/9tLp27aquXbuqY8eOkm6EiC+//FIrV67UwoULbdv9ppiYGFWtWvWO+nx9fVW8eHFt375dVapU0dKlS7Vp0yYdOHBAx48flySdPn1aX3zxhaZNm6a5c+eqatWqCg8P1+LFizVv3jxDDBGtWrWqfv/9d6WmpmrXrl1q1KiRGjVqdEfou379uoYPH67x48dr9erV6tq1q4YPH25bTuXKlbVp0yZVqVJFknTixAmNGzdO8+bNU6VKlWzzeXh4aPLkyapWrZrmzZsn6caPkFWrVmn48OFZfv5++uknhYWFKSQkRGPGjNHAgQO1du1a/fjjjzp58uQd7y2rv8ElS5bo3LlzWr16tZYvX67Nmzdr+/btkqQffvhBkyZN0sqVK7V48WI9+uijCg8PV+XKlbVu3Tr9+eef+vDDD7Vw4UJFRESocePGmjFjRt42TCF3t31/6dKl9c0332jevHlavXq1BgwYkOGAWFpampYuXaoxY8Zo9uzZGabfPKjQo0cPe7wd3MXN/Xe1atWy/G643YgRI/TGG29ozZo1atOmjb744ots/d5D3khISFBaWprtgGrx4sU1depUPf300zpy5Ii6deumDh06qH///rZ93N2C+u0H5m8OxT579qx8fX3VrVs39evXz9axExERoWPHjik4OFgnT55Us2bNZLFYJN04KJBfPY0FheGdunOIx80v+cGDB9/ztXv27NGRI0cUGBgoSUpJSVH58uUzzOPg4GDr4bubAwcOqHnz5nJ3d5ckdenSRWPGjLnrvG5ubvrwww+1bt06nT59Wjt37rT9gJGk6tWr3/GaZs2a6fXXX7f90KxcubKOHz+u7777Tr169brn+m9d5k8//aTx48dr5syZKl68uK5du6Zjx45lmD8pKcl2RPmFF17I9H0/yG7+EJNunI/5wgsvZOgZy0ynTp0kSd7e3vLw8LD1wt7uwIEDth9glStX1tKlS+8636BBg+Ts7Ky0tDSVK1fOFg737t2ryZMnS5IqVqyo6tWr64cffsjRupo2baotW7aoYsWKqlixosqUKXPP92c0tw8Dkv7qId2zZ49iYmJsB0ySkpJ08uRJ9ejRQ6VKldLixYt16tQpnT59WklJSVmup0mTJnJxcdGjjz4qd3d3Xb58WW5ubrbnHRwc5OLikunr27ZtqyNHjmjRokU6deqULl26ZFvnE088YRuZEBUVpZSUFFsPY1JSkn7++WdVrFgxh1vmweLo6Kjq1avr6NGj2rVrl3r06KGKFSsqJSVFly9f1vfff69x48bp9OnTKlmypO17p3Xr1powYYKuXr0q6c7vo9dee02+vr568skn71nDc889ZzvwldXnr1GjRnJyclL58uXl6elpGypYpkwZXb58+Y7lZvU3uG/fPnXo0EGOjo4qWrSo/P39tWfPHr300kt69tlnVa5cOUmSu7u7GjRoIEkqX768rly5oh9++EHnzp1T7969Jd3oNXzkkUfu+T4fJnfb9y9YsED/+te/tG3bNv3222/av3+/HBz+Oj7epEkTSdIzzzyjS5cu2abPnj1bDg4OmR6wRcG5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GxurhIQETZgwQfv371dERIQWL16sokWLateuXRo6dKg2bNigjz76SP369ZOfn59OnDihpUuXqlWrVplOvykhIUFvvfWW5s6dq+rVq+vnn39Wz549tWLFCknSgQMHtHbtWpUtW1YhISGaP3++pk2bZq9NCAAohAh9AADDSklJUUBAgCQpPT1d7u7umj59ui5evKjKlSvLzc1NkvTdd98pMDBQxYoVkyT17t1b8+bN0/Xr1zMsb/v27YqNjVXXrl1t065cuaJLly6pdevW+sc//qFt27apYcOGGj58uCRlOv2mI0eO6LHHHlP16tUlSc8884xq1qyp/fv3y2QyqWrVqipbtqwk6bnnntOWLVvyYUsBAIyM0AcAMKzbz+m7KTw83BbwJMlischkMmV4bDab73idxWJRQECARo4caXt8/vx5PfLII+ratauaN2+u3bt3a+fOnfr444+1cePGTKfflJ6enmHd0o0LzpjNZjk7O8vV1dU23WQyyWq15n6DAAAeStyyAQDw0GvSpIlWrlyppKQkSVJYWJjq1KkjFxeXDPM1btxY69at0/nz5yVJS5YsUZ8+fSRJXbt2VUxMjAIDAxUSEqIrV64oPj4+0+k31ahRQ6dOndKRI0ckST///LMOHDigunXrFsRbBwA8BOjpAwA89Dp16qRz586pc+fOslgsqlSpkmbMmHHHfI0bN9bAgQPVv39/mUwmubm56eOPP5bJZNKIESP0wQcf6J///KdMJpOGDh2qChUqZDr9pkcffVSzZ89WSEiIUlJSZDKZNGXKFD3xxBP6/vvvC3IzAAAMymRlnAgAAAAAGBbDOwEAAADAwAh9AAAAAGBghD4AAAAAMDBCHwAAAAAYGKEPAAAAAAyM0AcAAAAABkboAwAAAAAD+z/qF2h6TjodygAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplots(figsize = (15,5))\n",
"sns.countplot(x=combinedDf['Profession'],order=combinedDf['Profession'].value_counts().index,hue=combinedDf['cluster_predicted'])\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.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment