Skip to content

Instantly share code, notes, and snippets.

@bryanevan
Last active February 27, 2019 19:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bryanevan/e13f0306667f876a2a85c97223749e2f to your computer and use it in GitHub Desktop.
Save bryanevan/e13f0306667f876a2a85c97223749e2f to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Motivation: evaluate variable correlations and multi-dimensional interactions to understand which features are the most influential towards income; moreover, what perhaps may we learn from those features which may not typically strike one as intuitive influencers of capital gain outcomes: social indices such as relationships, marital status, or race. \n",
"Hypothesis: social indices will have a strong influence on income.\n",
"Null Hypothesis: social indices will have no impact on income."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import seaborn as sns; sns.set_style('white')\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"%matplotlib inline\n",
"import sklearn"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"path = ('/Users/bryanevan/Downloads/adult.csv')\n",
"df=pd.read_csv(path, low_memory=False)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 32561 entries, 0 to 32560\n",
"Data columns (total 15 columns):\n",
"age 32561 non-null int64\n",
"workclass 32561 non-null object\n",
"fnlwgt 32561 non-null int64\n",
"education 32561 non-null object\n",
"education.num 32561 non-null int64\n",
"marital.status 32561 non-null object\n",
"occupation 32561 non-null object\n",
"relationship 32561 non-null object\n",
"race 32561 non-null object\n",
"sex 32561 non-null object\n",
"capital.gain 32561 non-null int64\n",
"capital.loss 32561 non-null int64\n",
"hours.per.week 32561 non-null int64\n",
"native.country 32561 non-null object\n",
"income 32561 non-null object\n",
"dtypes: int64(6), object(9)\n",
"memory usage: 3.7+ MB\n"
]
}
],
"source": [
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# select data we want to regress onto income\n",
"data=df[['age',\n",
" 'education',\n",
" 'marital.status',\n",
" 'occupation',\n",
" 'race',\n",
" 'sex',\n",
" 'native.country',\n",
" 'capital.gain',\n",
" 'fnlwgt'\n",
" ]]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# label encode to create integer values from objects\n",
"from sklearn.preprocessing import LabelEncoder\n",
"data = data.apply(LabelEncoder().fit_transform)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.set_style('white')\n",
"sns.heatmap(data.corr());"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# turn categorical into binary\n",
"df['income'] = np.where(df['income'] == '<=50K',0,1)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"X = data\n",
"y = df.income\n",
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
" test_size=0.2, \n",
" random_state=1);"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(26048, 9)\n",
"(6513,)\n"
]
}
],
"source": [
"a=X_train.shape\n",
"b=y_test.shape\n",
"print(a)\n",
"print(b)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LOG: 0.784125 (0.014382)\n",
"KNN: 0.747731 (0.016545)\n",
"TREE: 0.787351 (0.009463)\n",
"BER: 0.783509 (0.014596)\n",
"SVC: 0.760017 (0.015505)\n",
"RF: 0.824046 (0.015213)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# overview of performance of several different classifiers\n",
"# no change of distribution shapes\n",
"from sklearn import model_selection\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.naive_bayes import BernoulliNB\n",
"from sklearn.svm import SVC\n",
"seed = 7\n",
"models = []\n",
"models.append(('LOG', LogisticRegression(solver='lbfgs', max_iter=1000)))\n",
"models.append(('KNN', KNeighborsClassifier()))\n",
"models.append(('TREE', DecisionTreeClassifier()))\n",
"models.append(('BER', BernoulliNB()))\n",
"models.append(('SVC', SVC(gamma='auto')))\n",
"models.append(('RF', RandomForestClassifier(n_estimators=4, max_features='sqrt')))\n",
"# evaluate each model in turn\n",
"results = []\n",
"names = []\n",
"scoring = 'accuracy'\n",
"\n",
"for name, model in models:\n",
"\tkfold = model_selection.KFold(n_splits=10, random_state=seed)\n",
"\tcv_results = model_selection.cross_val_score(model, X_test, y_test, cv=kfold, scoring=scoring)\n",
"\tresults.append(cv_results)\n",
"\tnames.append(name)\n",
"\tmsg = \"%s: %f (%f)\" % (name, cv_results.mean(), cv_results.std())\n",
"\tprint(msg)\n",
"# boxplot algorithm comparison\n",
"fig = plt.figure()\n",
"fig.suptitle('Algorithm Comparison')\n",
"ax = fig.add_subplot(111)\n",
"plt.boxplot(results)\n",
"ax.set_xticklabels(names)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Accuracy: 0.9587236264242499\n",
"\n",
"Classification Report:\n",
" precision recall f1-score support\n",
"\n",
" 0 0.95 0.99 0.97 24720\n",
" 1 0.98 0.85 0.91 7841\n",
"\n",
" micro avg 0.96 0.96 0.96 32561\n",
" macro avg 0.97 0.92 0.94 32561\n",
"weighted avg 0.96 0.96 0.96 32561\n",
"\n",
"\n",
"Confusion Matrix:\n",
"[[24574 146]\n",
" [ 1198 6643]]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATIAAAEECAYAAACr5bh1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAGJRJREFUeJzt3X9QVOe5B/DvsmhUFkZojL2oODiGJKKGEC5OktUYjbP4gyAbdddYTEMam+SqoROtvwF/FJna0lRo1OvNpE4SO2jEqTWZzkRHy6gRi7cIkklqkopG0RsLKos/CHue+4d1GwSWs7LL+u75fjJnJnv23XPes0cfn/c557xrEhEBEZHCwoLdASKi7mIgIyLlMZARkfIYyIhIeQxkRKQ8BjIiUp5SgcztduPdd9+F3W5HRkYGpkyZgg0bNqClpaVb23zttddgs9nw/vvv+/z5mpoaLFy48K73729NTU2YO3dup+9nZGTg6tWr3d6Pt++turoaubm5AICKigpMmzat2/vrSHFxMdasWePXbX7/fNbX12PatGnIyMhAZWXlPXWeqa3wYHfAF/n5+bhy5Qq2bduGyMhIXLt2DYsWLcKKFSuwYcOGu9rmxYsXcejQIVRVVcFsNvv8+VGjRmHjxo13te9AuHLlCmpqajp9/49//KNf9uPte/vyyy9x8eJFv+ynp33/fFZUVOD+++/H73//ewBASkpKEHtG3iiTkX3zzTf405/+hIKCAkRGRgIA+vXrh9WrV+PZZ58FcCsbWbRoEaZNm4b09HT88pe/RGtrK4Bbf0CLi4vhdDoxYcIEbN++HS6XCz/5yU/Q2toKu92OM2fO4KGHHkJDQ4Nnv7dfNzc3Y+HChcjIyEBmZiZWrlwJTdPaZBy+7r8jo0aNQlFREWbMmIEpU6bg448/xsKFC5GWloa5c+fi2rVrAIAPP/wQM2fOxPTp0/HMM894trds2TLcuHEDGRkZcLvdGDlyJN544w3YbDbU1NR4jqekpAROpxNutxvffvstrFYrjh492q4/lZWVmDVrFtLT02G321FeXt7h93ZbfX09Nm7ciMrKSixbtgwAcO3aNfzsZz9DRkYG0tLSUFlZCQBoaWlBQUEBMjMz8dxzz2Hp0qVwuVzt+tDa2or169fDZrNhypQpWLFiRbss/MCBA3A6nbDb7Rg/fjzeeustAOj0vHV1Po8ePYq33noLNTU1yMrKanOevfV7woQJyMnJweTJk/HJJ590eI4pAEQRf/7zn+X555/32ubnP/+5rF27VjRNk5s3b0p2drZs2bJFREQSEhLkvffeExGRmpoaGTlypNy4cUPOnj0rSUlJnm0kJCTIP//5z3avd+/eLdnZ2SIi0traKitWrJDTp0/L0aNHZerUqXe9/zslJCTItm3bRERky5Yt8thjj8mFCxfE7XZLZmam7NmzR1wul8yaNUsaGhpERORvf/ub5xg6Op7du3e3O57W1laZM2eObNmyRX784x/Lpk2b2vWloaFBnnjiCamqqhIRkb///e+SmpoqZ86cabef79u1a5fMmzdPRESOHj0qjzzyiGcb7777rsydO1dERIqLi6WwsFA0TRMRkV//+teSl5fXbnvbtm2TOXPmyPXr18Xtdssbb7whu3fvlo0bN8rq1atF0zT50Y9+JP/4xz9EROTChQvyyCOPeD1ves7nncdxe723fj/zzDNSUlLS4fdCgaPM0DIsLAyapnltU15ejj/84Q8wmUzo3bs3nE4ntm3bhnnz5gEAJk6cCABITExES0uLJ7vR4/HHH8dvfvMbZGVl4cknn8SLL76IoUOH4sKFC93a/3333dduXzabDQAQFxeHhIQEDBw4EAAwePBgXLlyBREREdi8eTP+8pe/4PTp0/j888+9HktHQyKz2Yxf/epXSE9PR2JiIn7605+2a1NdXY24uDg8+uijAIAHH3wQycnJOHbsGMaMGaP3q8OQIUM823j44Yexa9cuAMDBgwfR1NSEI0eOAAC+++47/OAHP2j3+SNHjiAjIwN9+vQBAE+2VVxcDAAwmUzYvHkzDh48iL179+Krr76CiOD69eudnrewsLAuz2dnuuo3h6A9T5lANnr0aHz99ddwuVywWCye9RcvXsSqVauwceNGaJoGk8nkeU/TNM/QDoAnaNxuI108Zvr94cuQIUPwySefoKKiAkePHsVLL72ENWvWICIios3+/LH/Xr16dfj/t124cAEOhwOzZs3C448/jrS0NBw4cKDT4+jXr1+H68+dO4f77rsPZ86cwZUrV9C/f/8277vd7jbHc7vP3z8mPb5/DCaTyXPcmqZh+fLlePrppwHcGgbevHmz3efDw9v+Mb106VKbf9SuXbuGzMxMPPvss0hJScHz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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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>importance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fnlwgt</th>\n",
" <td>0.281053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>age</th>\n",
" <td>0.182338</td>\n",
" </tr>\n",
" <tr>\n",
" <th>capital.gain</th>\n",
" <td>0.148843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>marital.status</th>\n",
" <td>0.146085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>education</th>\n",
" <td>0.100132</td>\n",
" </tr>\n",
" <tr>\n",
" <th>occupation</th>\n",
" <td>0.084411</td>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <td>0.023993</td>\n",
" </tr>\n",
" <tr>\n",
" <th>native.country</th>\n",
" <td>0.020882</td>\n",
" </tr>\n",
" <tr>\n",
" <th>race</th>\n",
" <td>0.012263</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" importance\n",
"fnlwgt 0.281053\n",
"age 0.182338\n",
"capital.gain 0.148843\n",
"marital.status 0.146085\n",
"education 0.100132\n",
"occupation 0.084411\n",
"sex 0.023993\n",
"native.country 0.020882\n",
"race 0.012263"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# random forest looks solid, so run it\n",
"rf = RandomForestClassifier(n_estimators=4)\n",
"rf.fit(X, y)\n",
"rf.score(X, y)\n",
"rf_pred = rf.predict(X)\n",
"from sklearn import metrics\n",
"from sklearn.metrics import classification_report\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.metrics import accuracy_score\n",
"acc = accuracy_score(y, rf_pred)\n",
"clas = classification_report(y, rf_pred)\n",
"print('\\nAccuracy:',acc)\n",
"print('\\nClassification Report:'), print(clas)\n",
"# show important features\n",
"conf_mat = confusion_matrix(y, rf_pred)\n",
"print('\\nConfusion Matrix:'), print(conf_mat)\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"cax = ax.matshow(conf_mat)\n",
"plt.title('Confusion matrix of the classifier')\n",
"fig.colorbar(cax)\n",
"plt.show()\n",
"\n",
"feature_importances = pd.DataFrame(rf.feature_importances_,\n",
" index = data.columns,\n",
" columns=['importance']).sort_values('importance',ascending=False)\n",
"feature_importances"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 0.464976\n",
" Iterations 6\n",
"\n",
" Accuracy by Income Ranking\n",
"col_0 0 1\n",
"income \n",
"0 23616 1104\n",
"1 5992 1849\n",
"\n",
" Percentage accuracy\n",
"0.7820705752280336\n",
" Logit Regression Results \n",
"==============================================================================\n",
"Dep. Variable: income No. Observations: 32561\n",
"Model: Logit Df Residuals: 32552\n",
"Method: MLE Df Model: 8\n",
"Date: Tue, 26 Feb 2019 Pseudo R-squ.: 0.1577\n",
"Time: 18:45:15 Log-Likelihood: -15140.\n",
"converged: True LL-Null: -17974.\n",
" LLR p-value: 0.000\n",
"==================================================================================\n",
" coef std err z P>|z| [0.025 0.975]\n",
"----------------------------------------------------------------------------------\n",
"age 0.0199 0.001 18.526 0.000 0.018 0.022\n",
"education 0.0115 0.004 3.201 0.001 0.004 0.018\n",
"marital.status -0.3604 0.010 -35.223 0.000 -0.380 -0.340\n",
"occupation 0.0149 0.003 4.466 0.000 0.008 0.021\n",
"race -0.1554 0.015 -10.628 0.000 -0.184 -0.127\n",
"sex 0.9583 0.035 27.640 0.000 0.890 1.026\n",
"native.country -0.0292 0.001 -20.052 0.000 -0.032 -0.026\n",
"capital.gain 0.0278 0.001 43.301 0.000 0.027 0.029\n",
"fnlwgt -2.042e-05 2.29e-06 -8.915 0.000 -2.49e-05 -1.59e-05\n",
"==================================================================================\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# log came back with promising results, so run many iterations\n",
"from scipy import stats\n",
"import statsmodels.api as sm\n",
"\n",
"logit = sm.Logit(y, X)\n",
"result = logit.fit()\n",
"log_pred = result.predict(X)\n",
"# Code result as 1 if probability is greater than .5.\n",
"log_outcome = np.where(log_pred < .5, 0, 1)\n",
"table = pd.crosstab(y, log_outcome)\n",
"\n",
"print('\\n Accuracy by Income Ranking')\n",
"print(table)\n",
"print('\\n Percentage accuracy')\n",
"print((table.iloc[0,0] + table.iloc[1,1]) / (table.sum().sum()))\n",
"print(result.summary())\n",
"\n",
"plt.figure(figsize=(6,6))\n",
"sns.heatmap(table, annot=True, fmt=\".3f\", linewidths=.5, square = True, cmap = 'viridis_r');\n",
"plt.ylabel('Actual label');\n",
"plt.xlabel('Predicted label');\n",
"all_sample_title = 'Accuracy Score: {0}'.format(table)\n",
"plt.title(all_sample_title, size = 15);"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ridge regression low alpha: 0.2056518264938597\n",
"ridge regression high alpha: 0.20564698274812998\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn import linear_model\n",
"ridge = linear_model.Ridge(alpha = 100, fit_intercept=True)\n",
"result = ridge.fit(X,y)\n",
"ridge_pred = result.predict(X)\n",
"# Code result as 1 if probability is greater than .5.\n",
"ridge_outcome = np.where(ridge_pred < .5, 0, 1)\n",
"ridge_table = pd.crosstab(y, ridge_outcome)\n",
"\n",
"rr = linear_model.Ridge(alpha=0.01)\n",
"rr.fit(X, y)\n",
"rr100 = linear_model.Ridge(alpha=100) # comparison with alpha value\n",
"rr100.fit(X, y)\n",
"\n",
"Ridge_score = rr.score(X, y)\n",
"Ridge100_score = rr100.score(X,y)\n",
"print (\"ridge regression low alpha:\", Ridge_score)\n",
"print (\"ridge regression high alpha:\", Ridge100_score)\n",
"plt.plot(rr.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Ridge; $\\alpha = 0.01$',zorder=7) # zorder for ordering the markers\n",
"plt.plot(rr100.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'Ridge; $\\alpha = 100$') # alpha here is for transparency\n",
"plt.xlabel('Coefficient Index',fontsize=16)\n",
"plt.ylabel('Coefficient Magnitude',fontsize=16)\n",
"plt.legend(fontsize=13,loc=4)\n",
"plt.show()\n",
"\n",
"plt.figure(figsize=(6,6))\n",
"sns.heatmap(ridge_table, annot=True, fmt=\".3f\", linewidths=.5, square = True, cmap = 'viridis_r');\n",
"plt.ylabel('Actual label');\n",
"plt.xlabel('Predicted label');\n",
"all_sample_title = 'Accuracy Score: {0}'.format(ridge_table)\n",
"plt.title(all_sample_title, size = 15);"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Default score: 0.1169548534483098\n",
"number of features used: 3\n",
"Score for alpha=0.01: 0.2024875209076583\n",
"number of features used: for alpha =0.01: 9\n",
"Score for alpha=0.0001: 0.2056515105918646\n",
"number of features used: for alpha =0.0001: 9\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XlYVGX7B/DvDDPDviiIAoImhrihQJhFaohakrmAoZi4RK5pai6oKZIbamK2qGmZmTtob2bYT19zQX01ldwCwR1FUDYRGGCGmXl+f0xMIgwMsw/cn+vyGs42c8947rnnnPOc5+EwxhgIIYQQI8M1dACEEEJIbahAEUIIMUpUoAghhBglKlCEEEKMEhUoQgghRokKFCGEEKNEBYoQQohRogJFCCHEKFGBIoQQYpR4hg5An1599VW4ubkZOgxiYh49eoQ///zT0GEYJcopog5Vc6pJFSg3Nzf8/PPPhg6DmJjQ0FBDh6CUTCZDbGwsMjIyIBAIsHz5crRp06baOoWFhRg5ciQOHToEc3NzMMbQu3dvtG3bFgDQvXt3zJ49G8ePH8eGDRvA4/EQFhaG8PDwel+fcoqoQ9WcalIFipDG5tixYxCLxdi3bx+uXLmCVatWYdOmTYrlp0+fRnx8PPLz8xXzHjx4gM6dO+Pbb79VzKusrERcXBz2798PS0tLREREICgoCC1atNDr+yHkeXQNihATlpKSgl69egGQHwn9/fff1ZZzuVxs27YNDg4Oinmpqal48uQJIiMjMWHCBNy9exd37tyBh4cH7O3tIRAI4O/vj0uXLun1vRDyIipQhJiw0tJS2NjYKKbNzMwgkUgU04GBgWjWrFm1bVq0aIGJEydix44dmDRpEubOnYvS0lLY2toq1rG2tkZpaanu3wAhdaBTfISYMBsbGwiFQsW0TCYDj1d3Wnfp0gVmZmYAgFdeeQVPnjyp8TxCobBawSLEEOgIimgsNxdYu1b+SPTLz88PycnJAIArV67Ay8ur3m2++eYbbN++HQCQnp4OV1dXeHp6IjMzE0VFRRCLxbh06RJ8fX11Gjsh9aEjKKIRsRjYtAlISwOEQmDBAkAgMHRUTUf//v1x9uxZjBw5EowxrFy5Etu2bYOHhweCg4Nr3WbixImYO3cuTp06BTMzM8TFxYHP52P+/PmIiooCYwxhYWFo2bKlnt8NGT58OC5evFhjfkBAAPbv32+AiAyLChTRyIEDwL17QMeO8scDB4CICENH1XRwuVwsXbq02jxPT88a6x0/flzxt729PbZs2VJjnb59+6Jv377aD5KozN/fH5cvX6523fDp06fw9/c3YFSGQ6f4iNouXwYOHwbc3eXT7u7y6cuXDRsXIaZqwoQJ4PP5ioYuEokEfD4fEydONHBkhmEUBUomkyEmJgYjRoxAZGQkMjMza6xTWFiIAQMGQCQSAQAqKiowffp0jBo1ChMmTEBhYaG+w27yEhIAe3vgn+vtMDOTTyckGDYuQkyVk5MTxo4di5KSEgBASUkJxo4dC0dHRwNHZhhGUaCev9lw9uzZWLVqVbXlp0+fxgcffFDtZsM9e/bAy8sLu3fvxtChQ7Fx40Z9h93khYcDz54BUql8WiqVT6vQAQEhRImqo6iKioomffQEGEmBUudmw+e36d27N86dO6e/gAkAwNcXCAkBHj6UTz98KJ+mxl+EqK/qKOrx48dN+ugJMJJGEspuNqy6nyMwMLDWbaru07C2tlYcEhP9CgsDbt6Ut+Lr1Ek+TQjRzIQJE3Dr1q0mffQEGMkRlDo3Gz6/jVAohJ2dnU5jJLUTCIApU4CAAPkjNTEnRHNOTk744YcfmvTRE2AkBUqdmw39/Pxw6tQpAEBycnKTbYZpDJydgTlz5I+EEKItRnGKT52bDSMiIhAdHY2IiAjw+XzEx8frOWpCCCG6ZBQFSp2bDS0tLfHVV1/pPDZCCCGGYRSn+AghhJAXUYEihBBilKhAEUIIMUpUoAghhBglKlCEEEKMEhUoQgghRokKFCGEEKNEBYoQQohRogJFCCHEKFGBIoQQYpSoQBFCCDFKVKAIIYQYJSpQhJgwmUyGmJgYjBgxApGRkcjMzKyxTmFhIQYMGACRSAQAKCkpweTJkzF69GiMGDECly9fBgAcPXoU/fr1Q2RkJCIjI3HhwgW9vhdCXmQUvZkTQtRz7NgxiMVi7Nu3D1euXMGqVauwadMmxfLTp08jPj4e+fn5innbtm1Dz549MW7cONy9exezZ8/Gf/7zH6SmpmLu3Ll46623DPFWCKmBChQhJiwlJQW9evUCAHTv3h1///13teVcLhfbtm1DWFiYYt64ceMg+GfoY6lUCnNzcwBAamoqbty4ge3bt8PHxwdz5sypd2RrQnSJTvERYsJKS0thY2OjmDYzM4NEIlFMBwYGolmzZtW2sbOzg4WFBfLy8jB37lx88skninUXL16MXbt2oaysDHv37tXPmyBECSpQhJgwGxsbCIVCxbRMJlPpqCcjIwPjxo3DrFmz0KNHDwBAWFgY3N3dweFwEBwcjLS0NJ3FTYgqqEARYsL8/PyQnJwMALhy5Qq8vLzq3eb27duYMWMG4uPj0adPHwAAYwyDBw/G48ePAQDnzp1D586ddRc4ISqgE8yEmLD+/fvj7NmzGDlyJBhjWLlyJbZt2wYPDw8EBwfXuk18fDzEYjFWrFgBQH4UtmnTJixfvhzTpk2DhYUFPD09ER4ers+3QkgNVKAIMWFcLhdLly6tNs/T07PGesePH1f8/Xwrv+e98cYbeOONN7QbICEaaPApvkePHuHKlSsoKyurdu6bEFI/yh9CVKfyEdSRI0cQHx+PBw8egMvlIjExEd988w2sra0RFxcHPp+vyzgJMWmUP4Q0nEpHUIcPH8bMmTMREBCA9evXQyaTAZCf/z527Bg2bNig0yAJMWWUP4SoR6UjqI0bN2LMmDFYsGABpFKpYn5oaCiKi4uxY8cOzJw5U2dBEmLKKH8IUY9KR1CZmZmK5qgv6tixI/Ly8jQKor7+xBISEhAaGorw8HCcOHECAJCdnY3Ro0fj/fffx9SpU1FeXq5RDIToiq7zh5DGSqUC5erqipSUlFqXXbt2DS4uLhoF8Xx/YrNnz8aqVasUy/Ly8rBjxw7s3bsXW7duxbp16yAWi/Hjjz9i4MCB2LVrF15++WXs379foxgI0RVd5w8hjZVKp/jef/99rFmzBowx9OnTBxwOB0+ePEFaWhq+/fZbTJ06VaMg6upP7Nq1a/D19YVAIIBAIICHhwfS09PRsWNHxU2FpaWlaNWqlUYxEKIrus4fQhorlQrUmDFjUFxcjO+++w6bNm0CYwxTp04Fj8dDZGQkoqKiNApCWX9iPB4PpaWlsLW1VSyztrZWFKT4+Hj89ttvEIvFmDZtmkYxEKIrus4fQhorlZuZT5s2DWPHjsXly5fx7Nkz2NrawsfHB82bN9c4iLr6E3txmVAohK2tLWJiYhAXF4devXrh5MmTiI6OxpYtWzSOhRBd0GX+ENJYNagnCVtbW/Tu3VvrQfj5+eHEiRMICQmp0Z+Yj48P1q9fD5FIBLFYjDt37sDLywt2dnaKIytnZ2cUFxdrPS5CtElX+UNIY6W0QL377rsNeqJDhw6pHUR9/YlFRkZi1KhRYIxh1qxZMDc3x+LFi7F06VLIZDIwxhATE6P26xOibfrMH0IaK6UFqnPnzuBwOADkg5odPnwY9vb26N27N1q0aIGioiKcPXsW+fn5GDFihEZB1NefWHh4eI2OK9u3b4+ffvpJo9clRFf0mT+ENFZKC9TzTb1XrVqFV155BVu2bFGMxAnIE2/69Ol0eo2QF1D+EKI5le6D2r9/P8aPH18tuQB5a7uIiAgcOXJEJ8ER0hhQ/hCiHpUKlIWFBR48eFDrsrS0NNjb22s1KEIaE8ofQtSjUiu+oUOHKnpw6NWrF5o1a4aCggL897//xZYtWzB9+nRdx0mIyaL8IUQ9KhWoWbNmoaysDOvWrcPatWsV8/l8Pj788ENMnDhRZwESYuoofwhRj0oFyszMDDExMZgxYwauXLmCkpISODg4oHv37tV6gCCE1ET5Q4h6GnSjrr29vdJemQkhdaP8IaRhVCpQ3t7eins6lLlx44ZWAiKksaH8IQ2Vmwv89BMwZgzg7GzoaAxHpQI1f/78GglWVlaGS5cuITU1FZ9++qlOgiOkMaD8IQ0hFgObNgFpaYBQCCxYALxwh0KToVKBGjdunNJlS5cuxZkzZxrctQshTQXlD2mIAweAe/eAjh3ljwcOABERho7KMFS6D6oub731Fo4dO6aNWAhpcjTNn/pGowaAwsJCDBgwACKRCABQUVGB6dOnY9SoUZgwYQIKCwsBAMePH0dYWBhGjBiBhIQEtWMi6rt8GTh8GHB3l0+7u8unL182bFyGonGBunjxYo075AkhqtE0f+oajRoATp8+jQ8++AD5+fmKeXv27IGXlxd2796NoUOHYuPGjaisrERcXBx++OEH7NixA/v27aOh6A0gIQGwtwfMzOTTZmby6ab6e0GlU3yTJ0+uMY8xhtzcXKSnp2Ps2LFaD4yQxkKX+VPXaNSAvCPmbdu2ISwsrNo2H374IQCgd+/e2LhxI+7cuQMPDw9Frxb+/v64dOkSBg4cqHZspOHCw4F164BmzeTFSSoFnj0DmuqYlioVqOcHDKzC4XDg4uKCESNG4L333tN6YIQ0FrrMn7pGowaAwMDAWrepGkvN2toaJSUlSkeuJvrl6wuEhABHjgBt2wIPH8qnfX0NHZlhqFSgduzYUedymUymlWAIaYx0mT91jUatyjZCoRB2dnZKR64m+hcWBty8KW/F16mTfLqpUukaVHBwMNLT02tddu3aNbz22mtaDYqQxkSX+ePn54fk5GQAqDEadV3bnDp1CgCQnJwMf39/eHp6IjMzE0VFRRCLxbh06RJ8m+rPdgMTCIApU4CAAPljU77Er/Sn1u7duxWtfh49eoQDBw7A1dW1xnopKSl0BEXIC/SVP/WNRl2biIgIREdHIyIiAnw+H/Hx8eDz+Zg/fz6ioqLAGENYWBhatmypdlxEM87OwJw5ho7C8JQWqKdPn+Lrr78GID9fXttpCi6XC1tbW8ycOVN3ERJigvSVP/WNRl3l+PHjir8tLS3x1Vdf1Vinb9++6Nu3r9qxEKJtSgvURx99hI8++giAvKuWffv2oVu3bnoLjBBTRvlDiOZUaiSh7Pw5IaR+lD+EqEdpgZo8eTLmz5+Ptm3b1nofx/M4HA42bdqk9eAIMVWUP4RoTmmBEgqFkEqlir8JIaqj/CFEc0oL1PMXdeu7j4MQUh3lDyGaa9CAhc+ePUN5eXmtzWJra0JLCPkX5Q8hDaNSgbpz5w4WLlyIa9eu1VjGGAOHw9FowDWZTIbY2FhkZGRAIBBg+fLlaNOmjWJ5QkIC9u7dCx6PhylTpiAoKAhlZWWIjY1FVlYWKisrsXjxYvj4+KgdAyG6ouv8IaSxUqlAffbZZ3j8+DEWLlyIVq1a1Ts6aEM93yPzlStXsGrVKsVF47y8POzYsQMHDhyASCTCqFGjEBgYiK1bt+Lll1/GmjVrkJ6ejvT0dCpQxCjpOn8IaaxUKlBXr17F2rVr0b9/f50EUVePzNeuXYOvry8EAgEEAgE8PDyQnp6OM2fOYODAgYiKioK1tTWWLFmik9gI0ZSu84eQxkqlvvgcHR1hVjVAiQ4o65G5alltvSw/ffoUxcXF2Lp1K/r27YvVq1frLD5CNKHr/CGksVKpQI0bNw7ffPMNCgoKdBJEXT0yK+tl2cHBQdEtS1BQUI1xcAgxFrrOH0IaK5VO8V26dAkPHz5E79694erqCgsLi2rLORwOfv31V7WD8PPzw4kTJxASElKjR2YfHx+sX78eIpEIYrEYd+7cgZeXF/z9/XHq1Cl06dIFFy9eRPv27dV+fUJ0Sdf5Q0hjpVKBsra2Rr9+/XQWRH09MkdGRmLUqFFgjGHWrFkwNzfHpEmTsGjRIowYMQI8Ho9O8RGjpev8IaSx4jDGmKGD0JfQ0FD8/PPPhg6DmBjab5Sjz4aoQ9X9RqUjqIsXLypdxuFwYG1tDXd392oNHQghcpQ/hKhHpQIVGRmpuHfj+QOu5+/n4HK5GDx4MJYtW1bvkNOENCWUP4SoR6VM2LBhA2bPno3hw4fj7bffhqOjIwoLC3Hs2DHs2rULc+bMgbm5OdatW4dWrVphxowZuo6bEJNB+UOIelQqUJs3b8bYsWMxa9YsxbyXXnoJ/v7+sLa2xuHDh7F3714wxvD9999TghHyHMofQtSj0n1QGRkZ6NGjR63LfH19kZaWBgBo3749cnNztRcdIY0A5Q8h6lGpQHl4eODw4cO1Lvu///s/uLm5AQBycnLg6OiovegIaQQofwhRj0qn+KZOnYpPPvkEWVlZCA4ORvPmzVFYWIjjx4/jwoULWLNmDW7duoX4+Hi634OQF1D+EKIelQrUwIEDYW1tjY0bN2LVqlWKroh8fX2xdetWvPbaa/jjjz/wxhtvYPbs2bqOmRCTouv8UWe4mhUrViA9PR2AfMQAOzs7JCQkYPny5fjrr79gbW0NANi4cWO1vjAJ0SvWQCKRiOXm5jKpVNrQTQ1u2LBhhg6BmCBt7je6yJ8jR46w6Ohoxhhjly9fZpMnT1Ysy83NZYMGDWIikYgVFxcr/q4iFovZ8OHDWXp6OmOMsZEjR7KCggKVX5tyiqhD1f1G5RsuJBIJ7t+/D7FYDMYYcnNzwRhDRUUFLl++jAkTJuiyjhJi0nSZP+oMV1M1dtrOnTsRGBiIDh06QCaTITMzEzExMcjPz8fw4cMxfPhwzd44IRpQubPYWbNmIT8/v9bllpaWVKAIUULX+aNsuBoej6d0uBoAEIvF2Lt3L/bv3w8AKCsrw+jRozF+/HhIpVKMGTMGXbp0gbe3t9qxEaIJlVrxrV27FnZ2dvj666/Rv39/9O/fH99++y3ef/99cDgcfPfdd7qOkxCTpev8UWe4GgA4d+4cAgICFNOWlpYYM2YMLC0tYWNjg549eyquUxFiCCoVqPT0dEybNg39+vVD37598ejRI/Tp0weLFi3CyJEjsWHDBl3HSYjJ0nX++Pn5ITk5GQBqHa4mJSUFIpEIJSUliuFqAOB///sfevfurVj3/v37GDVqFKRSKSorK/HXX3+hc+fOGsVGiCZUvgbl5OQEQH4H/O3btyGTycDlctG/f39quUdIPXSZP+oMVwMA9+7dw9ChQxXP4+npiXfffRfh4eHg8/kYMmQIXn75ZY1iI0QTKhWo9u3b48KFCwgICEC7du0gFouRmpqKrl27ori4GCKRSNdxEmKydJ0/XC4XS5curTbP09NT8Xd4eDjCw8NrbLdly5Ya8yZMmEDXk4nRUKlAjRkzBtHR0SgqKsKnn36KXr16Ye7cuXjnnXfwn//8B76+vrqOkxCTRflDiHpUugY1ePBgfPHFF2jRogUAYOXKlXB2dsb3338PV1dXLFmyRKdBEmLKKH8IUY/K16Defvttxd9OTk746aefdBIQIY0R5Q8hDae0QKWmpjboiai1DyH/ovwhRHNKC1RYWFi1ET/ZPyOBPj+vaj6Hw8GNGzd0FCIhpofyhxDNKS1QlpaWKC8vh7e3NwYOHIju3bvXSC5CSO0ofwjRnNICdf78eZw6dQr/93//h82bN8PW1hZvvfUWBg4cSK2OCKkH5Q8hmlNaoMzNzTFgwAAMGDAAIpEIp06dwpEjRxAVFaVItrfffht+fn76jJcQk0D5Q4jmVGrF93yyicViJCcn48iRI5g8eTIsLS3x1ltvYeHChbqOlRCTRPlDiHpUug/qeQKBAMHBwRgxYgQGDRqEgoIC7NixQ6MgZDIZYmJiMGLECERGRiIzM7Pa8oSEBISGhiI8PBwnTpyotuzixYvo06ePRq9PiL7oIn8IaaxUvg9KKpXi3LlzOHr0KP744w88ffoUXbt2xaxZszBgwACNgjh27BjEYjH27duHK1euYNWqVdi0aRMA+WifO3bswIEDByASiTBq1CgEBgZCIBAgJycHP/zwAyQSiUavT4iu6TJ/CGms6ixQVacjjh49ipMnT6K0tBS+vr6YNGkSBgwYgFatWmklCHUGXOvQoQOWLFmCZcuWITQ0VCtxEKJN+sofQhorpQVqxowZSE5ORmVlJQICAjBr1iz0799f0SuzNqkz4NrSpUvxwQcfoGXLllqPhxBN6TN/CGmslBaoI0eOgMvlwsfHB+bm5jh16hROnTpV67ocDkdxSk4dDR1wjc/n49KlS3jw4AE2bNiAZ8+eYdasWfjiiy/UjoEQbdJn/hDSWCktUAEBAYq/ny8QuuDn54cTJ04gJCSk1gHX1q9fD5FIBLFYjDt37sDHxwdHjhxRrBMYGEjFiRgVfeYPIY2V0gKlz5ZF6g64RoixopZ5hGhO5VZ8uqTugGtVzp49q7PYCCGEGEaD74MihBBC9IEKFCGEEKNEBYoQQohRUqlAXbx4UWlLpOLiYvz+++9aDYqQxoTyhxD1qFSgxowZgzt37tS67O+//0Z0dLRWgyKkMaH8IUQ9Slvxffzxx7h37x4A+aifc+bMqbV595MnT+Dm5qa7CAkxQfrMH5lMhtjYWGRkZEAgEGD58uVo06aNYnlCQgL27t0LHo+HKVOmICgoCEVFRXjrrbcU9xz269cPY8eOrXVdQgxFaYEaO3Ys9u/fDwC4desWXnrpJTRv3rzaOlwuF3Z2dhgxYoRuoyTExOgzf9TpbDktLQ2DBg3C4sWLFc9TV8fMhBiC0gLl7+8Pf39/xfTUqVPh7u6ul6AIMXX6zB91Olv++++/kZqaitGjR6N58+ZYtGgRrl+/Xuu6Pj4+OombkPqodKNuXFycruMgpNHSdf6o09lyu3bt0KVLF7z++uv49ddfsXz5cgQHB9e6LiGGolKBysvLQ1xcHE6dOoXy8nIwxmqsc+PGDa0HR0hjoOv8aWhny7a2tvDx8YGlpSUAeVdjX331FYYMGVLruoQYikoFKjY2Fn/++Sfee+89tGrVChwOR9dxEdJo6Dp/GtrZspeXF6KjozFgwACEhITg3Llz6Ny5s9J1CTEUlQrU2bNnERsbi6FDh+o6HkIaHV3njzqdLc+ePRsLFy7Enj17YGlpieXLl6NFixbUMTMxKioVKBsbmxotkAghqtF1/qjT2bK7u3utPa7X1zEzIfqk0o26YWFh+PHHH1FZWanreAhpdCh/CFGPSkdQIpEI169fR69eveDt7Q0LC4tqy2lEUEKUo/whRD0qFajU1FR4e3sDAKRSKY0QSkgDUP4Qoh6VChSNDkqI+ih/CFFPg0bUvXTpEs6fP4+8vDxMmjQJt27dQseOHeHs7Kyr+AhpNCh/CGkYlQpURUUFZs6ciZMnTypu/AsPD8ePP/6IjIwM7Nixo1qrIULIvyh/CFGPSq341q5di2vXrmHXrl04f/684k74zz//HC1btkR8fLxOgyTElFH+EKIelQpUUlIS5syZA39//2p3wTs5OWHq1KlISUnRWYCEmDrKH0LUo1KBKi8vh6OjY63LzM3NIRaLtRoUIY0J5Q8h6lGpQHXr1g0//fQTJBKJYl7VL8EDBw6ga9euuomOkEaA8ocQ9ajUSGLu3LmIjIzEwIEDERgYCA6Hg927d+Pu3bv4+++/sX37dl3HSYjJovwhRD0qHUF16dIFiYmJ6Nq1K44dOwYzMzMcO3YMzZo1w549e+Dr66tREDKZDDExMRgxYgQiIyORmZlZbXlCQgJCQ0MRHh6OEydOAACys7Mxbtw4REZGYvTo0bh7965GMRCiK7rOH0IaK5Xvg2rfvj3WrVunkyDUGbL6yy+/xOjRo9GvXz+cPn0a69atwzfffKOT+AjRlC7zh5DGSmmBOnr0KHr27Ak7OzscPXq03icaMGCA2kGoM2R1dHS0YjA1qVRKwwIQo6LP/CGksVJaoD7++GMkJCTAx8cHH3/8cZ1PwuFwNBoRVJ0hq6uGL7h79y5Wr16NDRs2qP36hGibPvOHkMZKaYH6448/0KJFC8XfuqTOkNUAcP78eXz22WdYs2YN2rVrp9MYCWkIfeYPIY2V0kYSbm5uEAgEir9lMhkuXrwINzc3uLm5QSQSISEhAWZmZnBzc9MoCD8/PyQnJwNArUNWp6SkQCQSoaSkRDEM9fnz57FixQp8//331EyXGB195g8hjZVKrfguXbqEwYMHY+vWrYp5xcXFOHjwIIYMGYL09HSNgujfvz8EAgFGjhyJuLg4LFiwANu2bVP8Cq0ahnrs2LGKYahXrlyJyspKzJ8/H5GRkYiJidEoBkJ0Rdf5Q0hjxWFVHYPVYeTIkXBycsIXX3wBPp+vmC8WizF79mwUFxebxL0coaGh+Pnnnw0dBjExmu43jSV/akM5RdSh6n6j0hFURkYG3n///WrJBQACgQARERG4fv26elES0gRQ/hCiHpUKlJ2dndIbYTMzM2FlZaXVoAhpTCh/CFGPSjfqhoSEYP369bCzs0NQUBBsbGxQWlqKkydPYv369RgyZIiu4yTEZOkyf2QyGWJjY5GRkQGBQIDly5ejTZs2iuUJCQnYu3cveDwepkyZgqCgIGRnZ2PhwoWQSqVgjGHp0qVo164dtm3bhv379ytu4fjss8+odSwxKJUK1MyZM3H//n3MnTsXHA4HPB4PEokEjDG8+eabmD17tq7jJMRk6TJ/tNkLS2pqKlavXo0uXbpo660TohGVCpS5uTk2bdqE9PR0/PXXXyguLoatrS18fX3RqVMnXcdIiEnTZf5osxeW1NRUbNmyBXl5eXjzzTcxadIkjWIjRFMq98UHAN7e3vD29tZVLIQ0arrIH232wvLOO+9g1KhRsLGxwbRp03DixAkEBQVpNV5CGkJpgXr33XcRHx8PLy8vvPvuu3U+CYfDwa+//qr14AgxVfrKH231wsIYw9ixYxXL+/Tpg7S0NCpQxKCUFqguXbrA0tJS8TchRHX6yh8/Pz+cOHECISEhtfbCsn79eohEIojF4lp7YanqxaK0tBSDBg3C4cOHYWVlhT///BNhYWE6i5sQVSi9UXfq1KmYPXs2PD2f7L/MAAAgAElEQVQ9cfHiRXTs2LHaqQRTRDcVEnWos9/oK39EIhFOnDgBS0tLcDgcODg4QCQSgcfjwcLCAkKhEGVlZQDkR1SWlpbIzc0FYwxmZmYAAB6PBwcHB5SVlSmOuMzNzWFnZ1fv6+fl5Sn6HCSkipmZGRwcHODk5AQut+bdTKrmlNIjqNOnTyMyMhKenp4YM2YM9u3bBx8fH82iJqSJ0Ff+ZGdn45VXXoGjo6NiGPn6dOzYUWuvz+fz0b59e609HzF9jDFUVlbiyZMnyMrKgoeHh9rPpbRAtW3bFtHR0ejUqRMYY1i9enW1C67P43A4iqathBD95U9FRQXatm2rcnEiunXnzp1q1/2qWFtbw9PT0wAR6R+Hw4FAIICbmxsyMjI0ei6lPUl8/vnn6N69O8rKysDhcFBeXg6hUFjrv9LSUo2CMGW5ucDatfJHU9UY3oOx0Wf+UHEyHlZWVop73ar+cTicJtlbSG2n9hpK6RFUeXk51qxZAwsLC3h7eyM2NpZO8b1ALAY2bQLS0gChEFiwAPhnhAWT0RjegzGi/GmanJycUFBQAMYYOByO4pGu06lHaYmbMGECUlNTAQABAQGwtrbWW1Cm4sAB4N49oGNH+eOBA/qPQdOjH2N4D5oyxiNAyp+mic/nw9HRETKZDIC82b+jo6Oi6T9pGKWfGofDwbFjx2Bubo5Lly7h+vXrqKioUPpEnTt31kmAupabC/z0EzBmDODsrPp2ly8Dhw8DbdvKp93d5dPe3oCvr05CrUHTox9jeA+aMtYjwKaSP6SmF4+i6OhJfUoLVGhoKLZt24Yff/wRALBgwYJa16v6T7hx44ZOAtQlTb7cEhIAe3vgn5a6MDOTTyck6O/Lvbajn4gI1bc3hvegKU0/A11pCvnTUB06dMChQ4eq3avVGFUdRT158gQtW7ascfSUlJSEXbt2IT09HRUVFUhLSzNQpMZPaYFasGABwsLCUFRUhDFjxiAmJqbRNSfV5MstPBxYtw5o1kz+xS6VAs+eAVFRuo25ijaOfgz9HjRlzEeATSF/iHJOTk4QiUS1Hj3Z2dlh1KhRqKiooJHA61HnidGqXzrTpk1DcHAwWrZsqZeg9EHTLzdfXyAkBDhyRP4cDx/Kp/X1xaiNox9DvwdNVX0GrvnX0Ct5BU73/hRP7X2M5gjQZPLn2jVgxQrg008BAzXkSEpKwtatW/Hw4UNwOBy8/fbb+Oyzz8DhcPD555/j4MGDkEql6NSpE2JjY+Hu7q50PgCcPXsW8fHxuH//Ptzd3fHJJ5+gT58+AOR9Dk6aNAmDBw+uNZaDBw/i+++/x6NHj+Dr64v169dj2LBh+OGHH1S+p4fP56Nt1ZfLC6o69/3zzz8b+Ck1PSpduZs2bRokEgkOHjyI8+fPIy8vD4sWLUJKSgo6d+5skh3IauMLPiwMuHlTfoqwUyf5tL5o6+jHkO9BU+HhAN4dBFfRPUj4lgjdH4Ge5i8Bh34zdGjVGHX+DBokP31gaSk/ffDSS8Bv+v38srKysGjRImzfvh0+Pj64ffs2wsPDMXDgQADA77//jkOHDsHW1hZLlizB119/jWHDhtU6f82aNbh16xamTJmCtWvXom/fvjh79ixmzJiBffv2oUOHDkhKSlIay549e/Ddd99hy5YtaNWqFYYNG4YZM2bgzTffrLU4xcbG4rc6Pq+JEydi4sSJmn9ITZRKDdWfPn2K8PBwLFy4EKmpqTh79iyEQiH++9//IiIiAlevXtV1nFoXHi7/QpdK5dNVX/Dh4ao/h0AATJkCBATIH/V5cb7q6OfhQ/m0ukc/hnwPmvL1BR5PX4kKKR+lti6okPKRMz3OKI6enmfU+bNyJcDnAy4u8se4OL2H4OzsjEOHDsHHxwdPnz5FUVER7O3t8eTJE9jY2KCgoACJiYl48OABli1bhjVr1iidD8iPxl5//XUMGDAAPB4Pffr0Qd++fXHo0KE645BIJFi/fj0WLlyI9u3bw8bGBt7e3rhy5QqmTp1a6zaxsbG4dOmS0n9UnDSjUoGKi4tDaWkpjh49ip9//hlV3fd99dVX8PHxwbp163QapC5o6wve2RmYM6dhLQC1JSxM/oP3xg35o7pHP4Z8D5oKnuUDgTkX/NxHEJhz0W9WV0OHVINR54+PD8DlAo8eyR+76v/z4/F4SExMRGBgIMLDw7Fjxw5UVlZCJpOha9euiIuLQ3JyMgYPHoyBAwfi5MmTSucDQGFhIVxdXau9hqurKx4/flxnHCkpKRCJRIpTgYC8aI0fP14xRAnRL5VO8Z04cQKfffYZ3NzcIK065AAgEAjwwQcfmOyIuqZ8egv49+inqpm8KR39aItAANgNH4ALxT3Qz+6CUX4GRp8/AwYAPXoAFy4Y5OWTkpJw+PBh/PLLL4pGBcHBwQCAnJwctGvXDjt37oRQKMSuXbswc+ZMJCUl1To/JSUFLi4uuHLlSrXXyMrKQqtWreqMIycnB05OTuDz+QCA+/fv4/Tp0xg6dKjSbWJiYuo8Mps0aRImT56s0udAalKpQD0/6uaLqoauNkUCATCt9zXk/WcFWkz+FAKB6d3pX3X0Y8rUvRetivXXqzAEABBqkNevj9Hnz6pV8sdQ9T6/higoKKh2JCMQCFBaWgoejweBQID09HQkJiYiKysLd+/eR15eHrZv3441a9bgjTfegJ2dHezs7HD9+nXExcVh586dcHd3V8w3MzNDSEgINm/ejKNHjyI4OBhnzpzB8ePHsXPnzjpjc3FxQXZ2NtLS0uDq6op58+bBwcEBOTk5SrdZunQpli5d2qDPQCqVQiKRoLKyEoC8R/qqz4K6rapOpQLVs2dPbNiwAa+88opiyAAOh4PKykr89NNPCAgI0CgImUyG2NhYZGRkQCAQYPny5WjTpo1ieUJCAvbu3Qsej4cpU6YgKCgIhYWFmDNnDioqKuDs7Iy4uDjF+DsqGzQIjvfuwdHSEphmmAvETZ2hb7TVx+vrOn9Mybhx46pN+/n5Ydu2bTh37hyCgoIgEAjg7e2NHj1exaNH2Rg37gM8ePAA8+bNQ3l5OV566SV89dVX6N69OzIyMhAREQGhUKiYDwBt2rTBhg0bsHbtWkRHR8PNzQ3x8fGKrqaUteILCAjAqFGjEBUVBYlEgkmTJsHNzQ0LFy6Es7MzQkJCVH6flZVAQQHg6Ci/tPe8gwcPVrsvriquP/74A61bt1b5NZoEpoLMzEz2+uuvs4CAADZhwgTm7e3NJk6cyPr168d69OjBbt++rcrTKHXkyBEWHR3NGGPs8uXLbPLkyYplubm5bNCgQUwkErHi4mLF38uWLWMHDhxgjDG2efNmtm3btnpfZ9iwYdVnXL3KWLdujA0aJH+8dq3hwV+9ylh4uPxRHYbe3sAx7N7N2KfvXmXXO4WzT9+9ynbvVi8Edany+jX2mwbSZf6kpaVpFJumbt26pdXnE4vF7MqV6+yvv/5mV66k/vN4nVVWVmrtNQ4fPsySkpLqiYOxnBz5Y0NJpYw9esTY7dvyR6lUzUANSJP3/zxl+6eqOaXSEZSHhwd+/fVX/Pjjj7hw4QI8PDyQn5+PoKAgjB8/Hi4uLhoVyZSUFMW9Ad27d8fff/+tWHbt2jX4+vpCIBBAIBDAw8MD6enpSElJwaRJkwAAvXv3xrp162r8OquXpheINW2ia+jtDRzD5cuA99xB6PtPM/Hp5yKQ/ddLuOz9m15a4unr9XWdP8amrqOH+rflg893hEiUD8AMgAx8vhPEYh601Z3d1atXMW3atFqXVQ2XIZUCjAE5OfLbOBoyXMbTp4BIJE8JkUg+7eiondh1TRvvX5tU/i93dHTU2cXc0tLSaqONmpmZQSKRgMfjobS0tNo4OtbW1igtLa0239raGiUlJeq9uCYXiFeulF+4cHGRNwNsaBNdQ29v4BgSEgDbN1Zi/MkxKLV1gd2zh/i9VxxK9HSjrT5fX5f5Yyy08eVWWAhYWTlBLP63Lzsrqxb/zNdOnPPnz1e6zMrKCiUlZeBwzMDlyt+HTCZVebiMsjL57SpVlxwFAvm0paX24tclTd+/tqlcoPLy8vDDDz/g4sWLKC0thYODA/z9/TFmzBiN75C3sbGpNsiXTCZT9F/14jKhUAhbW1vF/KphrVUZnrpWmlwg1vQIzNDbGzgG+c3GPmDgwrb4ERi4uMHrik8acC+aJvT5+rrMH2OhjS+35s2Bx4/5sLR0hFD4BNbWLSGT8aCvVt7W1k5grABcLgPAAYfDIJNxYG2tWoevhYUAjwdUtXXgcOTT2iywuqTp+9c2lQpUZmamou+o1157DY6OjsjPz8eePXvw888/Y+/evdUaNTSUn58fTpw4gZCQEFy5cqVaZ5I+Pj5Yv349RCIRxGIx7ty5Ay8vL/j5+eHUqVMIDQ1FcnIy/P391X59jWjaRNfQ2xswhqp70f66PADCzj1gnXpBr10t6ev1dZ0/xkIbX25WVvIeXYqKnGBhIQKP1wL29vr7ci8u5sPCwhEVFfngcs0gk8lgYeGE4mIeVPkNLC+w8iNHDkdepCUSoJ4W7kaj6v3j2v/Q6ofv8fiDDwGf11V+/9rGYaz+Nq5Tp05FVlYWtm/fjmbNminmFxYWIioqCq1bt8bXX3+tdhBVrfhu3rwJxhhWrlyJ5ORkeHh4IDg4GAkJCdi3bx8YY5g0aRLeeust5OfnIzo6GkKhEM2aNUN8fDysrKxQXFyM3NxcRRPO5+Xl5VHX90aGMfkpkMpK+fUKe/t/f33qy+3b1ti9uzW8vbm1tuILDQ3Fzz//rPbz6zJ/bty4gY4dO6odm6Zu376t6AQ3KwsoKcl57stdCgsLJ9jauqAhjdNkMvmXfHm5/NRYq1byg3N9KCsDcnIqUVKSAYADgMHW1hsuLjyVi2RBAVBcLD/NJxIBdnamcw2qrAxg74SA++AmZBbm4FaIIPPoAE5Sklo/EpTtn6rmlEpHUOfPn8eqVauqJRcANG/eHJMnT8bixYtVDLd2XC63xr0Ez5+zDg8PR/gLfRA5OTlh69at1eYVFxfjyZMncHNzg6WlZY17Cvh8PvUobYQ0uaiuKZlMBkvLRxg6NB9BQc46aeKu6/wxFs2bAyKRE0Sif68fCQQtGnx6jssFWrT4d5/QV3EC5EdqDg58iESOqKh4AguLlnBwUL04AfL+MUWifwvsC//teqFuTllZAUWfrYL5xFGQODpCkFuAyqWr4GCg05MqFShLS0ul48tzuVxIJBKtBqWu3NxcuLm5GeyCHlEPn2+4UyBcLheuri3h55cJZx319WQq+aMpbXy5VzHkPtGsGVBe7gSJRAQ7uxYNLjCGLLDaaKhi94YPJDw++HkFMOPxYReoXvdXlZXyI8ncXPVvgFepQL3yyivYuHEjAgICYG9vr5hfVFSEjRs3okePHuq9upZVVlY2/GZd0uTx+XydFgld5w9jDNnZ2aioqACHw4Gbm1u1nisKCwtRWFioGN3Vzs4OEokEWVlZigZJrVu3BpfLrXXdhmjWDJD8lQ3z+CUQzV6KZt6m14SeywVatuSDx2urdoExVIHVRkMVLhcwG/gWhN49YJ5+ocHv//kiWVT0BF5eb8PeXn4j9P79+xv0XCq99Lx585CTk4O+ffti6tSpiImJwdSpUxEcHIzs7GzMnTu3Ye9Ah6irENJQut5ndJ0/xcXFYIzB09MTrVq1qtaVUGVlJQoKCtCuXTu0bdsWT548gUwmQ25uLuzt7dGuXTtYWlqisLBQ6boNwR08CM4zxsAq5zGcZ0SCO3iQem/q2jVgxAj5owG259+4hlYzRoB/wzCvr+728oYqHFjeSofHvNmwvJUOxhreCs/s81VoFhUKs89XNWg7QF4kZTIOLG/dQbe4lfCBNSoqeGo1ZFPpCMrNzQ2//PILtm3bhkuXLuH27duwt7fHe++9h3HjxtXbCSMhTZmu86esrExxH6GVlRXKy8sVy8rLy2FlZaU4xSgQCFBRUYGysjJFgyEbGxs8efIEAoGg1nUbdMp85UpwxoyBwF2De/MMfQO7CW9fXMxH+1kzwXt4HzILc3jMnweJe1s823lMb63wrK2d8NL0kRBkP4LYzAxbSjNxv5QH854NH3pE5fugWrZsWecNboQQ5XSZPzKZDGZVI29CfkRY1UjhxWVmZvKm08/Pr23e8/MbRBv35hn6BnYT3r55c6Bg7mo4fvI+JE4twH/8GEXzPoejHkcLKS7mQzw7Bq2iP4K4WTNU3r2PHZ2i4HHUEUFBDXuuOk/xMcbw66+/Ijk5ucb88ePH4z//+U+DgyekqdBX/nC53GqFpKo41bZMKpWCy+VWm5+TI8XWrQ4oKDCrdd0GGzAAWLRI/qgOQ9/AbsLbW1kBVj39wTHjg//kCThmfFi96qvXm4SbNwdY194AlwNBfj4YOKj0jmnQYLBVlO59EokEM2bMQHR0NM6fP19tWX5+PnJzc7Fw4ULMnj274b+yCACgQ4cOuHnzpqHDMLikpCSMGjUKfn5+6NSpk6HD0Qp95o/8wri8q6+ysjJYWFgolllaWkIoFEImk0EqlUIkEsHCwkKxjVgMbNggRWqqFX76yQpPn9Zct8FWrZL3zLKq+vWLBu3vmhY5I95eKpVi9erV6NmzJ3x9fTF9+nQUFhYq3V6V9Z/PoV69OqHyzbeRO3EGKt98W+/N3Ktac5YFBuNuRARSHF/FsGGO6t0Ar6wX2Z07dzIfH586e/395ZdfWOfOnVlCQoJKPdPqWn09O6vU87I2egdXkZeXF8vIyND56xi75ORkdujQIZaYmMg6duxokBjq2nfU6c1cX/mTlpbGZDIZy8rKYrdv32a3b99m5eXlLC8vjz179owxxlhBQQG7desWu3XrFisqKmKMyXsNv3fvHvviixwWFlbCFi+WsrFjGduypbjGunVpSG/mtL/Lbdy4kQ0YMIA9ePCAFRcXs2nTprGoqCiN1n8xh7TVG7m6pFLGHj4Us//+9zSbNy+fiUTVl6uaU0qPoPbv34+oqKg6x0AZMmQIIiIisHfvXjVKoxEaNEh+UfLOHfnjIDVbIGlBUlISQkNDERAQgB49eiAmJkYxsN3nn3+ON954A6+99hqioqLw8J9x65XNB4CzZ88iNDQUfn5+GDJkCE6dOqVY9s477+DXX39VGsvBgwfx7rvvws/PD1FRUSgpKUG/fv3w4MEDrbzXXr16YdCgQXB3d9fK8xkDfeZPVdNyT09PeHp6wsLCAk5OToom4s2bN0f79u3Rvn17RTN3Pp+Pp0/bIiWlFTp2tAGXy4W7O5CcbIuSkurr6kNT2t8TEhLw4Ycfwt3dHba2tpg7dy5Onz6NrKwstdd/MYeqmrnr+8b3KlVN9W1tHTF7tqPaN8ArLVCZmZkqDaTWq1cv3L9/X71XNzYrV8r/R11c5I/qtEDSgqysLCxatAixsbG4ePEidu/ejd9++w3nz5/HuXPn8Pvvv+PQoUM4ffo0WrVqha+//lrpfAC4desWpkyZgsmTJ+PChQv45JNPMGPGDGRkZACQfzm8OHhblT179uDLL7/EF198geTkZDx48AAzZszAm2++CQ8Pjxrrx8bG4pVXXlH6b8uWLbr74IyIKeRPQoK8a6mqdhFmZvLphAT9xtGU9veSkhJkZ2ejS5cuinkeHh6wsbFRxKfJ+saEz5d386TJ/e9KW/FZWFigrKys3idgjIFvqDKtbdpogaQFzs7OOHToEFq3bo2nT5+iqKgI9vb2ePLkCTw9PVFQUIDExET069cPy5YtA5fLxfXr12udD8gT8vXXX8eAf86H9+nTB3379sWhQ4fQoUMHpXFIJBKsX78eK1asUHQR5e3tjbNnz2Lt2rW1bhMbG4vY2FjtfiAmyBTyR96bu/zmWjMzQCqV94sYFaXfOJrS/l5aWgoA1YYXAgA7OzvFMk3Wb2yUHkF17NgRx48fr/cJ/vjjD7Rt21abMRmWphdHtYDH4yExMRGBgYEIDw/Hjh07UFlZCZlMhq5duyIuLg7JyckYPHgwBg4ciJMnTyqdD8h7EnB1da32Gq6urtVu6KxNSkoKRCIR+vTpo5gnkUgwfvx4NNfX+AcmyhTyp6o396ozYw8fQq+9yVdpSvu7tbU1ANQoLsXFxTWKkDrrNzZKj6AiIiLw8ccfo3v37njvvfdqXWf//v04cOAAlixZorMA9U6T8aG0JCkpCYcPH8Yvv/yiuJkyODgYAJCTk4N27dph586dEAqF2LVrF2bOnImkpKRa56ekpMDFxQVXrlyp9hpZWVn13iCak5MDJycnxS/8+/fv4/Tp0xg6dKjSbWJiYnDo0CGlyydNmoTJkyer9DmYMlPJn7Aw4OZNIC0N6NRJPq1vTWl/t7Ozg6urK1JTUxW9fD98+BClpaW1Ht01dP3GRmmB6tevH0aMGIHFixdj165d6NOnD1xdXSGTyZCTk4PTp08jPT0db7/9do2exonqCgoKqv2yEwgEKC0tBY/Hg0AggFgsxvbt25GVlQWJRIKrV68iLi4OO3fuhLu7O+zs7GBnZ4fr16/XOt/MzAwhISHYvHkzjh49iuDgYJw5cwbHjx/Hzp0764zNxcUF2dnZSEtLg6urK+bNmwcHBwfk5OQo3Wbp0qU1eqavj1QqhUQiUQyRIhKJFJ+FqXZdZSr5IxAAU6YAP/0kvzdUF725P4/2d/noDN999x1effVVNGvWTNHYo7WSMUlUWb8x5hBQT08SS5YsQbdu3bB161Zs3ry52rJOnTohLi6uzl8XpH7jxo2rNu3n54dt27bh3LlzCAoKgoWFBQICAtC/f3/cuXMHCxYsQEZGBiIiIiAUCvHSSy/hq6++Qvfu3WudDwBt2rTBhg0bsHbtWkRHR8PNzQ3x8fHw8fEBIG/VNGnSpBoXjgMCAjBq1ChERUVBIpFg0qRJcHNzw8KFC+Hs7FxnC7WGOHjwIBYsWKCYrorrjz/+UJq0psBU8sfZGZgzRz+vRfs7MHHiRBQXF2P48OEQi8UIDAzE559/rlgeExOD7OxsfP/99yqtDzTeHFJpwEJAPtjf48ePYWZmBhcXlxpj2xiD+gZve35wNfKv33//HYwxrSWgKapr39F0wEJAd/ljTAMWmgra3/VHLwMWAkCLFi1oNNpG6urVq5g2bZqhw2jUKH+MB+3vpkPlAkUaL+oEmDQltL+bDj2O9UgIIYSojgoUIYQQo0QFihBCiFGiAkUIIcQoUYEihBBilKhAEUIIMUoGb2ZeUVGBuXPnoqCgANbW1li9enWNjhm/+eYbnDx5EjweDwsXLoSPjw9u3LiBZcuWwczMDAKBAKtXrzbQOyCEEKILBj+C2rNnD7y8vLB7924MHToUGzdurLY8NTUVFy5cQGJiItatW4fPPvsMALBixQosXrwYO3bsQP/+/fHdd98ZInxCCCE6YvAClZKSgl69egEAevfujXPnztVY/sYbb4DD4cDV1RVSqRSFhYVYt26dogsNqVQKc3NzvcdOCCFEd/RaoBITEzFo0KBq/0pKSmBrawtAPvZJSUlJtW1KS0urjXtStY7zP8M0/vXXX9i5c2eNTijVlZsLrF0rf9S1Dh064ObNm7p/ISMnlUqxevVq9OzZE76+vpg+fToKCws1Wj8pKQmjRo2Cn58fOnXqpOu3QFRA+7ucLvb3+tbRdLmh8kmvBeq9997Db7/9Vu2fra0thEIhAEAoFMLOzq7aNjY2NorlVetUFbTDhw9jyZIl2LJli1YGFBOLgU2bgIsX5Y9iscZPSVSwZcsWHD9+HImJiUhOTgYAzJs3T6P17ezsMGrUKCxcuFB3gZu44cOHo02bNjX+DR8+3NChNWq62N/rW0fT5YbKJ4Of4vPz88OpU6cAAMnJyfD396+x/MyZM5DJZMjOzoZMJkPz5s1x8OBB7Ny5Ezt27IC7u7tWYjlwALh3D+jYUf544IBWnlYtSUlJCA0NRUBAAHr06IGYmBhUdTxfNR7Ma6+9hqioKDz8Z0hUZfMB4OzZswgNDYWfnx+GDBmi+MwB+fADv/76q9JYDh48iHfffRd+fn6IiopCSUkJ+vXrhwcPHmjlvSYkJODDDz+Eu7s7bG1tMXfuXJw+fRpZWVlqr9+rVy8MGjRIa/tGY+Tv7w8ej6foyLZFixbg8Xg1clAfaH/XbH+vbx1Nlxssn5iBlZWVsenTp7ORI0eyyMhIlpubyxhjbPXq1ezq1auMMca++uorNnz4cBYaGsouXrzIJBIJCwgIYIMHD2ajR49mo0ePZl9++SVLS0ur87Vu3bqldNlffzE2ejRjixYxtmSJ/HH0aPl8XfHy8mIZGRk15j98+JB1795d8f5v3brFfH192f/+9z/2v//9jwUFBbHCwkJWWVnJFi5cyObOnat0PmOM3bx5k3Xt2pUdOXKEVVZWspMnT7Ju3bqx9PT0emPcvXs3CwoKYrdu3WIlJSWsX79+bPz48WzZsmW1rr9kyRLm7++v9N/mzZurrV9cXMy8vLxq/N/5+fmxY8eO1Xj+hq5//vx51rFjx3rfZ137zrBhw+rd3lDq2+frkpeXxzp06MC6devG/P39Wbdu3ViHDh1Yfn6+ys9RV069iPZ33ezv9a2j6fLnqZpPVZTtn6rmlMGbmVtaWioGGnve84eX06dPx/Tp06stv3DhQo1tbty4oXYcCQmAvT1gZiafNjOTTyckAL6+aj+tWpydnXHo0CG0bt0aT58+RVFREezt7fHkyRN4enqioKAAiYmJ6NevH5YtWwYul4vr16/XOh+Q/zp9/fXXMWDAAABAnz590LdvXxw6dKjOYaMlEgnWr1+PFStWKMb88fb2xtmzZ7F27dpat4mNjUVsbKzK77W0tBQAql1nBOSnFKqWabJ+Y8cYw4MHDyCRSMDlctG6dWvweNXTOjc3V3Ft18XFBVZWVigvL0dxcTEGDRqExMREODk5oaSkBOHh4Xj69CmePbc/n70AABX0SURBVHsGQD74n1lVUugI7e+a7e/1raPpckMy+Ck+YxEeDjx7Bkil8mmpVD5tiNG4eTweEhMTERgYiPDwcOzYsQOVlZWQyWTo2rUr4uLikJycjMGDB2PgwIE4efKk0vkAUFhYCFdX12qv4erqWm3o7dqkpKRAJBKhT58+inkSiQTjx4/XyjU/QN7oBUCNRCguLq6RMOqs39gJhUKYm5ujXbt2cHBwQO4LrXvKy8shFArRrl07uLu7Izs7GwCQk5MDFxcXzJ8/XzHsOp/Px/Dhw9G2bVu0a9cO7dq103lxAmh/BzTb3+tbR9PlhkQF6h++vkBICFB1GvvhQ/m0vo+eAPkvwMOHD+OXX37Bf//7X3z55ZeKZvQ5OTlo164ddu7ciT///BNhYWGYOXMmHj16VOt8qVQKFxcXPHr0qNprZGVlwcnJqc44cnJy4OTkBD6fDwC4f/8+Tp8+DS8vL6XbxMTEwNfXV+m/b7/9ttr6dnZ2cHV1RWpqqmLew4cPUVpaWuuv3Yau39iJxWJFo6HnGxxVEQqFsLGxAYfDgUAgACD/0nV3d4elpSWcnJwwYsQI5OXlYcyYMbCyskJ2djbu3LlTZ8sybdLF/v7w4SM8fgxUVspfozHv7/Wto+lyQzL4KT5jEhYG3LwJpKUBnTrJp3WtoKCg2i+7ql+zPB4PAoEAYrEY27dvR1ZWFiQSCa5evYq4uDjs3LkT7u7usLOzg52dHa5fv17rfDMzM4SEhGDz5s04evQogoODcebMGRw/fhw7d+6sMzYXFxdkZ2cjLS0Nrq6umDdvHhwcHJCTk6N0m6VLl2Lp0qUN+gzCw8Px3Xff4dVXX0WzZs0UF79bt26t9vpSqRQSiQSV/3xDiUQixefL4XAaFJ+xSExMxPbt26vNi46OVpza4nK5kFadAviHTCardhRUtU5VARAKhRg0aBCysrLw4YcfAgCcnJzAGMO9e/dgaWkJS0tLrb0Hfezvb78dgm+/le/vQUHBuHOn8e/v9a2j6XKD5ZPKV7tMgCaNJKo8ecLY55/LH3XNy8urxr+RI0ey8vJyNn36dObr68tee+019vHHH7OPPvqIrVy5kjHG2Pr161lgYCDr3r07GzZsGLt8+XKd8xlj7MyZM2zo0KGse/fu7J133mFHjx5VLAsJCWEHDx6sEZ9UKmXLli1jPXv2ZK+88gr77rvv2OHDh1n37t1ZUlKS1j4HiUTCVq1axXr06MG6d+/OPvroI1ZQUKBYvnjxYhYVFaXy+owxduDAgVo/34cPH9Yag6k2kjhz5gwTCoWMMfnncvPmzWrL8/LyFA2PGJPnQGVlJWOMsaKiInbz5k0mEokYY4zJZDImkUgU6+bk5LDCwsI6X7+hjST0sb/n5zO2f/8Z9s47Q1m3bt3ZW281/v29vnU0Xd7QfKqiaSMJDmP/tOVsBG7cuKHoXaI2t2/fVlz8NBaVlUBBAeDoCPxzZkHvfv/9dzDGEBISYpgAjEBd+05oaCh+/vlnPUekmosXL8LDwwMtW7ZEUVERhEIh3NzcFMvLy8vx+PFjtG3bFpWVlcjMzMTLL7+MoqIiFBYWwsPDQ9GooqKiAg8fPkT79u0VR1Bubm6wsLBQ+vrGllNlZcDjx4C5OcDhAIwBIhHQqhVgZSVfh/Z3/VGWV6rmFJ3iMyCZDMjLA8rL5X+3agVwDXBV8OrVq5g2bZr+X5hozNraGiKRCHfv3gWHw1Gcknn8+DHs7OxgZWUFKysr3L17F4wxuLq6gjGGnJwc8Pl8xb091tbWaNmyJRwcHHDnzh1wOBw4ODjUWZyM0d27dyAWC/H8WSfGgLIya3Tp4gmA9ndTQgXKgJ4+lf+6s7SUPz59Kj+S0rf58+fr/0WJVnA4HHh4eNSY36pVK8XfLVu2RMuWLastV3a0WHXDrqmys7NCfn4ZuNx/r7tJpVLY2Vkppml/Nx3Uis9Aysrkzdj/aVgFgUA+XVZm2LgIMWUuLk4wM+NAJpNfuZDJGMzMOHB1Nd2i25RRgTKQwkKAx4PiVASHI5/WU8teQholPp+PFi0cAcggkwGADC1aONa4eZmYBipQBtK8OSCRyM+PA/JHiUQ+nxCivhYtnMDjccDlMvB4HDg709GTqWp0BUom/9lk9Kys5F0pVfWYLhbLp62s6t6OaJ+pN2Q19fi1jc/nw8nJEYxVwsmJjp4MRRvfxY2qQFlbW+PRo0cQi8UmkbTNmsmbw5aXyx+bNTN0RE0PYwwFBQUm11qtioWFBQoKCkxif9cnJycnODg4mHSDD1PFGINYLMajR48U3Sipq1H9tGjdujXy8/ORmZkJiURSY3leXp7iTmhjIZUCQiFgbS1vJEH0z8LCQuld/MaudevWyMrKQl5enkFe3xhz6nm3bt0ydAhNEo/Hg729fb3dS9X7PFqKxyhwuVw4OzsrRtt90aeffmq0N1wSog4+n4+XXnrJYK9POUV0qVGd4iOEENJ4UIEihBBilKhAEUIIMUpUoAghhBglKlCEEEKMUqNqxVefR48eITQ01NBhEBPz4mjE5F+UU0QdquZUoxoPipD/b+9ug6Iq2ziA/xdhlVrB0Hyd0ayZsyJvu2gFaDi6ORqiu2Xm6iiroAlogJMMmqaSJDmDaFGUmin5EiiCliU1TgpJAgoIUmigYTqBpoi4igjs9Xzg4Tyuiz5gCAe5fp92z31zzsWB/9x77t09N2PsycFTfIwxxiSJByjGGGOSxAMUY4wxSeIBijHGmCTxAMUYY0ySeIBijDEmSV3me1AmkwmrV6/G2bNnIZfLERUVhSFDhojte/bsQWJiIqytrREUFISxY8e2e411dXV47733xDWtgoKCoNFoxPZt27YhOTkZDv9ddjcyMhLPP/98u9ao0+nQs2dPAI1LPURHR4ttUjiHKSkpSE1NBQDU1taiuLgYmZmZsLOzAwBERUUhLy9PXKcmPj5e/H1Y60k9V50hU4C0c9WhmaIu4scff6SIiAgiIsrPz6fAwECx7cqVK+Tr60u1tbVUXV0tPm5vycnJFBUVRURElZWVNGbMGLP2d999l06fPt3udTW5c+cOabXaZtukcg7vtXr1akpMTDTbptfr6dq1ax1U0ZNH6rmSeqaIOleu2jtTXWaKLzc3F6+88goAQKVSoaioSGwrLCyEWq2GXC5Hz549MXjwYJw5c6bda5w4cSJCQ0PF5926dTNr/+2337B582bMmDEDmzZtau/ycObMGdTU1MDf3x9+fn44deqU2CaVc9jk9OnTKC0txfTp08VtJpMJFy5cwMqVK6HX65GcnNxh9T0ppJ4rqWcK6Dy56ohMdZkpPqPRCIVCIT7v1q0b6uvrYW1tDaPRaHZJ+vTTT8NoNLZ7jU2XyEajESEhIQgLCzNrnzRpEmbOnAmFQoFFixbhyJEj7Xq536NHDwQEBGDatGkoKyvD/PnzkZaWJqlz2GTTpk1YuHCh2bbbt29j1qxZmDt3LhoaGuDn5wdnZ2cMGzasg6rs/KSeK6lnCug8ueqITHWZKyiFQoFbt26Jz00mE6ytrZttu3XrVoe9L1FeXg4/Pz9otVpMnjxZ3E5EMBgMcHBwgFwux5gxY/D777+3a21Dhw7FlClTIJPJMHToUPTq1UtcalxK57C6uhrnz5+Hh4eH2XZbW1v4+fnB1tYWCoUCHh4eHXqV9yToDLmScqaAzpGrjspUlxmg3N3dkZGRAQA4deoUBEEQ21xdXZGbm4va2lrcvHkT586dM2tvL1evXoW/vz/Cw8Px5ptvmrUZjUb4+vri1q1bICJkZ2fD2dm5XetLTk7GRx99BAC4fPkyjEYjnn32WQDSOYcAcOLECXh5eVlsLysrw8yZM9HQ0IC6ujrk5eXBycmpAyp8ckg9V1LPFNA5ctVRmeoyN4tt+rTRH3/8ASLC2rVrkZGRgcGDB0Oj0WDPnj1ISkoCEWHBggWYMGFCu9cYFRWFQ4cOmX2KaNq0aaipqcH06dOxf/9+7NixA3K5HJ6enggJCWnX+u7evYtly5bh77//hkwmw5IlS1BQUCCpcwgAX375JaytrTFnzhwAjZ/Uaqpxy5YtSEtLg42NDbRaLWbMmNEhNT4ppJ4rqWcK6By56qhMdZkBijHGWOfSZab4GGOMdS48QDHGGJMkHqAYY4xJEg9QjDHGJIkHKPbI+PM1jLUtzpQ5HqBa4PDhwwgICICnpyfUajV0Oh127dqFurq6x3K86OhojBw5Eu7u7sjNzUVxcTEmT54MZ2dnBAYGYunSpfD19W3Rvi5dugSlUom0tLQ2rfHkyZP/9yO5KSkpUCqVqKys/FfHaqv9MOngTFniTFnqMrc6elSRkZFITEyETqfDjBkz8NRTTyEnJwfr1q1DVlYWNm7caHF/r3/j7Nmz2L59OwwGA8aPHw9HR0dERETg+vXr+OKLL9CvXz90794dt2/fbtH++vbti6SkJDz33HNtViPQ+OXCP//8s033yboGzlTzOFOWeIB6iP3792P37t344IMPzG6Q6OXlBUEQsHjxYnz33XfQ6XRtdswbN24AAHx9feHq6goAqKqqwvDhwzF69OhW708ul0OlUrVZfYz9G5wp1ho8xfcQW7duhVKpNAtSEx8fH/j7++OZZ54Rt126dAmhoaHw8vKCWq1GUFAQysrKzH7uwoULCA4OhlqtxsiRIxEeHi5eZsfFxWH27NkAGr/tPnv2bCiVSuTk5CA9PR1KpRLZ2dkW0xF37tzBunXr4O3tDbVaDb1ej5MnT4o13T8dUVRUBIPBADc3N3h4eGDNmjWoqakR22fPno3o6Ghs2LABo0aNgpubG4KDg3H58mUAwNKlS5GamoqSkhKxppaIi4vDG2+8gYMHD2LChAlwcXHB1KlTkZeXZ9Zv//79mDBhAlxdXTF//nxUVVVZ7CszMxPTpk2Dq6srvL298fHHH6OhoQFA4y13HB0dERMTI/bPy8uDo6Mjtm7d2qJa2ePBmeJMtcpjWcTjCXD58mUSBIFiYmJa1L+8vJw8PDxIq9VSWloaHTp0iHx9fcnT05MqKiqIiOiff/4hLy8v0mq19NNPP9HBgwfp1VdfJZ1OR7W1tVReXk47d+4kQRBo3759VFJSQvn5+aTT6Uiv11N+fj7dvHmTIiIiaNKkSeKxAwMDyd3dnRISEigzM5OCg4NJpVJRWVkZXbx4kQRBoEOHDhERUUlJCbm5uZHBYKCff/6Z9u7dSx4eHvT222+L+5s1axaNGDGCDAYDHT16lFJSUsjd3Z1CQ0OJiOjChQs0f/580mg0Yk3N2bdvHwmCIK4V88knn5Barabx48fTt99+S0eOHKFJkybR6NGjqa6ujoiIfvjhBxIEgSIjIykjI4MiIyPJycnJbD+//vorOTo6UlhYGKWnp9P27dvJzc2NVq9eLR77ww8/JCcnJyotLaXa2lqaOHEi6fV6amhoaNHfk7U9zhRnqrV4gHqAgoICEgSBdu/e3aL+0dHRpFKpzBbuunbtGqnVaoqOjiYiopiYGBoxYoRZn7/++oscHR0pNTWViIiysrJIEAQqLCwU+8yaNcvsn/3eMBUXF5MgCOLPExHV1taSj48PpaSkWIRp8eLFNG7cOLNFz06cOEGCIFBOTo54vJdeeonu3Lkj9lm7di2pVKpma3iQ5sIkCAIVFBSIfQ4fPkyCIIiLxul0OgoICDDbz4IFC8z289Zbb5Ferzfrk5qaSsOGDaOLFy8SEdHt27dJo9GQv78/xcbGkpubG5WVlT20XvZ4caY4U63FU3wP0PQmrclkalH/EydO4OWXXxaXjgYABwcHeHp6IicnBwCQnZ0NlUoFOzs71NfXo76+HgMGDMALL7yA48ePP1KdTZfy48aNE7fJ5XJ8//33eP311y36Z2dnY9SoUbCyshJrUKlUUCgUZjUolUp0795dfN6/f3+zKYtHZW1tbXbH6P79+wMAampqUFNTg+LiYnh7e5v9zL03x6ypqUFhYSHGjh0r1l9fXw9vb2+YTCZxasTW1hZr1qzBsWPHsHnzZoSHh5stRc7aH2eKM9Xq3+2x7r0TGzBgAIDGtWQe5MqVK+jTpw+srKxQXV0NR0dHiz69e/dGaWkpgMY3ZgsKCpq9HX3T7fVb68aNG7CxsYGdnV2L+ldVVSEpKQlJSUkWbU1r0ACN/4z3kslkbfIdDblcDiur/70uanpsMplQXV0NIjJ7DwIA+vTpIz6urq6GyWTC+vXrsX79+of+Di+++CIGDhyIiooKcdVX1nE4U5yp1uIB6gEcHBwwfPhw/PLLL1iyZEmzfebOnYs+ffogISEB9vb2uHr1qkWfq1evolevXgAaFx/z9vZu9rsOTSt/tlbPnj1RV1eHmzdvmi1klp+fDzs7O7NXbE01aDSaZm+Jf/8/cXuzt7eHTCbDtWvXzLbf+4Zu03kKCgqCRqOx2Effvn3Fx1u2bEFlZSUGDx6M999/HwkJCY+pctYSnKn219kzxVN8D2EwGHDmzBns3bvXou3AgQMoLS0VV+gcMWIEsrOzzb74VllZiePHj8Pd3V3sc/78eSiVSri4uMDFxQWCIODTTz9Fbm7uI9WoVqsBAEeOHBG33b17F2FhYThw4IBF/6YanJ2dxRoGDBiA9evXo6SkpMXHvfcVW1vp0aMHVCoVDh8+bLY9PT1dfKxQKDBs2DBcvHhRrN/FxQU2NjaIjY1FRUUFAODcuXOIj49HYGAgoqKikJWV1ezfkbUvztSDcaYs8RXUQ2i1Whw9ehQrV65EYWEhNBoNZDIZjh07hm+++QavvfYapk6dCgCYM2cOUlNT4e/vj+DgYBARPv/8c8jlchgMBgCNrw4PHDiAefPmwc/PDzY2Nvjqq69w6tQphIWFPVKNTk5OGDt2LKKiomA0GjFkyBAkJiaKC7LdP4UQHBwMvV6P0NBQTJ06FXfv3kV8fDzKy8sxfPjwFh/Xzs4OFRUVyMzMhLOzM+zt7R+p/vu98847mDdvHpYtWwYfHx9kZWVZhCskJAQLFy6EQqHA+PHjcf36dWzcuBFWVlYQBAFEhBUrVmDQoEEICAiAXC6HVqsVPzbcr1+/NqmVtR5n6sE4U5b4CuohZDIZYmNjsWrVKpw9exYREREICwtDbm4uVqxYgZiYGMhkMgCN8+u7du1C3759ERERgeXLl2PgwIFITEwU37QcOHAgdu/eDVtbW4SHh2Px4sUwmUzYtm1bs3PtLbVhwwZMmTIFn332GRYtWoSqqips374dgwYNsujr7OyMhIQEXL9+HSEhIVi+fDn69euHHTt2tOqfbPr06ejduzcWLFiAzMzMR679fqNGjUJcXByKiooQHByM/Px8hIeHm/XRaDSIj49HUVERgoKCsHbtWqhUKnz99dewtbXFzp07kZeXh1WrVkEulwMAIiIiIJPJEBkZ2Wa1stbjTD0YZ8oSr6jLGGNMkvgKijHGmCTxAMUYY0ySeIBijDEmSTxAMcYYkyQeoBhjjEkSD1CMMcYkiQcoxhhjksQDFGOMMUn6D0PMLntcQzPfAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import math\n",
"from sklearn.linear_model import Lasso\n",
"lasso = Lasso()\n",
"lasso.fit(X,y)\n",
"lasso_score=lasso.score(X,y)\n",
"coeff_used = np.sum(lasso.coef_!=0)\n",
"print (\"Default score:\", lasso_score)\n",
"print (\"number of features used: \", coeff_used)\n",
"\n",
"lasso_pred = result.predict(X)\n",
"lasso_outcome = np.where(lasso_pred < .5, 0, 1)\n",
"lasso_table = pd.crosstab(y, lasso_outcome)\n",
"\n",
"lasso001 = Lasso(alpha=0.01, max_iter=10e5)\n",
"lasso001.fit(X,y)\n",
"lasso_score001=lasso001.score(X,y)\n",
"coeff_used001 = np.sum(lasso001.coef_!=0)\n",
"print (\"Score for alpha=0.01:\", lasso_score001)\n",
"print (\"number of features used: for alpha =0.01:\", coeff_used001)\n",
"\n",
"lasso00001 = Lasso(alpha=0.0001, max_iter=10e5)\n",
"lasso00001.fit(X,y)\n",
"lasso_score00001=lasso00001.score(X,y)\n",
"coeff_used00001 = np.sum(lasso00001.coef_!=0)\n",
"print (\"Score for alpha=0.0001:\", lasso_score00001) \n",
"print (\"number of features used: for alpha =0.0001:\", coeff_used00001)\n",
"\n",
"plt.subplot(1,2,1)\n",
"plt.plot(lasso.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Lasso; $\\alpha = 1$',zorder=7) # alpha here is for transparency\n",
"plt.plot(lasso001.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'Lasso; $\\alpha = 0.01$') # alpha here is for transparency\n",
"plt.xlabel('Coefficient Index',fontsize=16)\n",
"plt.ylabel('Coefficient Magnitude',fontsize=16)\n",
"plt.legend(fontsize=13,loc=4)\n",
"\n",
"plt.subplot(1,2,2)\n",
"plt.plot(lasso.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Lasso; $\\alpha = 1$',zorder=7) # alpha here is for transparency\n",
"plt.plot(lasso001.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'Lasso; $\\alpha = 0.01$') # alpha here is for transparency\n",
"plt.plot(lasso00001.coef_,alpha=0.8,linestyle='none',marker='v',markersize=6,color='black',label=r'Lasso; $\\alpha = 0.00001$') # alpha here is for transparency\n",
"plt.xlabel('Coefficient Index',fontsize=16)\n",
"plt.ylabel('Coefficient Magnitude',fontsize=16)\n",
"plt.legend(fontsize=13,loc=4)\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"plt.figure(figsize=(6,6))\n",
"sns.heatmap(lasso_table, annot=True, fmt=\".3f\", linewidths=.5, square = True, cmap = 'viridis_r');\n",
"plt.ylabel('Actual label');\n",
"plt.xlabel('Predicted label');\n",
"all_sample_title = 'Accuracy Score: {0}'.format(lasso_table)\n",
"plt.title(all_sample_title, size = 15);"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Missed points out of 32561 points : 7115\n",
"\n",
"Bernoulli Confusion Matrix:\n",
"[[24164 556]\n",
" [ 6559 1282]]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# NB showed up well also, so run it \n",
"from sklearn.naive_bayes import BernoulliNB\n",
"bnb = BernoulliNB()\n",
"bnb.fit(X,y)\n",
"bnb_pred = bnb.predict(X)\n",
"\n",
"print(\"Missed points out of {} points : {}\".format(\n",
"data.shape[0],\n",
"(y != bnb_pred).sum()\n",
"))\n",
"bnb_mat = confusion_matrix(y, bnb_pred)\n",
"print('\\nBernoulli Confusion Matrix:'), print(bnb_mat)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"cax = ax.matshow(bnb_mat)\n",
"plt.title('Confusion matrix of the classifier')\n",
"fig.colorbar(cax)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.7/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/anaconda3/lib/python3.7/site-packages/sklearn/base.py:462: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, **fit_params).transform(X)\n",
"/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:10: DataConversionWarning: Data with input dtype int64 were all converted to float64 by StandardScaler.\n",
" # Remove the CWD from sys.path while we load stuff.\n"
]
}
],
"source": [
"# standardize b4 KNN and pca\n",
"from sklearn.model_selection import train_test_split\n",
"pca_X_train, pca_X_test, pca_y_train, pca_y_test = train_test_split(X, y, \n",
" test_size=0.2, \n",
" random_state=0)\n",
"\n",
"from sklearn.preprocessing import StandardScaler\n",
"sc = StandardScaler() \n",
"pca_X_train = sc.fit_transform(pca_X_train) \n",
"pca_X_test = sc.transform(pca_X_test) "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# let's give KNN a chance to predict, so parameterize features w/ pca\n",
"from sklearn.decomposition import PCA\n",
"pca=PCA().fit(pca_X_train)\n",
"plt.figure()\n",
"plt.style.available[:1]\n",
"plt.plot(np.cumsum(pca.explained_variance_ratio_))\n",
"plt.xlabel('Number of Components')\n",
"plt.ylabel('Variance (%)') #for each component\n",
"plt.title('Explained Variance')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Eigenvalue 1: 1.4445872559592263\n",
"----------------------------------------\n",
"Eigenvalue 2: 0.7102981013014953\n",
"----------------------------------------\n",
"Eigenvalue 3: 1.1564833975444346\n",
"----------------------------------------\n",
"Eigenvalue 4: 1.0886276127593044\n",
"----------------------------------------\n",
"Eigenvalue 5: 0.8236900822816902\n",
"----------------------------------------\n",
"Eigenvalue 6: 0.8666543710573236\n",
"----------------------------------------\n",
"Eigenvalue 7: 0.9286983602516429\n",
"----------------------------------------\n",
"Eigenvalue 8: 0.9933239886562135\n",
"----------------------------------------\n",
"Eigenvalue 9: 0.9879823594242787\n",
"----------------------------------------\n"
]
}
],
"source": [
"pca = PCA(n_components=8) \n",
"stdr = pca.fit_transform(pca_X_train) \n",
"cov_mat = np.cov(pca_X_train.T)\n",
"eig_val_cov, eig_vec_cov = np.linalg.eig(cov_mat)\n",
"\n",
"for i in range(len(eig_val_cov)):\n",
" eigvec_cov = eig_vec_cov[:, i]\n",
" print('Eigenvalue {}: {}'.format(i + 1, eig_val_cov[i]))\n",
" print(40 * '-')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'n_neighbors': 8}"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn import neighbors\n",
"from sklearn.model_selection import GridSearchCV, cross_val_score\n",
"# run several iterations to find best number of neighbors\n",
"params = {'n_neighbors':[2,3,4,5,6,7,8,9]}\n",
"knn = neighbors.KNeighborsClassifier()\n",
"model = GridSearchCV(knn, params, cv=10)\n",
"model.fit(pca_X_train,pca_y_train)\n",
"model.best_params_"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.82055215 0.80214724 0.81441718 0.80214724 0.80521472 0.82055215\n",
" 0.8202765 0.85692308 0.83076923 0.82769231]\n",
"0.822201750345463\n"
]
}
],
"source": [
"# KNN Regression\n",
"knn=KNeighborsClassifier(8, weights='distance')\n",
"knn.fit(pca_X_train,pca_y_train)\n",
"\n",
"knn_cv = cross_val_score(knn,pca_X_test,pca_y_test, cv=10)\n",
"print(knn_cv)\n",
"print(knn.score(pca_X_test, pca_y_test))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Mean Error')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfcAAAESCAYAAADg/JwWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XlcVOX+B/DPzDAOm1xEVEjTkNQyX6ZYLtfU7KqJuZK7kaZGipq7iGZuuKfeyqUUxbI0lCj1Z6ah3TDXskzx5gJuuSZ6M2ZwBoZ5fn9MTqLAnME5c5jh8369fMHM2b6H48z3PMt5HpUQQoCIiIg8hlrpAIiIiMi5mNyJiIg8DJM7ERGRh2FyJyIi8jBM7kRERB6GyZ2IiMjDMLkTuVC9evXQpUsXdOvWrdC/S5cuuey43bt3x4svvoiXX34Zx48ft7vt5s2b8emnnzp0vEOHDqFz586F3ktKSkLr1q1x8uTJQu8vW7YMQ4YMeWAfJ06cQIsWLZCXl1fscVJTU/HGG284FBtReeCldABE5c1HH32EoKAgxY+7Zs0aJCQkIDk5ucTtjhw5gjp16jzUsZcuXYpdu3Zh48aNqF69eqFlvXv3xocffoirV68iNDTU9n5ycjJ69eqFChUqPNSxicojJneiMuLQoUOYM2cOfH19YTAYMGnSJCxatMj2+vPPP8cXX3yB9evXQ61WIzg4GNOmTUNYWBgmT56MP/74A7/99huef/55TJw4scRjmc1mXL16Ff/4xz8AANnZ2Xj77bdx8+ZN3LhxA9WrV8e///1v/PTTT9izZw/27dsHb29vDBgwACtXrsSuXbtgsVhQvXp1TJ8+HdWqVSvyOBaLBbNmzcLJkyexYcMGVKpU6YF1qlatihdeeAGpqakYMWIEAMBgMGDHjh3YsmULACAlJQXJycnIz8/H7du38frrr6N///6F9hMdHY0BAwagY8eOD7zOysrCnDlz8Mcff6CgoADR0dHo2bOnYxeIyI0wuRO52MCBA6FW/90iVqNGDSxfvhwAcObMGaSlpaF69eo4dOhQodcHDhxAYmIikpOTERQUZEuG27dvBwAYjUbb78UdFwD+97//QafToW3btpg3bx4AYPv27WjUqBFiYmIghEBMTAy2bNmCwYMHY/fu3ahTpw4GDBiAL7/8EqdPn8bmzZvh5eWF5ORkvPXWW1i9evUDxzObzZg4cSL+7//+D6tWrSoysd/Vv39/TJkyBbGxsVCpVNi+fTuaNm2KRx55BAaDAZs3b7bt4+jRo3jttdceSO7FMZvNePPNN7Fw4UI89dRTyMnJQZ8+ffD444+jUaNGkvZB5G6Y3IlcrKRq+dDQ0ELV1ve+3rt3Lzp16mTbNioqCnPmzLG11zdp0kTScU+cOIGYmBg0a9YMlStXBmBN/D/++COSkpJw/vx5nDlzBk8//fQD+/j2229x/PhxvPzyywCsJfM7d+4Uebxz586hcePGWLBgASZPnozU1NRC1e73atasGXx8fHDw4EG0aNECycnJmDBhAgDAz88PH3zwAb777jucP38eJ0+eRG5ubonneq/z58/j4sWLmDJliu09o9GI//73v0zu5LGY3InKEF9f32JfWyyWB9YXQsBsNhe5bXGeeuopxMfHY/LkyXjyySdRo0YNLFq0CMeOHcPLL7+MZs2awWw2o6hpJywWC4YOHWorNefl5eH27dtFHuexxx6z1Qz89NNPGDVqFDZs2FBsG3q/fv2QkpKCwMBA5ObmokWLFgCAa9euoU+fPujduzeaNGmCjh074ttvvy1yH/fGnJ+fDwAoKChAxYoVbVX8gLUZomLFivb+VERui73lidxEq1at8NVXX+HWrVsAgM8//xyBgYGoVauWw/vq3LkzGjZsaEu+33//PQYOHIju3bujcuXK2L9/PwoKCgAAGo3GdgPx3HPPISUlBXq9HgDw7rvvYtKkSUUeQ6vV2n6fOnUqCgoKMHPmzGJj6tatGw4dOoQNGzZgwIABtvczMjIQFBSE2NhYPPfcc7bEfje+u4KCgpCRkQEAyMzMxKlTpwAAYWFh8Pb2tiX3q1evonPnzrZ1iTwRS+5ELnZ/mzsAjBs3Dt7e3iVu17JlSwwaNAgDBw6ExWJBUFAQPvzwwwf2JdW0adPQtWtX7N27FyNGjMDChQvx7rvvQqvVIiIiAhcvXgQAtG7dGvPnzwcAvP7667h+/Tp69+4NlUqF0NBQ27KS6HQ6vPvuu+jRowcaNmyIPn36PLCOv78/2rdvjy1btiAuLq7QeaekpKBjx45QqVRo2rQpgoKCcOHChULbDx8+HJMnT8Z3332H2rVr45lnngEAVKhQAStWrMCcOXOQmJgIs9mM0aNH223GIHJnKk75SkRE5FlYLU9ERORhmNyJiIg8DJM7ERGRh2FyJyIi8jBu3Vu+WbNmD4xTTURE5KkuX76MQ4cO2V3PrZN79erVkZqaqnQYRERELhEVFSVpPVbLExEReRgmdyIiIg/D5E5ERORhmNyzsmCKHYs7AdVgUWtwJ6AaTLFjgawspSMjIiIqlfKd3HfsgKFhc7yX6IMGOftRQZjQIGc/3kv0gaFhc2DHDqUjJCIicphb95Z/KFlZMPR8Fe1yt+IgWtjePotwTMqfi9T8Lkjr2RV+xw4C4eEKBkpEROSYcltyNy1ehhX5rxdK7Pc6iBZYmT8UpqXLXRwZERHRwym3yd3yyQZ8kD+kxHVW5g9FwfoNLoqIiIjIOcptctfps3EBtUpc5yJqwluf7aKIiIiInKPcJneTfzBq4UKJ69TERRj9g10UERERkXOU2+SufqU/hmnXlLjOcG0iNNH9XRQRERGRc5Tb5K4bPxKx2tVojgNFLm+OAxiuTYRu7AgXR0ZERPRwym1yR3g4/FI+RppvVyzSxqM2suCFfNRGFhZp45Hm2xV+KR/zMTgiInI7siR3i8WCt99+G3369EF0dDQuXCjctr1u3Tr06tULvXr1wrJlywot++abbzB+/Hg5wnpQZCT8jh3EqBgTjvs1hwneOO7fAqNiTNbn2yMjXRMHERGRE8kyiE1aWhry8vKQnJyMo0ePYv78+Vi5ciUA4LfffsPWrVuxefNmqFQq9O/fH+3atcMTTzyBhIQEfP/993jyySflCKto4eHQLVsCLFsCAPB13ZGJiIhkIUvJ/ciRI2jVqhUAoFGjRsjIyLAtCwkJQWJiIjQaDdRqNcxmM3Q6HQAgIiICM2bMkCMkIiKickOW5K7X6+Hv7297rdFoYDabAQBarRZBQUEQQmDBggWoX78+wsLCAACdOnWCSqWSIyRpnn0WSEhQ7vhEREROIEty9/f3h8FgsL22WCzw8vq7BcBkMmHChAkwGAyYPn26HCGUzvXrwJkzSkdBRET0UGRJ7hEREUhPTwcAHD16FHXr1rUtE0IgNjYW9erVw6xZs6DRaOQIoXRCQ4GrV5WOgoiI6KHI0qGuffv22LdvH/r27QshBObOnYukpCTUrFkTFosFhw8fRl5eHvbu3QsAGDduHBo3bixHKI4JDQXOnlU6CiIioociS3JXq9WYNWtWoffC73le/Pjx48Vu26xZMzRr1kyOsOwLCQH27VPm2ERERE5SfudzL0qLFsDt24AQgJId+4iIiB5C+R2hrigDBwIbNzKxExGRW2NyJyIi8jBM7vc6fhwICgK2bVM6EiIiolJjcr9XYCDwv/8B164pHQkREVGpMbnfq1o1608+605ERG6Myf1eFSoAlSuz5E5ERG6Nyf1+ISEsuRMRkVvjc+73GzAAuGfSGyIiInfD5H6/+HilIyAiInoorJYvSm6udZQ6IiIiN8Tkfr/33gP8/KzD0BIREbkhJvf7Vali/clOdURE5KaY3O8XEmL9ycfhiIjITTG53y801PqTJXciInJTTO73Y3InIiI3x+R+v4AAYPJk4NlnlY6EiIioVPic+/1UKmDePKWjICIiKjWW3IuSkwNcuqR0FERERKXC5F6UgQOBjh2VjoKIiKhUmNyLEhrKDnVEROS2mNyLEhIC3LoFmExKR0JEROQwJvei3H0c7vp1ZeMgIiIqBSb3otwdpY5V80RE5IaY3Ivy9NPAu+8CNWooHQkREZHD+Jx7UR59FHjzTaWjICIiKhWW3Ivz66/AuXNKR0FEROQwJvfitGkDLFigdBREREQOY3IvDp91JyIiN8XkXpyQECZ3IiJyS0zuxQkNBa5dUzoKIiIihzG5FyckxJrchVA6EiIiIofwUbji9OsHNG0KWCyARqN0NERERJIxuRfn6aet/4iIiNyMLMndYrFgxowZOHXqFCpUqICEhATUqlXLtnzdunXYvn07AKBNmzYYOXIkjEYjJk6ciJs3b8LPzw8LFixAUFCQHOFJo9cD+/cDDRoAjzyiXBxEREQOkqXNPS0tDXl5eUhOTsb48eMxf/5827LffvsNW7duxWeffYbk5GR8//33OHnyJDZu3Ii6detiw4YN6N69O1asWCFHaNJduQK8+CKwZ4+ycRARETlIluR+5MgRtGrVCgDQqFEjZGRk2JaFhIQgMTERGo0GarUaZrMZOp2u0DatW7fGgQMH5AhNurszw/FxOCIicjOyJHe9Xg9/f3/ba41GA7PZDADQarUICgqCEAILFixA/fr1ERYWBr1ej4oVKwIA/Pz8kJOTI0do0vn7A76+fByOiIjcjizJ3d/fHwaDwfbaYrHAy+vv5n2TyYQJEybAYDBg+vTpD2xjMBgQEBAgR2jSqVQcpY6IiNySLMk9IiIC6enpAICjR4+ibt26tmVCCMTGxqJevXqYNWsWNH89ZhYREYHvvvsOAJCeno4mTZrIEZpj7j7rTkRE5EZk6S3fvn177Nu3D3379oUQAnPnzkVSUhJq1qwJi8WCw4cPIy8vD3v37gUAjBs3Dv369UNcXBz69esHrVaLxYsXyxGaY5YuBby9lY6CiIjIISoh3HcItqioKKSmpiodBhERkUtIzXscfrYkmZnA2rWAyaR0JERERJIxuZdk715gyBB2qiMiIrfC5F6SkBDrTyZ3IiJyI0zuJbmb3NljnoiI3AiTe0k4Sh0REbkhJveSVKkCqNUsuRMRkVvhlK8l0WiAn34CHn1U6UiIiIgkY3K3h3O6ExGRm2G1vD07dwKrVysdBRERkWRM7vZs2gTMmKF0FERERJIxudsTEgJcvw5YLEpHQkREJAmTuz2hoUBBAXDzptKREBERScLkbg9HqSMiIjfD5G4PR6kjIiI3w0fh7Hn2WWube3Cw0pEQERFJwuRuj04HVK2qdBRERESSsVpeigULgORkpaMgIiKShMldirVrgdRUpaMgIiKShMldipAQdqgjIiK3weQuRWgoH4UjIiK3YTe5nz171hVxlG0suRMRkRuxm9ynTp3qijjKttBQwGQC7txROhIiIiK77D4K5+vri7lz5yIsLAxqtfVeoE+fPrIHVqaMGwdMmgSoVEpHQkREZJfd5N64cWMAwM3yPLa6Vqt0BERERJLZrZYfOXIkGjRoAJ1OhyeeeAIjR450RVxly/XrwJAhwPffKx0JERGRXXaT++LFi5GamgqtVosvv/wSCxYscEVcZYtKZX3W/eeflY6EiIjILrvV8j/88AM+++wzAMDAgQPRu3dv2YMqc4KDAY2GPeaJiMgt2C25m81mWCwWAIAQAqry2KlMrQaqVeOz7kRE5Bbsltw7deqEfv364emnn8axY8fQqVMnV8RV9oSGsuRORERuwW5yf/755/Hcc8/h7Nmz6NmzJ+rWreuKuMqesDA+505ERG7BbnKfOnUqNm7cWH6T+l2bNysdARERkSQcxIaIiMjD2O1Q17hxYwQEBODmzZu4ceMGbty44Yq4yp7du4EOHYDyev5EROQ27Jbcz507h8WLFzu0U4vFghkzZuDUqVOoUKECEhISUKtWrULr3Lp1C3379sW2bdug0+nwxx9/YOLEidDr9QgMDERCQgIqV67s2NnI6fZt4JtvgEuXgCpVlI6GiIioWHZL7vn5+Th58iRMJhPy8vKQl5dnd6dpaWnIy8tDcnIyxo8fj/nz5xdavnfvXgwePBjZ2dm29z788EM0adIEGzduRHR0NJYsWVKK05FRaKj1J3vMExFRGWc3uZ87dw6xsbHo1KkTOnbsiMjISLs7PXLkCFq1agUAaNSoETIyMgofVK1GUlISAgMDbe9lZmaidevWAICIiAgcOXLEoRORXUiI9SefdSciojLObrX8tm3bHN6pXq+Hv7+/7bVGo4HZbIaXl/VwLVu2fGCbJ598Env27EH9+vWxZ88eGI1Gh48rK5bciYjITRRbck9ISLD9vnXrVtvvI0aMsLtTf39/GAwG22uLxWJL7MWJiYnB5cuXMWjQIFy9ehUhd0vKZYW3N9CkCeDrq3QkREREJSo2uZ8+fdr2e0pKiu33P//80+5OIyIikJ6eDgA4evSopGfkf/zxR3Tr1g3r1q1DjRo1EBERYXcbl/vxR2DMGKWjICIiKlGxxWkhRJG/Sxlbvn379ti3bx/69u0LIQTmzp2LpKQk1KxZE//617+K3CYsLAxxcXEAgKpVq2Lu3LmST4KIiIj+VmxyvzeJOzpZjFqtxqxZswq9Fx4e/sB6e/bssf1eq1Yt2+xzZdacOdY53XfsUDoSIiKiYhWb3H/77TcsWbIEQohCv1+6dMmV8ZUtN28Ce/cqHQUREVGJik3ub775ZpG/jxo1St6IyrLQUMBgAHJygIoVlY6GiIioSMUm9x49ergyDvdw77PuTO5ERFRG2R3Ehu7BZ92JiMgNMLk74rHHgLZtAa1W6UiIiIiKZXeEOr1ej/T09EJjynfv3l3WoMqsxx8H7unhT0REVBbZTe6xsbGoWrUqQv+qknb0sTgiIiJyLbvJXQiBd955xxWxuIe2bYH69YHly4tfJysLpsXLYPlkA3T6bJj8g6F+pT9040cCRTzvT0RE5Ex229zr1auHX375xTbdq5QpXz2awQBkZRW/fMcOGBo2x3uJPmiQsx8VhAkNcvbjvUQfGBo25wA4REQkO7sl98OHDxcaSU6lUmH37t2yBlWmhYYC588XvSwrC4aer6Jd7lYcRAvb22cRjkn5c5Ga3wVpPbvC79hBluCJiEg2dpP7vTPCEazPuh84UOQi0+JlWJH/eqHEfq+DaIGV+UMxauly6JYtkTNKIiIqx+wm9927d2PDhg3Iz8+HEAJ//PFHqeZ49whZWTAdyYDlRg50as0DbemWTzbgg/z9Je5iZf5QxK5vCTC5ExGRTOy2uS9fvhwjR45EaGgoevToIWn6Vo90ty39aCs0QEaRbek6fTYuoFaJu7mImvDWZ7soaCIiKo/sJvdKlSqhcePGAICoqChcv35d9qDKnHva0icVzMdZhKMAXra29Ha5W2Ho+SpMvkGohQsl7qomLsLoH+yiwImIqDyym9y1Wi1++OEHmM1m7N27Fzdu3HBFXGWKpLb0vMEQYWEYpk0scV/DtYnQRPeXI0wiIiIAEpL7zJkzYTabMXz4cGzatKnQDHHlhbUtfUiJ66w0x0B1/ixitYlojqI73DXHAQzXJkI3doQcYRIREQGQkNyrVasGAPjpp58wYsQItGvXTvagyhqpbem63D/gl/Ix0ny7YpE2HrWRBS/kozaysAjjkebbFX4pH/MxOCIikpXd3vJLlizBtWvXkJWVBa1Wi1WrVmHJkvLV09vkH4xaORdwFsUn5btt6b6RkfA7dhCjli5H7PqW8NZnw+gdCE3un9DNXQRERrowciIiKo/sltyPHDmChQsXwtfXFz169MClS5dcEVeZon6lP4Zp15S4TqG29PBw6JYtge/ta1AXmOGb8zt0YTWALVtcEC0REZV3dpN7QUEBTCYTVCoVCgoKoFaXv1lideNHIla7uvRt6Wo18PrrwLffAqdPyxgpERGRhOQ+cOBAREVF4cyZM+jVqxf69y+HPb3Dw4tvS9fGS2tLf+01oFUr4PZt18VNRETlkt0298jISPzzn//EhQsXUKNGDQQFBbkirrKnqLZ0/2BoovtDN1bCWPEhIUB6umtiJSKicq3Y5B4fH1/sRvPmzZMlmDLvr7b0u0PH+pZmH9nZ1n9PPOHU0IiIiO4qNrlnZGTAaDSia9euaNy4MYQQrozLMwkBPPccUL06UJ5n1iMiIlkV2+a+bds2LF++HCaTCatWrcLRo0dRs2ZNtGrVypXxeRaVCoiOBvbsAc6cUToaIiLyUCV2qKtbty4mTJiAjz/+GM2bN8fixYvRu3dvV8XmmQYPBjQaILHkYWqJiIhKy25veb1ejy+++AIffPABsrOz0bVrV1fE5blCQ4GuXYGkJCAvT+loiIjIAxXb5r5jxw5s374dV65cQYcOHTBz5kzUqFHDlbF5rpgY4IsvgH37gLZtlY6GiIg8TLHJfezYsahduzaeeOIJnD59GkuXLrUtW7x4sUuC81gdOgCZmRxjnoiIZFFscv/4449dGUf5olb/ndiFsHa0IyIicpJik3vTpk1dGUf5Y7EAffoA9eoBCQlKR0NERB6k/A0UX1ao1UB+PrB6tfSOdVlZMMWOxZ2AarCoNbgTUA2m2LFAVpa8sRIRkVthcldSTAzw++/A1q32192xA4aGzfFeog8a5OxHBWFCg5z9eC/RB4aGzYEdO+SPl4iI3AKTu5JefBF49FFg1aqS18vKgqHnq2iXuxWT8ufiLMJRAC+cRTgm5c9Fu9ytMPR8lSV4IiICIFNyt1gsePvtt9GnTx9ER0fjwoULD6xz69YtdOjQASaTCQCQk5ODoUOHYsCAARg0aBBu3LghR2hli0YDREXB9M13uFOxSrFV7abFy7Ai/3UcRIsid3MQLbAyfyhMS5e7KnIiIirDZEnuaWlpyMvLQ3JyMsaPH4/58+cXWr53714MHjwY2dnZtvdSU1NRt25dfPrpp+jUqRPWrFkjR2hly44dMKz6BO+px6CB/mCxVe2WTzbgg/whJe5qZf5QFKzf4IqoiYiojJMluR85csQ2Bn2jRo2QkZFR+KBqNZKSkhAYGGh7r27dujAYDACso+J5edmdjda93a1qv7MNkywLSqxq1+Vk4wJqlbi7i6gJb312iesQEVH5IEsG1ev18Pf3t73WaDQwm822hN2yZcsHtqlUqRL27duHTp064fbt2/j000/lCK3MkFTVnjcEo5Yuh8W3EmrlXsBZFD/oTU1chNE/uHTT0BIRkUeRpeTu7+9vK4UD1jZ4eyXxZcuWYejQofjqq6+wZs0ajBo1So7QygxJVe3m11GwfgPUA6MxTFtyM8VwbSI00f2dGSIREbkpWZJ7REQE0tPTAQBHjx5F3bp17W4TEBCAihUrAgAqV65c6ObAE+n00qvadeNHIla7Gs1xoMj1muMAhmsToRs7Qo5QiYjIzciS3Nu3b48KFSqgb9++mDdvHuLj45GUlITdu3cXu83o0aPx5ZdfYsCAARg5ciRmz54tR2hlhsk/GLXw4FME97pb1Y7wcPilfIw0365YpI1HbWTBC/mojSws0k5Gmm9X+KV8zLHqiYgIAKASQgilgyitqKgopKamKh1GqZhix+K9RB9Myp9b7DqLtPEYFWOCbtkS6xtZWTAtXY6C9RvgnZMNo6gATcf21uVM7EREHk9q3uMgNgopVVV7eDh0y5bA9/Y1qPOM8A3yga7KP5jYiYioECZ3pZRY1R5vv6rdywvo3BnYvh0wm10bOxERlWlM7kqKjITfsYMYFWPC8YCWMKl9cDygJUbFmOB37CAQGVny9uPHA198YZ2EhoiI6C8ePlKMG/irqh1/tas79Jx6w4ayhERERO6NRT5398svwPTpgPv2iyQiIidjcnd3P/4IzJoFHDumdCRERFRGMLm7u86dAZUK2LKldNtnZcEUOxZ3AqoVOysdERG5FyZ3d1etGtCiRemS+44dMDRsjvcSfdAgZ3+xs9IREZF7YXL3BN26AT/9BFy8KH2bu7PS5W7FpPy5Jc5KR0RE7oXJ3RN07w5UqgScPCl5E0mz0uUPhWnpcsfjYVU/EZGimNw9Qd26wO+/Ax06SN5E0qx0+UNRsH6DY7Gwqp+ISHF8zt1TeHlZH4cTQtKgNo7MSifZPVX999YI3K3qT83vgrSeXa0D9HDIXCIi2bDk7ikuXQLq1AE2bpS0ukOz0kkka1U/ERFJxuTuKR55BDAYJPeaV7/SH8O0a0pcZ7g2EZro/pJDkK2qn4iIHMLk7inUaqBrV2ubtslkd/VSzUpnb59yVPUTEZHDmNw9SbdugF4P7Nljf927s9J5d8YiTVzhWekwHmkVOpU8K10R5KjqJyIixzG5e5IXXgD8/aVVzZvN1lnpMg5j1LD8wrPSVd0Ev4oa4J//dOjwclT1ExGR45jcPYm3NzBnDtClS8nrCWFdZ9Ik26x0vrevQV1ghu/ta9Bt/wK4dQuYMcOhw8tR1U9ERI5jcvc0b74JvPRSyeusXw98/TVQs2bRy595BoiJAZYts/bCl+puVb9vVyzSxheu6ldNRJpvV4er+omIyHF8zt0TnToFXLsGtGnz4LLffwfGjrVWucfGFr+POXOAfv2AGjWkHzclBfjqK/gd3INRHyYhdn1LeOuzYdT4QyPyoTt8GHjqKcfPh4iIHMKSuyeKjQWGDy962ZtvWjvdJSaWPNhN5cp/3xzk5to/5pUrwBtvABkZwBNPFK7q/79N0JlzOfwsEZGLMLl7ou7dgV9/BU6fLvz+hQvAtm3AW28BTz4pbV/vvw888QTw55/FryMEMHgwcOeOtcpfqy28vG1bIDAQ+Pxzx86DiIhKhcndE3Xtav15f6/5WrWAEyeAuDjp+2rWzNruPmtW8eusWAHs3AksXgzUq/fgcq0WePllSc/fl4gT0hARScLk7onMZpgqP4I78TP/ToK9BgCZmcBjjwEVKkjfV9OmwJAhwLvvWm8M7nfnDpCQAERGAsOGFb+f1auBzz5z+FRsOCENEZFkTO6e5m4S/N8raFDwy99JMCUUhqeeLV0SnDcPqFgRGDIEptgxhUvO46cAycnA2rWASlX8Pu4uk9J+fz/OPU9E5BAmd09ybxK0LCicBPEO2uV9VbokGBwM9O8Pw6HjeG+1932gcC6LAAATcElEQVQlZ28YIl8Gfv7Z/n6mT7dOblNQ4NDhOSENEZFjmNw9iGxJMCsLhqRktEMaJpnn31dynie95Fy/vrVX/f79Dh2eE9IQETmGyd2DyJUEnXbT0KkToNMBqakOHZ8T0hAROYbJ3YPIlQSddtNQsSLQoYM1uQsh+fiyTkjDHvhE5IGY3D2IXEnQqTcNL78MXLwIHDki+fiyTUjDHvhEJJWbFQSY3D2IXEnQqTcNXbpYH6urVfLNwr1040ci1muVcyekYQ98IpLKDQsCTO4eRK5Z2Zx60xAUZB0Ct0oV6QGEh8Mvsg3S0A6LvCbfN/f8BKShHfxW/duxuefZA5+IpHDTggCTuycpaVY2bXypZ2Vz+k2DXg+sW+fYh6FvX/jFDsKoN/IKzz3fLxt+LzS3zmXvAPbAJyIp3LYgINxYjx49lA6hbMrMFMYRY4UhoJooUGuEIaCaMI4YK0RmZun3+dVXQu8bLBZpJ4vayBReyBO1kSkWaScLvW+wEF99JX1fV68KoVIJMXNm6eN5SAUqtdAgX1h79hX9zwt5okCtKd0BMjOFcfgYkVuxqihQqUVuxarCOHzMw10DInIuCZ/T3IpVRW1klvhdURuZwhBQzSUhS817spTcLRYL3n77bfTp0wfR0dG4cOHB9tpbt26hQ4cOMP013viqVasQHR2N6OhodOvWDS1btpQjtPIhPLzwrGy3r0G3bMnDzaMeGQm/YwcxKsZUuOQcY4LfsYPW4WelCgkBWraU9khcZiYwfz5gMJS83pUr1jH1758spxiy9sB3w/Y5onJH4ufUbR/FlePOYufOnSIuLk4IIcTPP/8shg0bVmh5enq66Natm2jcuLEwGo0PbB8TEyPS09PtHocldze2ZIn1ltdeSXbAACF8fIS4cqXk9S5dEqJSJSGaNhUiP9/u4Y2DYsRCTCjxbnwRxgtj995/bySlNJ6ZKfS+waI59he5z+bYb63pYAmeSDkOfE5zdYHSSu5+wYX2L1fNnaIl9yNHjqBVq1YAgEaNGiEjI6PQcrVajaSkJAQGBj6w7a5duxAQEGDbnjxUjx7WnyWV3jMygA0brB3wQkNL3l/16sAHHwCHDwNz5pS87rFj0O3chlisKLkfgeoD6CIaWN+QeJfvcPucmz1eQ+QW7HyuJH1OTa/BtHQ51AOjMUybWOLhhmMFNIbbQN++wJo1ZaPm7qFvI4owZcoU8Z///Mf2uk2bNiK/iNJU27ZtHyi5R0VFifPnz0s6Dkvubq5JEyGio4tf3r27EAEBQty8KX2fAwYIoVYLY1S/4u+aBw0S4pFHhHj33ZL7EaSmClFQYL3L11WSdpfvSPvcX/0YFmrjRW1kCg3yRW1kioXaeMf7MRB5OqmlYQmfK4c+p1JL+bGxQnh7C73KT9aaO6l5T5bkPnfuXLF9+3bb61atWhW53v3J/cyZM2LQoEGSj8Pk7uZycopfduiQ9dMwe7Zj+9y0SehVfmKhasJ9H+x7Ov4ZDEJcvmxdX0LnQ+Pw0far8NUThbFuA1EAlbSOelCz+p5IKqk3wlISsU9lUQAHO9RK7FBsHBgjFnrFlfxdoZ1s/Y4pJUWT+9dff12ozX3IkCFFrnd/cv/oo4/E2rVrJR+Hyd1DWCwPvnf0qBA9egjx55/S9yNTe7fku3yVr8jV+EtaNwd+YqE2XtYvASKncqQdWeq6Tu7HYhw+xv7nCuOEAT6O94CXUBBwRc96RZN7QUGBmDZtmujTp4/o3bu3yMzMFGvXrhVpaWmF1rs/uc+YMUN88803ko/D5O4BJk0SonNnp+xK0gdbG+dwwnTksTlJMXhNEgavimXq8RpyA0o+XulIE5LUdSWuJ+1zPVkYh40Wuf5VpN1cewXIcnMt+yO2QuHk7ipM7h5g2jQh1Gohfv/d+tpiEWLePGvvdwfJddcsR/ucK74EFCVHIirPYwco2T/DkRoxqevu3i29t7rUzx98pDeLqeRpFvP4krurMLl7gK1bhREVRK53JesXtk+QMKKCEAkJDu9KroQpueRw9y5fQvtcWRsYw6nkSETlufOhwo9XOvL/X+q6hgbP2l9PPUEYu/WS/rlWqaU/tnZPh1anDMxVir9VaTG5U9l39wsb93V+w4RSfbhkS5il+XK10z7nii8Bp1PqOf9yPnaA0v9XJH+uvCqKXI2f5FK2pPV0lRz6XDv8t3L2aJ4u+L/K5E5lmwwfAlm/BJ19ly/l/HWVrH0Siupw6GrObh914BoondyUpnQtj+SSM9QOPC0icT2p/VjuXv+ycCMoQ43AvZjcqUyT5Qtb7g+2s+/y7X0J/Otf1sBHj7Y9b69IO7bUv+upUyLXL9jpiUjp5KY0Wftn2Lv+RqNDf3/p7eO+zn/O/G7MMidXyX9XZ8/v8RcmdyrTZPvCLgsfbEeU9CVQUCDEmDHWP0arVoq1Y0u+EYvs5lCJTCqP73xoh9yflWKv/4QJQjz2mDA+30GZNncH+7EUImNyVRqTO5VpspdGPOWDbbEIERcn9PBRrB1bcnKpWFXkeldiyd3JjMPHiIUaOwOjYLwwRnb7eyN7JXIp1x8+QtSvL8QnnyjaW77QOXnK5/ohMLlTmVbev7AdYf1ynyS9lCN1n3Z7K08UxrB6Do3mJe05f8fGGjA+30EsxHinnr+NOzxet3at0MO35ESo9hfinXes60uokZF0nTQThTF2TKF9Sio5S13X3WrZyggmdyrTynsnKUeU6kbITtKSPuqen2OPF0kpuan8hNi61f6Jm81CjB8vBCD0an/n96Vwh8frvv1WCG9vIWrXFnqfEhLhtm3WWp7MTKGvEGj3b5XrEyTLCG0Or8vSuMOY3KlsKwu9Wt2Ew00YEpKW00fdk9o+6h0kROXKQvj6CrFjR/E3IT//LMRLL1l3PnKkENu22Z/k58AB6X9UV3S+dEaNwIULQnTrJsSNGxLnQRgjFqonlnytME6WvhHkGkzuVPaxWk4Sh0fI86lstwo315GxtZ39nP+VK0J07CjE6tXF34T4VBaiWjUhVqyQts+YGCF8fIT4/ntJf1NXPDYpqUaguJuAr7+2dqh0kCOjubFZzD0xuZN7YLWcXVLHqzeOGCuMrw2z3z6N8cJQuYZjs1cp8Zy/IyXna9eEqFNHiH/8wzrpkLOaJeQc8Ki4mwCvOKGHrxD9+jl2bCG9lucOdGwWc1NM7kSeQoae7bn+lRXtrSxLyfn8eSFq1BAiMFDofSo7rVlClvN65TVJU5PKNbZ5qa4/lQlM7kSeRGLJ2aGkpWCziGwl55077fcs9w2WZbAdR84rxytALPSa7PSSs0M3TWwWc0tM7kSeRo75pBVqFpG15GyvucErzjqIir3kinHC2KCJEH/+ad25hE5yUs/LAG/lmwXunhObxdwKkztROeQujxgqPT2vpGpprwDri1q1hEhIsN9J7rffJHdUlLW3OkvkHo3Jnag8cpNHDOW6CXF6s8S+fUKEhUmq6heZmcLYrLWk6naD9h/y9lZnidxjMbkTlVfuUHKT6SZEjmYJY8xI+8O/auMcmpXMOOA1t6hhobKHyZ2oPHOHkpsMNyFy1Ag4fMMg5bzcpIaFyh4mdyIq+5x9EyJD0ixV5z8p5+UONSxU5kjNeyohhICbioqKQmpqqtJhEFFZsmMHDD1fxcr8oViZPxQXURM1cRHDtYkYrk2EX8rHQGSk5N3dCaiGBjn7cRbhxa5TG1k4HtASvrevORZrVhZMS5ejYP0GeOuzYfQPhia6P3RjRwDhxR+Pyi+peU/tgliIiFwnMhJ+xw5iVIwJxwNawqT2wfGAlhgVY4LfsYMOJXYAUL/SH8O0a0pcZ7g2EZro/o7HGh4O3bIl8L19DeoCM3xvX4Nu2RImdnpoXkoHQETkdH8lTSxbAgDwfYhd6caPROxHzZGa3wUH0eKB5c1xAMO1idCNPfgQRyFyLpbciYhKEh4Ov5SPkebbFYu08aiNLHghH7WRhUXaeKT5drVW9bO0TWUIkzsRkT1Oruonkhur5YmIpHBiVT+R3FhyJyIi8jBM7kRERB6GyZ2IiMjDuHWb++XLlxEVFaV0GERERC5x+fJlSeu59Qh1RERE9CBWyxMREXkYJnciIiIPw+RORETkYZjciYiIPAyTOxERkYdhciciIvIwbv2ce0ksFgtmzJiBU6dOoUKFCkhISECtWrWUDuuhde/eHRUrVgQA1KhRA/PmzVM4oofzyy+/4J133sH69etx4cIFTJ48GSqVCnXq1MH06dOhVrvf/ee953TixAkMGzYMjz32GACgX79+6NSpk7IBOig/Px9TpkzB5cuXkZeXh+HDh+Pxxx9362tV1DmFhIS4/bUqKCjAW2+9hXPnzkGj0WDevHkQQrj1tSrqnHJyctz+WgHAzZs3ERUVhbVr18LLy8u510l4qJ07d4q4uDghhBA///yzGDZsmMIRPTyj0Si6deumdBhOs2rVKtG5c2fRq1cvIYQQb7zxhjh48KAQQohp06aJXbt2KRleqdx/Tps2bRJr1qxROKqHk5KSIhISEoQQQty6dUu0adPG7a9VUefkCdfqm2++EZMnTxZCCHHw4EExbNgwt79WRZ2TJ1yrvLw8ERsbKzp06CAyMzOdfp3c5/bNQUeOHEGrVq0AAI0aNUJGRobCET28kydP4s6dOxg8eDBeffVVHD16VOmQHkrNmjXx/vvv216fOHECTZs2BQC0bt0a+/fvVyq0Urv/nDIyMvCf//wHAwYMwJQpU6DX6xWMrnQ6duyI0aNH215rNBq3v1ZFnZMnXKt27dph9uzZAIArV64gODjY7a9VUefkCddqwYIF6Nu3L6pWrQrA+d9/Hpvc9Xo9/P39ba81Gg3MZrOCET08b29vDBkyBGvWrMHMmTMxYcIEtz6nF198EV5ef7cMCSGgUqkAAH5+fsjJyVEqtFK7/5waNmyISZMm4dNPP8Wjjz6K5cuXKxhd6fj5+cHf3x96vR5vvvkmxowZ4/bXqqhz8oRrBQBeXl6Ii4vD7Nmz8eKLL7r9tQIePCd3v1apqakICgqyFUAB53//eWxy9/f3h8FgsL22WCyFvnTdUVhYGLp27QqVSoWwsDAEBgbixo0bSoflNPe2LxkMBgQEBCgYjXO0b98eDRo0sP3+3//+V+GISufq1at49dVX0a1bN3Tp0sUjrtX95+Qp1wqwlgp37tyJadOmwWQy2d5312sFFD6n5557zq2v1eeff479+/cjOjoav/76K+Li4nDr1i3bcmdcJ49N7hEREUhPTwcAHD16FHXr1lU4ooeXkpKC+fPnAwCuX78OvV6PKlWqKByV89SvXx+HDh0CAKSnp+OZZ55ROKKHN2TIEBw7dgwAcODAATz11FMKR+S47OxsDB48GBMnTkTPnj0BuP+1KuqcPOFaffnll/jwww8BAD4+PlCpVGjQoIFbX6uizmnkyJFufa0+/fRTfPLJJ1i/fj2efPJJLFiwAK1bt3bqdfLYiWPu9pY/ffo0hBCYO3cuwsPDlQ7roeTl5SE+Ph5XrlyBSqXChAkTEBERoXRYD+XSpUsYN24cNm3ahHPnzmHatGnIz89H7dq1kZCQAI1Go3SIDrv3nE6cOIHZs2dDq9UiODgYs2fPLtRc5A4SEhKwY8cO1K5d2/be1KlTkZCQ4LbXqqhzGjNmDBYtWuTW1yo3Nxfx8fHIzs6G2WzG66+/jvDwcLf+XBV1TqGhoW7/uborOjoaM2bMgFqtdup18tjkTkREVF55bLU8ERFRecXkTkRE5GGY3ImIiDwMkzsREZGHYXInIiLyMEzuROXIoUOHMHbsWNvrr7/+Gp07d8aVK1ds76WkpGDSpEmFtvv111/Rr1+/YvcbHR2NrKws5wdMRKXC5E5UTm3fvh2rVq3CunXr8Mgjj9jef+mll3DgwAHk5uba3ktJSUGfPn2UCJOISoHJnagc+vLLL5GUlISkpCQEBwcXWubj44MXXngBu3btAmAdPCk9PR0dO3aEXq/H6NGjMXjwYPTo0QMbNmwotO3777+PjRs3AgCysrIQHR0NADh8+DD69euHV155BfHx8cjPz3fBWRKVX0zuROXMjz/+iE2bNuH27dsoKCgocp3evXtjy5YtAIC0tDS0adMG3t7euHDhAl566SWsXbsWH3zwAdatW2f3eEIITJs2DcuWLcMnn3yCatWq4YsvvnDmKRHRfdx7JhUicliVKlWQlJSEzZs3Y+LEiVi9enWhiWAA4KmnnsKff/6J69evIzU1FXFxcQCA4OBgfPTRR9i1axf8/f0lzUp469Yt/P777xgzZgwAwGg0omXLls4/MSKyYcmdqJypVasWdDodXnnlFWi1WqxcubLI9Xr27In169fDaDSiTp06AIC1a9eiUaNGeOedd9CxY0fcP3q1TqezzVR44sQJAEClSpUQEhKCFStWYP369Rg2bBiaNWsm4xkSEUvuROXY3Llz0b17dzRp0gTNmzcvtKxLly54/vnnMXXqVNt7bdu2xYwZM7Bt2zYEBgZCo9EgLy/PtjwyMhJjxozBDz/8YJuSU61WY+rUqYiJiYEQAn5+fli4cKFrTpConOLEMURERB6G1fJEREQehsmdiIjIwzC5ExEReRgmdyIiIg/D5E5ERORhmNyJiIg8DJM7ERGRh/l/wfdyjOfT4ekAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"error = []\n",
"# Calculating error for K values between 1 and 40\n",
"for i in range(1, 40): \n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" knn.fit(pca_X_train, pca_y_train)\n",
" pred_i = knn.predict(pca_X_test)\n",
" error.append(np.mean(pred_i != pca_y_test))\n",
"\n",
"plt.figure(figsize=(8, 4)) \n",
"plt.plot(range(1, 40), error, color='red', linestyle='dashed', marker='o', \n",
" markerfacecolor='blue', markersize=10)\n",
"plt.title('Error Rate K Value') \n",
"plt.xlabel('K Value') \n",
"plt.ylabel('Mean Error') "
]
}
],
"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.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@bryanevan
Copy link
Author

adult income data

@bryanevan
Copy link
Author

adult income data copy

@bryanevan
Copy link
Author

adult income data 1

@bryanevan
Copy link
Author

adult income data 2

@bryanevan
Copy link
Author

adult income data 3

@bryanevan
Copy link
Author

adult income data 4

@bryanevan
Copy link
Author

adult income data 5

@bryanevan
Copy link
Author

adult income data 6

@bryanevan
Copy link
Author

adult income data 7

@bryanevan
Copy link
Author

adult income data 8

@bryanevan
Copy link
Author

adult income data 9

@bryanevan
Copy link
Author

adult income data 10

@bryanevan
Copy link
Author

adult income data 11

@bryanevan
Copy link
Author

adult income data 12

@bryanevan
Copy link
Author

adult income data 13

@bryanevan
Copy link
Author

adult income data 14

@bryanevan
Copy link
Author

adult income data 15

@bryanevan
Copy link
Author

adult income data 16

@bryanevan
Copy link
Author

adult income data 17

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment