Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
{
"cells": [
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import xgboost as xgb\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn.metrics import classification_report\n",
"from sklearn.metrics import plot_confusion_matrix\n",
"from sklearn.metrics import classification_report\n",
"from sklearn.model_selection import cross_val_score\n",
"from sklearn.model_selection import RepeatedStratifiedKFold\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.feature_selection import RFE\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"\n",
"import numpy as np\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import umap\n",
"import umap.plot\n",
"\n",
"from imblearn.under_sampling import RandomUnderSampler"
]
},
{
"cell_type": "code",
"execution_count": 101,
"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>url</th>\n",
" <th>typealyzer</th>\n",
" <th>actual</th>\n",
" <th>e</th>\n",
" <th>s</th>\n",
" <th>t</th>\n",
" <th>sntf_s</th>\n",
" <th>sntf_n</th>\n",
" <th>sntf_t</th>\n",
" <th>sntf_f</th>\n",
" <th>...</th>\n",
" <th>sad</th>\n",
" <th>you</th>\n",
" <th>cogmech</th>\n",
" <th>auxverb</th>\n",
" <th>they</th>\n",
" <th>incl</th>\n",
" <th>money</th>\n",
" <th>feel</th>\n",
" <th>we</th>\n",
" <th>hear</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>http://adropofcolour.tumblr.com</td>\n",
" <td>ISFP</td>\n",
" <td>INFJ</td>\n",
" <td>0.291281</td>\n",
" <td>0.787844</td>\n",
" <td>0.460961</td>\n",
" <td>0.663515</td>\n",
" <td>0.178565</td>\n",
" <td>0.069282</td>\n",
" <td>0.088638</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.019704</td>\n",
" <td>0.098522</td>\n",
" <td>0.147783</td>\n",
" <td>0.000000</td>\n",
" <td>0.039409</td>\n",
" <td>0.009852</td>\n",
" <td>0.019704</td>\n",
" <td>0.044335</td>\n",
" <td>0.009852</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>http://godheadcomplex.tumblr.com</td>\n",
" <td>ESFP</td>\n",
" <td>INFP</td>\n",
" <td>0.883579</td>\n",
" <td>0.951693</td>\n",
" <td>0.238407</td>\n",
" <td>0.855921</td>\n",
" <td>0.046931</td>\n",
" <td>0.021850</td>\n",
" <td>0.075297</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.017513</td>\n",
" <td>0.201401</td>\n",
" <td>0.084063</td>\n",
" <td>0.001751</td>\n",
" <td>0.056042</td>\n",
" <td>0.007005</td>\n",
" <td>0.017513</td>\n",
" <td>0.047285</td>\n",
" <td>0.003503</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>http://chaotikaeon2.tumblr.com</td>\n",
" <td>INTJ</td>\n",
" <td>INTP</td>\n",
" <td>0.332444</td>\n",
" <td>0.357863</td>\n",
" <td>0.591322</td>\n",
" <td>0.147668</td>\n",
" <td>0.252326</td>\n",
" <td>0.339831</td>\n",
" <td>0.260175</td>\n",
" <td>...</td>\n",
" <td>0.003283</td>\n",
" <td>0.014540</td>\n",
" <td>0.181989</td>\n",
" <td>0.114916</td>\n",
" <td>0.000938</td>\n",
" <td>0.071295</td>\n",
" <td>0.010319</td>\n",
" <td>0.008912</td>\n",
" <td>0.054409</td>\n",
" <td>0.014540</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>http://perpetually-in-transit.blogspot.com</td>\n",
" <td>ESFP</td>\n",
" <td>ENFJ</td>\n",
" <td>0.944394</td>\n",
" <td>0.943192</td>\n",
" <td>0.105527</td>\n",
" <td>0.778825</td>\n",
" <td>0.051134</td>\n",
" <td>0.017299</td>\n",
" <td>0.152742</td>\n",
" <td>...</td>\n",
" <td>0.002497</td>\n",
" <td>0.018727</td>\n",
" <td>0.207241</td>\n",
" <td>0.104869</td>\n",
" <td>0.002497</td>\n",
" <td>0.049938</td>\n",
" <td>0.014981</td>\n",
" <td>0.011236</td>\n",
" <td>0.041199</td>\n",
" <td>0.017478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>http://museofmystery.wordpress.com/2012/08/29/...</td>\n",
" <td>ISTP</td>\n",
" <td>INFP</td>\n",
" <td>0.073352</td>\n",
" <td>0.850472</td>\n",
" <td>0.608812</td>\n",
" <td>0.628322</td>\n",
" <td>0.112762</td>\n",
" <td>0.149270</td>\n",
" <td>0.109646</td>\n",
" <td>...</td>\n",
" <td>0.001031</td>\n",
" <td>0.005155</td>\n",
" <td>0.215464</td>\n",
" <td>0.122680</td>\n",
" <td>0.005155</td>\n",
" <td>0.043299</td>\n",
" <td>0.019588</td>\n",
" <td>0.002062</td>\n",
" <td>0.021649</td>\n",
" <td>0.012371</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",
" <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>25432</th>\n",
" <td>http://pistoche.tumblr.com</td>\n",
" <td>ESFP</td>\n",
" <td>INTJ</td>\n",
" <td>0.685653</td>\n",
" <td>0.969891</td>\n",
" <td>0.480241</td>\n",
" <td>0.960824</td>\n",
" <td>0.029758</td>\n",
" <td>0.004220</td>\n",
" <td>0.005199</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25433</th>\n",
" <td>http://lokh.tumblr.com</td>\n",
" <td>ISTP</td>\n",
" <td>INTP</td>\n",
" <td>0.201637</td>\n",
" <td>0.553602</td>\n",
" <td>0.662618</td>\n",
" <td>0.468074</td>\n",
" <td>0.374926</td>\n",
" <td>0.099968</td>\n",
" <td>0.057033</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25435</th>\n",
" <td>http://readerdye.tumblr.com</td>\n",
" <td>ISTP</td>\n",
" <td>INFP</td>\n",
" <td>0.375704</td>\n",
" <td>0.756593</td>\n",
" <td>0.740688</td>\n",
" <td>0.697536</td>\n",
" <td>0.229456</td>\n",
" <td>0.051684</td>\n",
" <td>0.021324</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25436</th>\n",
" <td>http://loveisart.tumblr.com</td>\n",
" <td>ISTP</td>\n",
" <td>ENFP</td>\n",
" <td>0.002516</td>\n",
" <td>0.848823</td>\n",
" <td>0.661502</td>\n",
" <td>0.584138</td>\n",
" <td>0.118812</td>\n",
" <td>0.192779</td>\n",
" <td>0.104271</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25437</th>\n",
" <td>http://angelalll.tumblr.com</td>\n",
" <td>ESTP</td>\n",
" <td>INFP</td>\n",
" <td>0.814616</td>\n",
" <td>0.652280</td>\n",
" <td>0.832608</td>\n",
" <td>0.518149</td>\n",
" <td>0.281291</td>\n",
" <td>0.163392</td>\n",
" <td>0.037168</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>22919 rows × 115 columns</p>\n",
"</div>"
],
"text/plain": [
" url typealyzer actual \\\n",
"1 http://adropofcolour.tumblr.com ISFP INFJ \n",
"2 http://godheadcomplex.tumblr.com ESFP INFP \n",
"3 http://chaotikaeon2.tumblr.com INTJ INTP \n",
"5 http://perpetually-in-transit.blogspot.com ESFP ENFJ \n",
"10 http://museofmystery.wordpress.com/2012/08/29/... ISTP INFP \n",
"... ... ... ... \n",
"25432 http://pistoche.tumblr.com ESFP INTJ \n",
"25433 http://lokh.tumblr.com ISTP INTP \n",
"25435 http://readerdye.tumblr.com ISTP INFP \n",
"25436 http://loveisart.tumblr.com ISTP ENFP \n",
"25437 http://angelalll.tumblr.com ESTP INFP \n",
"\n",
" e s t sntf_s sntf_n sntf_t sntf_f \\\n",
"1 0.291281 0.787844 0.460961 0.663515 0.178565 0.069282 0.088638 \n",
"2 0.883579 0.951693 0.238407 0.855921 0.046931 0.021850 0.075297 \n",
"3 0.332444 0.357863 0.591322 0.147668 0.252326 0.339831 0.260175 \n",
"5 0.944394 0.943192 0.105527 0.778825 0.051134 0.017299 0.152742 \n",
"10 0.073352 0.850472 0.608812 0.628322 0.112762 0.149270 0.109646 \n",
"... ... ... ... ... ... ... ... \n",
"25432 0.685653 0.969891 0.480241 0.960824 0.029758 0.004220 0.005199 \n",
"25433 0.201637 0.553602 0.662618 0.468074 0.374926 0.099968 0.057033 \n",
"25435 0.375704 0.756593 0.740688 0.697536 0.229456 0.051684 0.021324 \n",
"25436 0.002516 0.848823 0.661502 0.584138 0.118812 0.192779 0.104271 \n",
"25437 0.814616 0.652280 0.832608 0.518149 0.281291 0.163392 0.037168 \n",
"\n",
" ... sad you cogmech auxverb they incl \\\n",
"1 ... 0.000000 0.019704 0.098522 0.147783 0.000000 0.039409 \n",
"2 ... 0.000000 0.017513 0.201401 0.084063 0.001751 0.056042 \n",
"3 ... 0.003283 0.014540 0.181989 0.114916 0.000938 0.071295 \n",
"5 ... 0.002497 0.018727 0.207241 0.104869 0.002497 0.049938 \n",
"10 ... 0.001031 0.005155 0.215464 0.122680 0.005155 0.043299 \n",
"... ... ... ... ... ... ... ... \n",
"25432 ... NaN NaN NaN NaN NaN NaN \n",
"25433 ... NaN NaN NaN NaN NaN NaN \n",
"25435 ... NaN NaN NaN NaN NaN NaN \n",
"25436 ... NaN NaN NaN NaN NaN NaN \n",
"25437 ... NaN NaN NaN NaN NaN NaN \n",
"\n",
" money feel we hear \n",
"1 0.009852 0.019704 0.044335 0.009852 \n",
"2 0.007005 0.017513 0.047285 0.003503 \n",
"3 0.010319 0.008912 0.054409 0.014540 \n",
"5 0.014981 0.011236 0.041199 0.017478 \n",
"10 0.019588 0.002062 0.021649 0.012371 \n",
"... ... ... ... ... \n",
"25432 NaN NaN NaN NaN \n",
"25433 NaN NaN NaN NaN \n",
"25435 NaN NaN NaN NaN \n",
"25436 NaN NaN NaN NaN \n",
"25437 NaN NaN NaN NaN \n",
"\n",
"[22919 rows x 115 columns]"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_pickle(\"dataframe_survey_2018-01-23_enriched.pickle\")\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 f\n",
"2 t\n",
"3 f\n",
"5 f\n",
"10 t\n",
" ..\n",
"25432 f\n",
"25433 f\n",
"25435 t\n",
"25436 f\n",
"25437 n\n",
"Name: func, Length: 22919, dtype: object"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.func # 4 cognitive functions without their attitudinal directions introversion/extraversion"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/anaconda3/envs/mindalyzer/lib/python3.6/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" This is separate from the ipykernel package so we can avoid doing imports until\n"
]
},
{
"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>negate</th>\n",
" <th>ppron</th>\n",
" <th>nonfl</th>\n",
" <th>i</th>\n",
" <th>relativ</th>\n",
" <th>percept</th>\n",
" <th>quant</th>\n",
" <th>affect</th>\n",
" <th>shehe</th>\n",
" <th>achieve</th>\n",
" <th>...</th>\n",
" <th>you</th>\n",
" <th>cogmech</th>\n",
" <th>auxverb</th>\n",
" <th>they</th>\n",
" <th>incl</th>\n",
" <th>money</th>\n",
" <th>feel</th>\n",
" <th>we</th>\n",
" <th>hear</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.034483</td>\n",
" <td>0.428571</td>\n",
" <td>0.049261</td>\n",
" <td>0.334975</td>\n",
" <td>0.197044</td>\n",
" <td>0.039409</td>\n",
" <td>0.024631</td>\n",
" <td>0.088670</td>\n",
" <td>0.029557</td>\n",
" <td>0.024631</td>\n",
" <td>...</td>\n",
" <td>0.019704</td>\n",
" <td>0.098522</td>\n",
" <td>0.147783</td>\n",
" <td>0.000000</td>\n",
" <td>0.039409</td>\n",
" <td>0.009852</td>\n",
" <td>0.019704</td>\n",
" <td>0.044335</td>\n",
" <td>0.009852</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.040280</td>\n",
" <td>0.416813</td>\n",
" <td>0.063047</td>\n",
" <td>0.285464</td>\n",
" <td>0.316988</td>\n",
" <td>0.031524</td>\n",
" <td>0.029772</td>\n",
" <td>0.082312</td>\n",
" <td>0.064799</td>\n",
" <td>0.012259</td>\n",
" <td>...</td>\n",
" <td>0.017513</td>\n",
" <td>0.201401</td>\n",
" <td>0.084063</td>\n",
" <td>0.001751</td>\n",
" <td>0.056042</td>\n",
" <td>0.007005</td>\n",
" <td>0.017513</td>\n",
" <td>0.047285</td>\n",
" <td>0.003503</td>\n",
" <td>t</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.017824</td>\n",
" <td>0.439962</td>\n",
" <td>0.068949</td>\n",
" <td>0.277674</td>\n",
" <td>0.353189</td>\n",
" <td>0.040807</td>\n",
" <td>0.031895</td>\n",
" <td>0.090994</td>\n",
" <td>0.092402</td>\n",
" <td>0.018293</td>\n",
" <td>...</td>\n",
" <td>0.014540</td>\n",
" <td>0.181989</td>\n",
" <td>0.114916</td>\n",
" <td>0.000938</td>\n",
" <td>0.071295</td>\n",
" <td>0.010319</td>\n",
" <td>0.008912</td>\n",
" <td>0.054409</td>\n",
" <td>0.014540</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.038702</td>\n",
" <td>0.377029</td>\n",
" <td>0.049938</td>\n",
" <td>0.233458</td>\n",
" <td>0.223471</td>\n",
" <td>0.046192</td>\n",
" <td>0.041199</td>\n",
" <td>0.072409</td>\n",
" <td>0.081149</td>\n",
" <td>0.024969</td>\n",
" <td>...</td>\n",
" <td>0.018727</td>\n",
" <td>0.207241</td>\n",
" <td>0.104869</td>\n",
" <td>0.002497</td>\n",
" <td>0.049938</td>\n",
" <td>0.014981</td>\n",
" <td>0.011236</td>\n",
" <td>0.041199</td>\n",
" <td>0.017478</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.014433</td>\n",
" <td>0.479381</td>\n",
" <td>0.091753</td>\n",
" <td>0.364948</td>\n",
" <td>0.319588</td>\n",
" <td>0.026804</td>\n",
" <td>0.047423</td>\n",
" <td>0.102062</td>\n",
" <td>0.082474</td>\n",
" <td>0.030928</td>\n",
" <td>...</td>\n",
" <td>0.005155</td>\n",
" <td>0.215464</td>\n",
" <td>0.122680</td>\n",
" <td>0.005155</td>\n",
" <td>0.043299</td>\n",
" <td>0.019588</td>\n",
" <td>0.002062</td>\n",
" <td>0.021649</td>\n",
" <td>0.012371</td>\n",
" <td>t</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",
" <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>22914</th>\n",
" <td>0.091241</td>\n",
" <td>0.390511</td>\n",
" <td>0.040146</td>\n",
" <td>0.244526</td>\n",
" <td>0.306569</td>\n",
" <td>0.025547</td>\n",
" <td>0.021898</td>\n",
" <td>0.065693</td>\n",
" <td>0.025547</td>\n",
" <td>0.021898</td>\n",
" <td>...</td>\n",
" <td>0.040146</td>\n",
" <td>0.244526</td>\n",
" <td>0.069343</td>\n",
" <td>0.003650</td>\n",
" <td>0.091241</td>\n",
" <td>0.007299</td>\n",
" <td>0.000000</td>\n",
" <td>0.076642</td>\n",
" <td>0.007299</td>\n",
" <td>t</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22915</th>\n",
" <td>0.020309</td>\n",
" <td>0.508530</td>\n",
" <td>0.053615</td>\n",
" <td>0.351340</td>\n",
" <td>0.287571</td>\n",
" <td>0.049553</td>\n",
" <td>0.045491</td>\n",
" <td>0.119415</td>\n",
" <td>0.084890</td>\n",
" <td>0.017059</td>\n",
" <td>...</td>\n",
" <td>0.019090</td>\n",
" <td>0.211210</td>\n",
" <td>0.150690</td>\n",
" <td>0.012998</td>\n",
" <td>0.045085</td>\n",
" <td>0.016247</td>\n",
" <td>0.016653</td>\n",
" <td>0.040211</td>\n",
" <td>0.010154</td>\n",
" <td>n</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22916</th>\n",
" <td>0.029458</td>\n",
" <td>0.482904</td>\n",
" <td>0.061021</td>\n",
" <td>0.307207</td>\n",
" <td>0.262493</td>\n",
" <td>0.039979</td>\n",
" <td>0.028406</td>\n",
" <td>0.110994</td>\n",
" <td>0.124671</td>\n",
" <td>0.025776</td>\n",
" <td>...</td>\n",
" <td>0.017885</td>\n",
" <td>0.197791</td>\n",
" <td>0.162020</td>\n",
" <td>0.006312</td>\n",
" <td>0.042083</td>\n",
" <td>0.010521</td>\n",
" <td>0.013677</td>\n",
" <td>0.026828</td>\n",
" <td>0.010521</td>\n",
" <td>n</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22917</th>\n",
" <td>0.113971</td>\n",
" <td>0.139706</td>\n",
" <td>0.025735</td>\n",
" <td>0.084559</td>\n",
" <td>0.136029</td>\n",
" <td>0.022059</td>\n",
" <td>0.018382</td>\n",
" <td>0.040441</td>\n",
" <td>0.025735</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.014706</td>\n",
" <td>0.113971</td>\n",
" <td>0.069853</td>\n",
" <td>0.007353</td>\n",
" <td>0.011029</td>\n",
" <td>0.000000</td>\n",
" <td>0.007353</td>\n",
" <td>0.007353</td>\n",
" <td>0.000000</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22918</th>\n",
" <td>0.003861</td>\n",
" <td>0.455598</td>\n",
" <td>0.057915</td>\n",
" <td>0.333977</td>\n",
" <td>0.322394</td>\n",
" <td>0.019305</td>\n",
" <td>0.036680</td>\n",
" <td>0.073359</td>\n",
" <td>0.075290</td>\n",
" <td>0.017375</td>\n",
" <td>...</td>\n",
" <td>0.027027</td>\n",
" <td>0.133205</td>\n",
" <td>0.113900</td>\n",
" <td>0.003861</td>\n",
" <td>0.055985</td>\n",
" <td>0.003861</td>\n",
" <td>0.003861</td>\n",
" <td>0.015444</td>\n",
" <td>0.011583</td>\n",
" <td>n</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20819 rows × 65 columns</p>\n",
"</div>"
],
"text/plain": [
" negate ppron nonfl i relativ percept quant \\\n",
"1 0.034483 0.428571 0.049261 0.334975 0.197044 0.039409 0.024631 \n",
"2 0.040280 0.416813 0.063047 0.285464 0.316988 0.031524 0.029772 \n",
"3 0.017824 0.439962 0.068949 0.277674 0.353189 0.040807 0.031895 \n",
"5 0.038702 0.377029 0.049938 0.233458 0.223471 0.046192 0.041199 \n",
"10 0.014433 0.479381 0.091753 0.364948 0.319588 0.026804 0.047423 \n",
"... ... ... ... ... ... ... ... \n",
"22914 0.091241 0.390511 0.040146 0.244526 0.306569 0.025547 0.021898 \n",
"22915 0.020309 0.508530 0.053615 0.351340 0.287571 0.049553 0.045491 \n",
"22916 0.029458 0.482904 0.061021 0.307207 0.262493 0.039979 0.028406 \n",
"22917 0.113971 0.139706 0.025735 0.084559 0.136029 0.022059 0.018382 \n",
"22918 0.003861 0.455598 0.057915 0.333977 0.322394 0.019305 0.036680 \n",
"\n",
" affect shehe achieve ... you cogmech auxverb \\\n",
"1 0.088670 0.029557 0.024631 ... 0.019704 0.098522 0.147783 \n",
"2 0.082312 0.064799 0.012259 ... 0.017513 0.201401 0.084063 \n",
"3 0.090994 0.092402 0.018293 ... 0.014540 0.181989 0.114916 \n",
"5 0.072409 0.081149 0.024969 ... 0.018727 0.207241 0.104869 \n",
"10 0.102062 0.082474 0.030928 ... 0.005155 0.215464 0.122680 \n",
"... ... ... ... ... ... ... ... \n",
"22914 0.065693 0.025547 0.021898 ... 0.040146 0.244526 0.069343 \n",
"22915 0.119415 0.084890 0.017059 ... 0.019090 0.211210 0.150690 \n",
"22916 0.110994 0.124671 0.025776 ... 0.017885 0.197791 0.162020 \n",
"22917 0.040441 0.025735 0.000000 ... 0.014706 0.113971 0.069853 \n",
"22918 0.073359 0.075290 0.017375 ... 0.027027 0.133205 0.113900 \n",
"\n",
" they incl money feel we hear y \n",
"1 0.000000 0.039409 0.009852 0.019704 0.044335 0.009852 f \n",
"2 0.001751 0.056042 0.007005 0.017513 0.047285 0.003503 t \n",
"3 0.000938 0.071295 0.010319 0.008912 0.054409 0.014540 f \n",
"5 0.002497 0.049938 0.014981 0.011236 0.041199 0.017478 f \n",
"10 0.005155 0.043299 0.019588 0.002062 0.021649 0.012371 t \n",
"... ... ... ... ... ... ... .. \n",
"22914 0.003650 0.091241 0.007299 0.000000 0.076642 0.007299 t \n",
"22915 0.012998 0.045085 0.016247 0.016653 0.040211 0.010154 n \n",
"22916 0.006312 0.042083 0.010521 0.013677 0.026828 0.010521 n \n",
"22917 0.007353 0.011029 0.000000 0.007353 0.007353 0.000000 f \n",
"22918 0.003861 0.055985 0.003861 0.003861 0.015444 0.011583 n \n",
"\n",
"[20819 rows x 65 columns]"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"liwc_cols = [\"negate\",\"ppron\",\"nonfl\",\"i\",\"relativ\",\"percept\",\"quant\",\"affect\",\"shehe\",\"achieve\",\"bio\",\"leisure\",\"conj\",\"motion\",\"posemo\",\"adverb\",\"home\",\"future\",\"negemo\",\"number\",\"inhib\",\"humans\",\"pronoun\",\"excl\",\"space\",\"tentat\",\"see\",\"past\",\"anx\",\"family\",\"present\",\"health\",\"verb\",\"certain\",\"anger\",\"preps\",\"swear\",\"ingest\",\"discrep\",\"friend\",\"relig\",\"time\",\"cause\",\"article\",\"body\",\"social\",\"assent\",\"work\",\"sexual\",\"insight\",\"ipron\",\"filler\",\"death\",\"funct\",\"sad\",\"you\",\"cogmech\",\"auxverb\",\"they\",\"incl\",\"money\",\"feel\",\"we\",\"hear\"]\n",
"data = df[liwc_cols]\n",
"data[\"y\"] = df.func\n",
"data = data.dropna()\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"65\n"
]
}
],
"source": [
"print(len(data.columns))\n",
"y = data.iloc[:,[64]]\n",
"X = data.iloc[:,0:63]"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2045)"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4164, 63)"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test.values.shape"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4164,)"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_test.values.ravel().shape"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"n 6883\n",
"f 4489\n",
"t 3278\n",
"s 2005\n",
"Name: y, dtype: int64"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train.y.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 170,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(y_train.iloc[:,0])"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
" colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n",
" importance_type='gain', interaction_constraints='',\n",
" learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n",
" min_child_weight=1, missing=nan, monotone_constraints='()',\n",
" n_estimators=100, n_jobs=0, num_parallel_tree=1,\n",
" objective='multi:softprob', random_state=0, reg_alpha=0,\n",
" reg_lambda=1, scale_pos_weight=None, subsample=1,\n",
" tree_method='exact', validate_parameters=1, verbosity=None)"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = xgb.XGBClassifier()\n",
"model.fit(X_train, y_train.iloc[:,0])"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [],
"source": [
"y_pred = model.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.3547070124879923"
]
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"accuracy = accuracy_score(y_test, y_pred)\n",
"accuracy"
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqQAAAKaCAYAAADoNkt0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAA9I0lEQVR4nO3dd5xcdbnH8c+zu9lN74WQBEKJ9CJEilyVpoBeBAUUAUVAkaKg2OBesSN2BRW5wQZKERUQUaQjgrRQpAQCMYQkkJDek0125nf/mCEsMbNZIjO/Sfbzfr3mldkzZ/Y8O6zJ4/c5v3MipYQkSZKUS0PuAiRJktS12ZBKkiQpKxtSSZIkZWVDKkmSpKxsSCVJkpRVU+4CJEmSNnYH7dcrzZ1XyHb8hx5rvSmldHC2AtbBhlSSJKnK5s4r8MBNm2U7fuPwZwdnO3gnOLKXJElSVjakkiRJysqRvSRJUpUloEgxdxl1y4RUkiRJWZmQSpIkVV2ikExIKzEhlSRJ6uIi4hcRMSsinmi37TsR8XREPBYR10ZE/3avnRMRkyJiYkQc1G777hHxePm1CyMiOnN8G1JJkiT9CljzOqW3ADumlHYGngHOAYiI7YGjgR3K77koIhrL7/kpcDIwpvzo1LVPbUglSZKqrLSoKWV7rLO+lO4C5q2x7eaUUlv5y/uAkeXnhwFXpZRaU0rPAZOAPSJiONA3pXRvSikBlwGHd+bzsSGVJEna+A2OiPHtHie/xvefCNxYfj4CmNbutenlbSPKz9fcvk4uapIkSaqBzJd9mpNSGrs+b4yI/wXagMtf3rSW3VIH29fJhlSSJElrFRHHA/8NHFAew0Mp+RzVbreRwIvl7SPXsn2dHNlLkiTp30TEwcDngXenlJa1e+l64OiIaImILSgtXnogpTQDWBwRe5VX138I+GNnjmVCKkmSVGWJRCF1anqdRURcCexL6VzT6cCXKK2qbwFuKV+96b6U0ikppScj4mpgAqVR/ukppUL5W51KacV+D0rnnN5IJ0Sq4w9HkiRpY/DGXZrT327cJNvx+42Y9tD6nkNaCyakkiRJNdCZyy91VZ5DKkmSpKxsSCVJkpSVI3tJkqQqS0DBkX1FJqSSJEnKyoRUkiSpBlzUVJkJqSRJkrKyIZUkSVJWjuwlSZKqLEFd36kpNxNSSZIkZWVCKkmSVAPF3AXUMRNSSZIkZWVDKkmSpKwc2UuSJFVZInmnpg6YkEqSJCkrG1JJkiRl5chekiSp2hIUnNhXZEIqSZKkrExIJUmSqizhdUg7YkIqSZKkrGxIJUmSlJUje0mSpKoLCkTuIuqWCakkSZKyMiGVJEmqsgQUvexTRSakkiRJysqGVJIkSVk5spckSaoBFzVVZkIqSZKkrExIJUmSqixhQtoRE1JJkiRlZUMqSZKkrBzZS5Ik1UAxObKvxIRUkiRJWZmQSpIkVZmLmjpmQipJkqSsbEglSZKUlSN7SZKkKksEBXPAivxkJEmSlJUJqSRJUg142afKTEglSZKUlQ2pJEmSsnJkL0mSVGVeh7RjJqSSJEnKqq4S0uamnqlHc//cZajOFEYWc5egOtTw7MrcJagORVNj7hJUZ5YXFrOyuMJoss7VVUPao7k/e2370dxlqM4s/dby3CWoDvU4ZGruElSHGgf0z12C6sy98/+Qu4SyoJAcTFfiJyNJkqSs6iohlSRJ2hgloGgOWJGfjCRJkrKyIZUkSVJWjuwlSZJqwOuQVmZCKkmSpKxMSCVJkqosJS/71BE/GUmSJGVlQypJkqSsHNlLkiTVQNFFTRWZkEqSJCkrE1JJkqQqS0DBHLAiPxlJkiRlZUMqSZKkrBzZS5IkVZ3XIe2In4wkSZKyMiGVJEmqsgQUzQEr8pORJElSVjakkiRJysqRvSRJUg0UkndqqsSEVJIkSVnZkEqSJCkrR/aSJElVlghvHdoBPxlJkiRlZUIqSZJUA0Xv1FSRn4wkSZKysiGVJElSVo7sJUmSqiyBi5o64CcjSZKkrExIJUmSqiwR3qmpAyakkiRJysqGVJIkSVk5spckSaqBojlgRX4ykiRJysqEVJIkqcpSgoJ3aqrIT0aSJElZ2ZBKkiQpK0f2kiRJVRcU8TqklZiQSpIkKSsTUkmSpCpLuKipI34ykiRJysqGVJIkSVk5spckSaqBgjlgRX4ykiRJysqEVJIkqcoSQTF52adKTEglSZKUlQ2pJEmSsnJkL0mSVAMuaqrMT0aSJElZ2ZBKkiQpK0f2kiRJVZaAorcOrchPRpIkSVmZkEqSJFVdUMDrkFZiQipJkqSsbEglSZK6uIj4RUTMiogn2m0bGBG3RMSz5T8HtHvtnIiYFBETI+Kgdtt3j4jHy69dGBGdioVtSCVJkqrs5UVNuR6d8Cvg4DW2nQ3cllIaA9xW/pqI2B44Gtih/J6LIqKx/J6fAicDY8qPNb/nWtmQSpIkdXEppbuAeWtsPgy4tPz8UuDwdtuvSim1ppSeAyYBe0TEcKBvSunelFICLmv3ng65qEmSJKkGNsBFTcNSSjMAUkozImJoefsI4L52+00vb1tVfr7m9nWyIZUkSdr4DY6I8e2+HpdSGree32ttnXXqYPs62ZBKkiRt/OaklMa+xve8FBHDy+nocGBWeft0YFS7/UYCL5a3j1zL9nWyIc3gU5+8jz32eJEFC7pz6mnvBGDLLefziY8/SLduBQrFBn7yk7E888wgGhuLfPLM+9lq6/k0NiRuu300V1+9Q+afQNXSeM1Cmm5cDAHFLZpZ9enBNF25kMZ7l0IEqX8DKz8zBAa98j/dmNVGy0en03bcANqO6pexelXbkOEr+ewFUxgwZBWpGPzlisFc9/OhHHfWixxyzFwWzi39XvzyW5vy4O3+LnQlhx83lYPeO4METHm2Fz84dzs++PHn2PNtc2hbFcyY1oMffHE7li7ulrvULiul2BDv1HQ9cDzwzfKff2y3/YqI+D6wKaXFSw+klAoRsTgi9gLuBz4E/KgzB6pJQxoRZwCnAg+nlI6txTHr2S23bsn1f3oDn/n0K6dfnHTio1x+xY6MH78pbxr7Iied+CifP/sA3vKWqXTrVuS0095JS0sb/3fxX7jzzs2ZNat3xp9AVTGnjabrFtF6yQhoaaDb12fReOdS2o7sR9vxpSttNF63kG6/WcCqMwevflu3i+dSfFOPTEWrlgqFYNxXRzLpiZ706FXgxzc+zcN39QHg2kuG8vv/G5a5QuUwaGgr7z52OqccvicrWxs55ztP8LaDZ/HIvQP41QVbUiw0cMInJ/G+k57nlz/cOne5qlMRcSWwL6XR/nTgS5Qa0asj4iRgKnAUQErpyYi4GpgAtAGnp5QK5W91KqUV+z2AG8uPdapVQnoacEh5JVaX98QTQxk6dMmrtqUEPXuuAqBnr5XMnddj9fbu3dtoaCjS3FxgVVsDy5b5/3A3WoUErQmaEtFaJA1qhF6v/D/qWJFedYZOwz+WUhzeDbpvcCfKaz3Mm9WNebNK//tfvrSRac92Z/AmqzJXpXrQ2JhobinS1ha0dC8wd3Yzj9w7aPXrTz/Wj/96+6wOvoNqoVDHCWlK6QMVXjqgwv7nAeetZft4YMfXevyqN6QRcTGwJXB9RPwipfSDah9zQ/R/43bj61+7k4+c9CgRiU9/5u0A3H33Zuy91wtccfl1tLS0MW7cbixZ0pK3WFXH4CbajuxH9w9Og5agsFsPirv3BKDpl/NovHUJ9Gqg9dvDS/uvKNLt6oW0nr8JTb9fmLFw5TBsZCtb7biMpx/pxfZvWsKhH57NAUfO5dl/9mLc10awZKFnZHUVc2e1cM2lm3Hpzf9g5YoGHr534KuaUYB3vOdF7vqrCbrqV9Vb9ZTSKZROaN3PZrSyd71zEuMu2Y0PHX8Y4y7ZjU+eeT8A22wzl2IxOPa4w/nwCe/mve99mk02WbKO76YN0uICjfcuY8Wlo1hxxWbEikTjbaX/1m0nDKT18s0o7N+bpusXAdB02Xza3tMXetTv/+NWdXTvWeDccZO5+MsjWbakkRsuG8IJ++zAae/Yjnmzmjj53Bdyl6ga6t1nFXvtN5sTDtmb4w7ch+49Cuz3rpmrX3//R6dQaAvu+LMNqepX9n/JIuLkiBgfEeNXti3LXU42Bx74HPfcU1qY9ve/j2KbbeYCsO++zzP+oeEUCg0sXNidCRMGM2bMmtet1cag4ZEVpE2aoH8jNAWFfXrSMGHFq/Yp7NeLxruXlvZ/upWmn8+n5UPTaLp2EU1XLaDxj4tylK4aamxKnDtuMrdfO5B7biydW7xgTjeKxSCl4MYrBrPNrkszV6la2nWv+cyc3oNF85sptDVwz21D2G7X0tTkgHfPYI+3zuE75+zA2q/Io1pJQJHI9qh32RvSlNK4lNLYlNLY5qaeucvJZu7cHuy0U+n8nl13eYkXXigtVJg9qye77PISkGhpaWPbbecybVqfjJWqWtLQRhqeaoUVRUiJhkdXUNysG/HCK+cINty3jDSqdA7hyu9vSutlo2i9bBRt7+lL29H9KRzWN1f5qonEWd99nmmTunPNJa+kXQOHvvI78uaDFzBloovcupLZM1vYdudFtHQvAIld95zPtMk92X2fuRx1wvN85YydaV3RuM7vI+XkSUYZfP5z97DzzrPo27eVX192Hb/+zU5ceOEefOxjD9HYmFi5qpELf7QHAH+6YQxnfep+Lv7pX4iAm2/ZkilTBmT+CVQNadvuFN7Si5bTX4RGKG7dTOGQvjR/cxYxfRU0QBraxMozBq/7m2mjtMOblnLgkfOY/FR3LrrpKaB0iad9D5vPVjssIyV4aVoLF569WeZKVUsTH+/H3bcO4cLfPkihEEx+qjc3/n4EF197P92ai5z3f4+W9nusLz/++rZ5i+3Soq4XNeUWpVuNVvkgEVOAsSmlOR3t16/npmmvbT9a9Xq0YVn6reW5S1Ad6nHI1NwlqA41DuyfuwTVmXvn/4GFq2Znn1lvusOAdNJV+2Y7/td3vu6h9bgwfs3UJCFNKY2uxXEkSZK04XFkL0mSVGUJKKbsQW3d8mQGSZIkZWVCKkmSVAMFc8CK/GQkSZKUlQ2pJEmSsnJkL0mSVGWJcFFTB0xIJUmSlJUNqSRJkrJyZC9JklQDRXPAivxkJEmSlJUJqSRJUpWlBAUXNVVkQipJkqSsbEglSZKUlSN7SZKkGvA6pJWZkEqSJCkrE1JJkqQqK92pyRywEj8ZSZIkZWVDKkmSpKwc2UuSJNVAARc1VWJCKkmSpKxMSCVJkqos4WWfOmJCKkmSpKxsSCVJkpSVI3tJkqSq8zqkHfGTkSRJUlYmpJIkSTVQ9LJPFZmQSpIkKSsbUkmSJGXlyF6SJKnKUoKC1yGtyIRUkiRJWdmQSpIkKStH9pIkSTXgdUgr85ORJElSViakkiRJVZYIii5qqsiEVJIkSVnZkEqSJCkrR/aSJEk14K1DKzMhlSRJUlYmpJIkSVWWwEVNHTAhlSRJUlY2pJIkScrKkb0kSVINeKemyvxkJEmSlJUJqSRJUrUl79TUERNSSZIkZWVDKkmSpKwc2UuSJFVZwjs1dcSEVJIkSVmZkEqSJNWAi5oqMyGVJElSVjakkiRJysqRvSRJUpUlHNl3xIRUkiRJWZmQSpIk1YAJaWUmpJIkScrKhlSSJElZObKXJEmqskQ4su+ACakkSZKysiGVJElSVo7sJUmSaqCII/tKTEglSZKUVV0lpIWWBpaO7p27DNWZu3a6IncJqkMHpTfmLkF1KHr0yF2C6s3COsnektch7Uid/FeSJElSV2VDKkmSpKzqamQvSZK0MUo4su+ICakkSZKyMiGVJEmqARPSykxIJUmSlJUNqSRJkrJyZC9JklRliXBk3wETUkmSJGVlQipJklQDyYS0IhNSSZIkZWVDKkmSpKwc2UuSJNVAEUf2lZiQSpIkKSsTUkmSpCpLyTs1dcSEVJIkSVnZkEqSJCkrR/aSJEk14HVIKzMhlSRJUlYmpJIkSVXnvew7YkIqSZKkrGxIJUmSlJUje0mSpBpwUVNlJqSSJEnKyoZUkiRJWTmylyRJqrKEtw7tiAmpJEmSsjIhlSRJqrYEKeUuon6ZkEqSJCkrG1JJkiRl5chekiSpBoq4qKkSE1JJkiQREZ+KiCcj4omIuDIiukfEwIi4JSKeLf85oN3+50TEpIiYGBEH/SfHtiGVJEmqskTpTk25HusSESOAM4CxKaUdgUbgaOBs4LaU0hjgtvLXRMT25dd3AA4GLoqIxvX9fGxIJUmSBKVTOXtERBPQE3gROAy4tPz6pcDh5eeHAVellFpTSs8Bk4A91vfANqSSJEkbv8ERMb7d4+T2L6aUXgC+C0wFZgALU0o3A8NSSjPK+8wAhpbfMgKY1u5bTC9vWy8uapIkSaq6yH2npjkppbGVXiyfG3oYsAWwAPhdRBzXwfdb2w+z3ldaNSGVJEnSgcBzKaXZKaVVwDXAm4GXImI4QPnPWeX9pwOj2r1/JKUR/3qxIZUkSaqBlPI9OmEqsFdE9IyIAA4AngKuB44v73M88Mfy8+uBoyOiJSK2AMYAD6zvZ+PIXpIkqYtLKd0fEb8HHgbagEeAcUBv4OqIOIlS03pUef8nI+JqYEJ5/9NTSoX1Pb4NqSRJkkgpfQn40hqbWymlpWvb/zzgvNfj2DakkiRJNdCZ64F2VZ5DKkmSpKxMSCVJkqqstLjIhLQSE1JJkiRlZUMqSZKkrBzZS5Ik1UDmOzXVNRNSSZIkZWVDKkmSpKwc2UuSJNVAJ2/h2SWZkEqSJCkrE1JJkqQa8DqklZmQSpIkKSsbUkmSJGXlyF6SJKnKEuHIvgMmpJIkScrKhFSSJKkGvOpTZSakkiRJysqGVJIkSVk5spckSaq25HVIO2JCKkmSpKxMSCVJkmrBVU0VmZBKkiQpKxPSDJqb2vjRWTfQralAY0OROx/Zkl/+eXf2feNkTnjXQ2y+yQI+9u3DmTh1CACbDFzMr7/4O6a+1A+ACVOG8r0r35LzR9Dr5HufGsX9t/al/+A2xt0xEYBLvrop993Sl27NieGbt/LpH0yjd78Ci+Y18rWTR/PMoz15+/vm8fFvvLD6+9xxbX+u+tEwImDgsFV8/kfP029QIdePpSoZsulKPnvBVAYMWUUqBn+5fBDX/XwIH/nCC+z19kWsWhnMeL6F7501iqWL/Ot9Y3bmF/7JHvvMYsH8Zk4/5m0A/Nf+Mzjmo88wavQSPnXCPkx6uv+r3jNk2HJ+etXfuOJnY7jm8q0yVC1VZkKawcq2Rj55wbs48RtHcOI3jmDP7aex/eiXeG7GAL4w7u38c9Lwf3vPC3P6ctL5R3DS+UfYjG5E3vH+eZx3+eRXbdvtrYsZd8fTXHzbREZs2cpVPxoKQHP3xPGfnclHv/jiq/YvtMFPvziCb/9uEhffNpEtt1vO9b8cUrOfQbVTaAvGfWVTPrrvdpx56BgO/fAcNhuzgofv6sPJ+2/LqW/flhcmt3D0x2flLlVVdusNI/niJ/d41bbnJ/fmvM/vzhOPDFzrez76qQk8dK9/N+SUUmR71Dsb0iyC5a3dAGhqLNLUWCQRPD9zANNm9c9bmmpqp72W0mfAq5PM3fddTGM53Npu92XMmVH6Xenes8iOey6lueXVJyGlBKRgxfIGUoKlSxoZtMmqWpSvGps3qxuTnugJwPKljUx7toXBm6zi4bv6UiyU/sF56uGeDB7uf/+N3ZOPDmLxom6v2jZtSh9emNp7rfvv9daZzHyhJ89P7lOL8qTXrGoznYgYDdwI3A28GXgBOCyltLxax9yQNESRS86+lhFDFnHdXdvz1JShHe4/fNBifnbONSxb0Y2fXT+Wx/717ymqNj43XTmQtx22oMN9mrrBJ745jVP235buPYtsukUrH//G9NoUqGyGjWxlqx2X8/QjPV+1/aCj5/G36/vnKUp1qaV7G0d+6F984RN78t5jJ6/7Daqa5KKmiqqdkI4BfpJS2gFYABxR5eNtMIqpgZPOP4Ij//cYth09my2Gz6u479xFPTnqCx/gI+e/lx//fi++eOId9Oy+sobVKocrLhhGY1Ni//fO73C/tlVww2WD+cnNE7nikSfZYrvl/PZHw2pUpXLo3rPAuZdM4eIvjWDZksbV2z9wxkwKbcHt1wzIWJ3qzXEnP8N1V27BiuWeV6z6Ve3fzudSSo+Wnz8EjF5zh4g4GTgZoKVH/yqXU3+WLG/h0WeGs+cO03luxtrP+1nV1siqttI/Os9MG8ILs/syaujC1YuetPG55eoBPHBrX77520nEOk79+deTPQDYdHTp/6S87d0L+O2PbUg3Vo1NiXMvmcLt1w7gnhv7r95+4FHz2OPARZz9vq2B+j9fTLXzhh0WsM9+Mznx40/Tq09pQdzK1kZu+P3o3KVJq1W7IW1t97wA9Fhzh5TSOGAcQO8BI7tEmN2v93IKhQaWLG+huVsbu2/7AlfcvEuH+y9e2kIxNTB80CJGDl3Ii3M8D2hj9eAdfbj6J8P4zjXP0r3nuv8nMXiTVUx9pjsL5jbSf1CBh+/qw6gxK2pQqWovcdb3pjJtUgvXjHvlNJ+x+y7ifae9xGePGEPrCpcG6NU+/7E3r35+zEeeYcVym9EcEt6pqSPm9xkM6reM//nQ32hsSEQk7nhoS+59YnPesstznPm+e+nfeznfOu0mJk0fyGd+/E523XomJ/73eArFBorF4HtX/heLl3XP/WPodXD+qZvz2L29WTiviWN3354PfnomV/14GKtag3PevzUA2+6+lDO/VTon9EN7bM/SJQ20rQzuvakf37jyX2z+hlaOPWsmn3nPGJq6JYaOWMlnfjg154+lKtnhTUs58Mj5TJ7QnYtufhqAX35zU0776nS6tSTOv2oSAE8/3IsLzx6Vs1RV2ee+9gg77TaXvv1XcumfbuPycWNYvKiZUz7zJP36r+TLP3iQyc/05Ytn7pm7VKlTIlXpDNvyoqYbUko7lr/+DNA7pfTlSu/pPWBk2nW/M6tSjzZcd100LncJqkMHjXhj7hJUh5pGjshdgurMP2ZewcLWl7JHky1bjkgjv3F6tuNP/sD/PpRSGputgHWoWkKaUpoC7Nju6+9W61iSJEnacHmykSRJkrLyHFJJkqQa8DqklZmQSpIkKSsbUkmSJGXlyF6SJKkWHNlXZEIqSZKkrExIJUmSqi68U1MHTEglSZKUlQ2pJEmSsnJkL0mSVAsuaqrIhFSSJElZmZBKkiRVW8JFTR0wIZUkSVJWNqSSJEnKypG9JElSLbioqSITUkmSJGVlQipJklQTLmqqxIRUkiRJWdmQSpIkKStH9pIkSbXgoqaKTEglSZKUlQmpJElSLZiQVmRCKkmSpKxsSCVJkpSVI3tJkqRqS0DyOqSVmJBKkiQpKxNSSZKkGkguaqrIhFSSJElZ2ZBKkiQpK0f2kiRJteDIviITUkmSJGVlQypJkqSsHNlLkiTVgtchrciEVJIkSVmZkEqSJNVAuKipIhNSSZIkZWVDKkmSpKwc2UuSJFVbwuuQdsCEVJIkSVmZkEqSJFVdeNmnDlRsSCPiR3QQLqeUzqhKRZIkSepSOkpIx9esCkmSJHVZFRvSlNKl7b+OiF4ppaXVL0mSJGkj5KKmita5qCki9o6ICcBT5a93iYiLql6ZJEmSuoTOrLL/IXAQMBcgpfRP4K1VrEmSJGnjkzI+6lynLvuUUpq2xqZCFWqRJElSF9SZyz5Ni4g3AykimoEzKI/vJUmSpP9UZxrSU4ALgBHAC8BNwOnVLEqSJGmjswGMznNZZ0OaUpoDHFuDWiRJktQFdWaV/ZYR8aeImB0RsyLijxGxZS2KkyRJ2igkSndqyvWoc51Z1HQFcDUwHNgU+B1wZTWLkiRJUtfRmYY0Ukq/Tim1lR+/wbMgJEmS9Drp6F72A8tP74iIs4GrKDWi7wf+XIPaJEmSNhphnFdRR4uaHqLUgL584sHH2r2WgK9VqyhJkiR1HR3dy36LWhYiSZK0UTMhragz1yElInYEtge6v7wtpXRZtYqSJElS17HOhjQivgTsS6kh/QtwCHA3YEMqSZKk/1hnVtkfCRwAzEwpnQDsArRUtSpJkiR1GZ1pSJenlIpAW0T0BWYBXhhfkiRJr4vOnEM6PiL6A5dQWnm/BHigmkVJkiSp6+jMvexPKz+9OCL+CvRNKT1W3bIkSZI2Ll6HtLKOLoy/W0evpZQefr2LaVzSSu+7//V6f1tt4PY8+9TcJagO9U/35i5BdajthRm5S1CdSYVVuUtQJ3SUkH6vg9cSsP/rXIskSdLGK8W69+miOrow/n61LESSJEldU2dW2UuSJElV06k7NUmSJOk/kPDWoR0wIZUkSVJW62xIo+S4iPhi+evNImKP6pcmSZK0EUkZH50QEf0j4vcR8XREPBURe0fEwIi4JSKeLf85oN3+50TEpIiYGBEHrf8H07mE9CJgb+AD5a8XAz/5Tw4qSZKkunMB8NeU0raUbhX/FHA2cFtKaQxwW/lrImJ74GhgB+Bg4KKIaFzfA3emId0zpXQ6sAIgpTQfaF7fA0qSJKm+lG8P/1bg5wAppZUppQXAYcCl5d0uBQ4vPz8MuCql1JpSeg6YBKz3BL0zDemqcsebygUPAYrre0BJkqSuKFK+RydsCcwGfhkRj0TEzyKiFzAspTQDoPzn0PL+I4Bp7d4/vbxtvXSmIb0QuBYYGhHnAXcD31jfA0qSJKnmBkfE+HaPk9d4vQnYDfhpSumNwFLK4/kK1naV//W+jkBn7mV/eUQ8BBxQPvjhKaWn1veAkiRJXVLeyz7NSSmN7eD16cD0lNL95a9/T6khfSkihqeUZkTEcGBWu/1HtXv/SODF9S2uM6vsNwOWAX8CrgeWlrdJkiRpI5BSmglMi4htypsOACZQ6v2OL287Hvhj+fn1wNER0RIRWwBjgAfW9/iduTD+nyn19AF0B7YAJlJaVSVJkqSNwyeAyyOiGZgMnEApvLw6Ik4CpgJHAaSUnoyIqyk1rW3A6SmlwvoeuDMj+53afx0RuwEfW98DSpIkdUl1fqemlNKjwNrG+gdU2P884LzX49iv+U5NKaWHgTe9HgeXJEmS1pmQRsRZ7b5soLQCa3bVKpIkSdrIvIbLL3VJnTmHtE+7522Uzin9Q3XKkSRJUlfTYUNaviB+75TSZ2tUjyRJkrqYig1pRDSllNrKi5gkSZL0n0hru5a8oOOE9AFK54s+GhHXA7+jdNV+AFJK11S5NkmSJHUBnTmHdCAwF9ifV65HmgAbUkmSJP3HOmpIh5ZX2D/BK43oy1wnJkmS9FrYPVXUUUPaCPTm1Y3oy/xIJUmS9LroqCGdkVL6as0qkSRJ2oh5HdLKOrpTk0vBJEmSVHUdNaRrvW+pJEmS9HqqOLJPKc2rZSGSJEkbNUf2FXWUkEqSJElV15nrkEqSJOk/kVzU1BETUkmSJGVlQypJkqSsHNlLkiTVgiP7ikxIJUmSlJUJqSRJUi2YkFZkQipJkqSsbEglSZKUlSN7SZKkGvA6pJWZkEqSJCkrG1JJkiRlZUMqSZKkrGxIJUmSlJWLmiRJkmrBRU0VmZBKkiQpKxNSSZKkakte9qkjJqSSJEnKyoZUkiRJWTmylyRJqgVH9hWZkEqSJCkrG1JJkiRl5chekiSpFhzZV2RCKkmSpKxMSCVJkqos8DqkHTEhlSRJUlY2pJIkScrKkb0kSVItOLKvyIRUkiRJWZmQSpIkVVtyUVNHTEglSZKUlQ2pJEmSsnJkL0mSVAuO7CsyIZUkSVJWJqSSJEm1YEJakQ1pHTj8uKkc9N4ZJGDKs734wbnbsefb5nLsqc8xasulfOqYsTw7oW/uMlVlzU1tXPyxP9LcVKSxocjtj2/JJbe+ia9/4BY2H7IAgN49WlmyvIUPXngUTY0FznnPXWw7cjYpBd//05t5ePKIvD+Equqs709lzwMXs2BOEx/bfxsAjvv0TA45Zi4L55X+Ov/l+cN58Hb/vuhKhgxfyWcvmMKAIatIxeAvVwzmup8PZcvtlvGJb06jR68CL01r5luf2IJlSxpzlyutlQ1pZoOGtvLuY6dzyuF7srK1kXO+8wRvO3gWEx/vy9fP2pFPnDsxd4mqkZVtjZx+ybtZvrIbjQ0Fxp3yR+6duBlfuPLtq/c5413/YOmKZgAOf9NTABz7w/cxoNdyfnjCn/nwT44gpchSv6rv5t8O5PpfDuazF0x71fZrLxnC7y8emqkq5VYoBOO+OpJJT/SkR68CP77xaR6+qw+f/M5ULvn6CB6/rw/veP8cjjzlJS777qa5y5XWynNI60BjY6K5pUhDY5GW7gXmzm5m2nO9eGFKr9ylqaaC5Su7AdDUWKSpsbjGdCdx4E7/4uZHtwZgi2HzeXBSKRGdv7QHi1e0sN2IWbUtWTX1xP29WTzfHEGvNm9WNyY90ROA5UsbmfZsdwZvsoqRW63g8ft6A/DIXX35r3cuyFiloHQd0lyPelfVhjQiekXEnyPinxHxRES8v5rH2xDNndXCNZduxqU3/4PLb7uHpUuaeOTeQbnLUiYNUeTXZ/yOv37hUh54diRPThu2+rVdt5jBvCU9mTa3PwDPzhjEW7efQmNDkeEDFrHtiNkM6780U+XK6dAT5vDTWydy1ven0rtfW+5ylNGwka1steMynn6kF89P7MHe71gIwFv+ez5DNl2ZuTqpsmonpAcDL6aUdkkp7Qj8tcrH2+D07rOKvfabzQmH7M1xB+5D9x4F9nvXzNxlKZNiauCDFx7Foed/kB1GzWLLYfNWv/aOXSZx8z+3Xv31n8Zvy6xFvfjVx//AWYf+g8efH0ah6Li+q7nh0kGcsPd2nPb2NzDvpW6c/KUXc5ekTLr3LHDuuMlc/OWRLFvSyPc/vTmHHj+bH//lKXr0LtK2yr8fsksZH3Wu2g3p48CBEfGtiHhLSmnhmjtExMkRMT4ixq8srqhyOfVn173mM3N6DxbNb6bQ1sA9tw1hu13/7WNSF7NkRQsPTd6Uvd8wFYDGhiL77fAct/5zq9X7FIoN/PCGffjghUfx2csOpnePlUyb0y9XycpkwZxuFItBSsGNlw9im12X5y5JGTQ2Jc4dN5nbrx3IPTcOAGDav7rzP8eO4ePv3I47rxvAjOdbMlcpVVbVhjSl9AywO6XG9PyI+OJa9hmXUhqbUhrb3NC9muXUpdkzW9h250W0dC8AiV33nM+0yT1zl6UM+vdaTu/urQC0NLWxx9bTmTK79A/Lm7aezpTZ/Zm1qPfq/Vu6raJ7t1UA7LH1NArFBp6bNbD2hSurgUNXrX7+5kMWMmVi1/t7VImzvvs80yZ155pLXjnNp9+g0u9GROKYM2dyw68H5ypQWqeqnh0fEZsC81JKv4mIJcCHq3m8DdHEx/tx961DuPC3D1IoBJOf6s2Nvx/B3vvP5tRznqHfgJV8+Sf/ZPLTfTj31F1zl6sqGtxnGV983+00RKIhErc9vhX3PL05AG9fY1wPMLD3ci448c8UUzB7YS++/Nv9c5StGjr7oufZee8l9BvYxm/GT+DX3xvGznsvZasdlpMSvDS9mQs/NzJ3maqxHd60lAOPnMfkp7pz0U2lq2/88lubMmKLVg49fjYA99zYn5t/6/qErDaQ0XkukVL1Pp2IOAj4DlAEVgGnppTGV9q/X7chae8BR1StHm2Y5r7zDblLUB3qf9m9uUtQPWrwOpt6tfsLN7Mozct+Am2PTUalLY8/K9vxJ3z7rIdSSmOzFbAOVU1IU0o3ATdV8xiSJEkbgg3h8ku5eB1SSZIkZWVDKkmSpKy85YckSVItOLKvyIRUkiRJWdmQSpIkKStH9pIkSTXgKvvKTEglSZKUlQmpJElSLZiQVmRCKkmSpKxsSCVJkpSVI3tJkqRqSziy74AJqSRJkrIyIZUkSaqyKD+0diakkiRJysqGVJIkSVk5spckSaoFFzVVZEIqSZKkrExIJUmSasB72VdmQipJkqSsbEglSZKUlSN7SZKkWnBkX5EJqSRJkrIyIZUkSaoFE9KKTEglSZKUlQ2pJEmSsnJkL0mSVG3J65B2xIRUkiRJWdmQSpIkKStH9pIkSbXgyL4iE1JJkiRlZUIqSZJUAy5qqsyEVJIkSVnZkEqSJCkrR/aSJEm14Mi+IhNSSZIkZWVCKkmSVAMuaqrMhFSSJElZ2ZBKkiQpK0f2kiRJ1ZZwUVMHTEglSZKUlQmpJElSLZiQVmRCKkmSpKxsSCVJkgRARDRGxCMRcUP564ERcUtEPFv+c0C7fc+JiEkRMTEiDvpPjmtDKkmSVGVB6TqkuR6vwZnAU+2+Phu4LaU0Brit/DURsT1wNLADcDBwUUQ0ru/nY0MqSZIkImIk8C7gZ+02HwZcWn5+KXB4u+1XpZRaU0rPAZOAPdb32DakkiRJtZAyPmBwRIxv9zh5LRX+EPgcUGy3bVhKaQZA+c+h5e0jgGnt9pte3rZeXGUvSZK08ZuTUhpb6cWI+G9gVkrpoYjYtxPfL9aybb2vI2BDKkmSpH2Ad0fEO4HuQN+I+A3wUkQMTynNiIjhwKzy/tOBUe3ePxJ4cX0P7shekiSpBiKlbI91SSmdk1IamVIaTWmx0u0ppeOA64Hjy7sdD/yx/Px64OiIaImILYAxwAPr+9mYkEqSJKmSbwJXR8RJwFTgKICU0pMRcTUwAWgDTk8pFdb3IDakkiRJ1bYB3cs+pXQncGf5+VzggAr7nQec93oc05G9JEmSsrIhlSRJUlaO7CVJkmrgNd4xqUsxIZUkSVJWNqSSJEnKypG9JElSLTiyr8iEVJIkSVmZkEqSJNWAi5oqMyGVJElSVjakkiRJyqq+RvZNTTB0UO4qVGdm7+6MQ/+u/2W5K1A9aujRPXcJqjOxrI6yN/85q6iO/itJkiSpK6qvhFSSJGljlFzU1BETUkmSJGVlQypJkqSsHNlLkiTVgiP7ikxIJUmSlJUJqSRJUpUFLmrqiAmpJEmSsrIhlSRJUlaO7CVJkmohObOvxIRUkiRJWZmQSpIk1YCLmiozIZUkSVJWNqSSJEnKypG9JElStSW8U1MHTEglSZKUlQmpJElSDUQxdwX1y4RUkiRJWdmQSpIkKStH9pIkSbXgoqaKTEglSZKUlQ2pJEmSsnJkL0mSVAPeOrQyE1JJkiRlZUIqSZJUbQlIRqSVmJBKkiQpKxtSSZIkZeXIXpIkqQZc1FSZCakkSZKyMiGVJEmqBRPSikxIJUmSlJUNqSRJkrJyZC9JklRlgYuaOmJCKkmSpKxMSCVJkqotJe/U1AETUkmSJGVlQypJkqSsHNlLkiTVgIuaKjMhlSRJUlYmpJIkSbVgQlqRCakkSZKysiGVJElSVo7sJUmSasBFTZWZkEqSJCkrG1JJkiRl5chekiSp2hJQdGZfiQmpJEmSsjIhlSRJqgUD0opMSCVJkpSVDakkSZKycmQvSZJUA16HtDITUkmSJGVlQipJklQLyYi0EhNSSZIkZWVDKkmSpKwc2UuSJNWAi5oqMyGVJElSViakkiRJ1ZbwTk0dMCGVJElSVjakkiRJysqRvSRJUpUFEF6HtCITUkmSJGVlQprBJz/zIHvsOYMFC1o47aMHrd5+6OHPcuhhkygUGnjw/uH84pKdeeNuL/HhjzxGt25FVq1q4BfjduGfjw7NWL2qqWFZG0OvmkzLjGUQ8NIHtqL3Y/Po9cR8UmMDqwa38NIxW1Hs2USf8XMYcPuLq9/b/OIypn5mJ1aO7JXxJ1A1nfX9qex54GIWzGniY/tvA8D/XDyFkVu1AtCrb4Glixo57e3b5CxTGfzqjodYtrSRYhEKbcGZ790FgHd/cAaHHjeDQiF44M4B/OLbo/MW2tUVcxdQv6rekEZEf+CYlNJF1T7WhuLWm0bzp+u25tOff2D1tp13mcVeb36R005+B22rGunXfwUACxc185Vz/4t5c3uw+eiFfO2bd/Ghow/NVbqqbMg1U1i2XX9mnvgGaCvSsLLIsm36Mee/N4PGYND1zzPg1heY++7NWTx2MIvHDgZKzeimP5toM7qRu/m3A7n+l4P57AXTVm/7ximjVz8/+YsvsnSxg6+u6uwP7sCi+d1Wf73zngvZ64B5nHborqxa2UC/gSszVid1rBZ/c/UHTqvBcTYYTzw+hMWLm1+17V3v/he/u2pb2lY1ArBwQXcAJk8awLy5PQB4fkpfmpuLNHUr1LZg1UTDijZ6/Gsxi/YaUtrQ1ECxZxPLtu0PjQHAis370LTg3/9R6fPQHBbvNqiG1SqHJ+7vzeL5lXKExFvfvYA7rhtQ05pUv951zEyuHjeCVStL/9QvnNe8jndI+dRiZP9NYKuIeBS4JaX02Rocc4Oz6YjF7LDjHI4/4QlWrmzgZ+N24dmJA1+1zz5veYF/Teq/umnVxqVpTiuF3k0Mu+JfNL+wjNZRvZj93tGkllf+e/e9fxZL3vjvjWfvR+Yy4yOOabuyHfdcyvzZTbz4XEvuUpRBSnDeLyeQEtx41TBu/O0mjNhiOTuOXcTxZ01lVWsDP/vm5jzzeJ/cpXZpLmqqrBYN6dnAjimlXWtwrA1WY2Oid5+VfOoT+/OGbeZzzhfu5cQPvpPSujzYbPOFnPjRx/jfz781b6GqmigmWqYvZdYRo2kd3YfBf5jCgFtfZN67RgEw4OYXoCFWj+lf1jJlMam5gZWb9sxRturEfocv4M7r+ucuQ5l8+uidmDermX4DV/KNX01g2uQepX9X+rXxqSN34g07L+GcC57hhP134+V/V6R6kv1ko4g4OSLGR8T4lYVlucvJZs6cHvzj7hFA8MzEgaQU9O1XGs0OGryMc7/yD773rT2YOaN33kJVNW39m2nr30zr6FKCsWTXgXSfvhSAPg/MpteT85n5oa0hXv2PSZ+H57J4t8H/9v3UdTQ0JvZ550L+dn3/3KUok3mzSuP4hfOa+cctA9lm5yXMmdnCPTcNAoJnHutDStBvYFveQruylPlR57I3pCmlcSmlsSmlsc2NXTfhue+eEeyy6ywARoxYTFNTkUULm+nVayVfOe9ufvXznZjwpE3HxqzQt5m2/i10e2k5AD2fWcjKTXrQ86kFDLj1RWZ8dBtS8xqnaxQTvR+d5/mjXdxub1nMtEktzJnhOYJdUUuPAj16FVY/3+2/FjLlmZ7ce+tAdt17IQAjRi+nqVti4TwvrqP6VIvfzMWAJ62087n/uY+dd5lN336tXHblDfzm0h24+a9b8MnPPMhFl9xEW1sD3//2HkBw6OGT2HTTJRx97ASOPnYCAF84+62rFz1p4zLriNFs8utJRFtafYmnUd97nGhLjLjoKQBWbN6bWe/fEoAe/1pUSlYH+/vQFZx90fPsvPcS+g1s4zfjJ/Dr7w3jpisH8bbDHNd3ZQMGr+LcnzwNQGNT4s4/DeGhvw+gqVuRT50/iZ/++RHaVjXwvc+NwXG96lWkGpxgGxFXADsDN3a0qKlfj+Fp761OrHo92rA8/bGB695JXc6YM+/LXYLqUEMvL32mV7tv2Q0sLMzJ3on37TMivWn307Md//a//e9DKaWx2QpYh5pk9ymlY2pxHEmSJG14sp9DKkmSpK7Ns5slSZJqIDaA1e65mJBKkiQpKxNSSZKkWvBOTRWZkEqSJCkrG1JJkiRl5chekiSp2hJEMXcR9cuEVJIkSVmZkEqSJNWCi5oqMiGVJElSVjakkiRJysqRvSRJUi04sa/IhFSSJElZmZBKkiTVQLioqSITUkmSJGVlQypJkqSsbEglSZJqIaV8j3WIiFERcUdEPBURT0bEmeXtAyPiloh4tvzngHbvOSciJkXExIg46D/5aGxIJUmS1AZ8OqW0HbAXcHpEbA+cDdyWUhoD3Fb+mvJrRwM7AAcDF0VE4/oe3IZUkiSp2hJQzPhYV3kpzUgpPVx+vhh4ChgBHAZcWt7tUuDw8vPDgKtSSq0ppeeAScAer+1DeYUNqSRJ0sZvcESMb/c4udKOETEaeCNwPzAspTQDSk0rMLS82whgWru3TS9vWy9e9kmSJGnjNyelNHZdO0VEb+APwCdTSosiouKua9m23te1siGVJEmqsiDV/XVII6IbpWb08pTSNeXNL0XE8JTSjIgYDswqb58OjGr39pHAi+t7bEf2kiRJXVyUotCfA0+llL7f7qXrgePLz48H/thu+9ER0RIRWwBjgAfW9/gmpJIkSbVQ3wnpPsAHgccj4tHytv8BvglcHREnAVOBowBSSk9GxNXABEor9E9PKRXW9+A2pJIkSV1cSulu1n5eKMABFd5zHnDe63F8R/aSJEnKyoRUkiSpFup7ZJ+VCakkSZKysiGVJElSVo7sJUmSqu3lW4dqrUxIJUmSlJUJqSRJUg3U+52acjIhlSRJUlY2pJIkScrKkb0kSVItOLKvyIRUkiRJWZmQSpIkVV0yIe2ACakkSZKysiGVJElSVo7sJUmSqi3hyL4DJqSSJEnKyoRUkiSpFryXfUUmpJIkScrKhlSSJElZObKXJEmqgXBRU0UmpJIkScrKhFSSJKkWTEgrMiGVJElSVjakkiRJysqRvSRJUrUloOjIvhITUkmSJGVlQipJklR1yUVNHTAhlSRJUlY2pJIkScrKkb0kSVItOLKvyIRUkiRJWdmQSpIkKStH9pIkSbXgyL4iE1JJkiRlZUIqSZJUbd6pqUMmpJIkScqqrhLSRStmzrnpyW88n7uOOjEYmJO7iLpwRu4C6oa/E+34F8Vq/l60tyR3AXXD34tXbJ67AK1bXTWkKaUhuWuoFxExPqU0Nncdqh/+Tmht/L3Q2vh7UY8SpGLuIuqWI3tJkiRlVVcJqSRJ0kbLyz5VZEJav8blLkB1x98JrY2/F1obfy+0QbEhrVMpJf8y0av4O6G18fdCa+PvhTY0juwlSZKqzeuQdsiEVJIkSVnZkNahiDgjIp6KiMtz1yJJ2rBERP+IOC13HVqLlPI96pwNaX06DXhnSunY3IVIkjY4/Sn9OyJtMGxI60xEXAxsCVwfEZ/KXY/yi4jR5cT8koh4MiJujogeuetSXhHRKyL+HBH/jIgnIuL9uWtS3fgmsFVEPBoR38ldjNQZLmqqMymlUyLiYGC/lJK3fdPLxgAfSCl9NCKuBo4AfpO5JuV1MPBiSuldABHRL3M9qh9nAzumlHbNXYjWsAGMznMxIZU2DM+llB4tP38IGJ2vFNWJx4EDI+JbEfGWlNLC3AVJ0vqyIZU2DK3tnhdwutHlpZSeAXan1JieHxFfzFySpA5lXNC0ASSz/qMmSRugiNgUmJdS+k1ELAE+nLkk1Y/FQJ/cRUivhQ2pJG2YdgK+ExFFYBVwauZ6VCdSSnMj4p6IeAK4MaX02dw1SetiQ1qHUkqjc9eg+pFSmgLs2O7r7+arRvUipXQTcFPuOlSfUkrH5K5Ba0hAsZi7irrlOaSSJEnKyoZUkiRJWTmylyRJqoUNYLV7LiakkiRJysqEVJIkqRZMSCsyIZW0ThFRKN8X+4mI+F1E9PwPvtevIuLI8vOfRcT2Hey7b0S8eT2OMSUiBnd2+xr7LHmNx/pyRHzmtdYoSXqFDamkzlieUto1pbQjsBI4pf2LEdG4Pt80pfSRlNKEDnbZF3jNDakkacNiQyrptfo7sHU5vbwjIq4AHo+Ixoj4TkQ8GBGPRcTHAKLkxxExISL+DAx9+RtFxJ0RMbb8/OCIeDgi/hkRt0XEaEqN76fK6exbImJIRPyhfIwHI2Kf8nsHRcTNEfFIRPwfEOv6ISLiuoh4KCKejIiT13jte+VabouIIeVtW0XEX8vv+XtEbPu6fJqSuogExYyPOuc5pJI6LSKagEOAv5Y37QHsmFJ6rtzULUwpvSkiWoB7IuJm4I3ANpTuLDQMmAD8Yo3vOwS4BHhr+XsNTCnNi4iLgSUv3wyg3Pz+IKV0d0RsRunC8NsBXwLuTil9NSLeBbyqwazgxPIxegAPRsQfUkpzgV7AwymlT5fvD/8l4OPAOOCUlNKzEbEncBGw/3p8jJKkNdiQSuqMHhHxaPn534GfUxqlP5BSeq68/R3Azi+fHwr0A8YAbwWuTCkVgBcj4va1fP+9gLte/l4ppXkV6jgQ2D5idQDaNyL6lI/x3vJ7/xwR8zvxM50REe8pPx9VrnUuUAR+W97+G+CaiOhd/nl/1+7YLZ04hiSVJEjJOzVVYkMqqTOWp5R2bb+h3Jgtbb8J+ET5lpbt93snpZvmdSQ6sQ+UTjPaO6W0fC21dHomFRH7Umpu904pLYuIO4HuFXZP5eMuWPMzkCS9PjyHVNLr5Sbg1IjoBhARb4iIXsBdwNHlc0yHA/ut5b33Am+LiC3K7x1Y3r4Y6NNuv5spjc8p77dr+eldwLHlbYcAA9ZRaz9gfrkZ3ZZSQvuyBuDllPcYSqcCLAKei4ijyseIiNhlHceQJHWSCamk18vPgNHAw1GKLGcDhwPXUjrX8nHgGeBva74xpTS7fA7qNRHRAMwC3g78Cfh9RBwGfAI4A/hJRDxG6e+vuygtfPoKcGVEPFz+/lPXUetfgVPK32cicF+715YCO0TEQ8BC4P3l7ccCP42ILwDdgKuAf3bqk5Ek2CAWF+USyYu0SpIkVVW/piFp776HZzv+TfN/9lBKaWy2AtbBhFSSJKkWDAEr8hxSSZIkZWVDKkmSpKwc2UuSJFVbSlD0OqSVmJBKkiQpKxNSSZKkWnBRU0UmpJIkScrKhlSSJElZObKXJEmqgeSipopMSCVJkpSVCakkSVLVJRc1dcCEVJIkSVnZkEqSJCkrR/aSJEnVloCiI/tKTEglSZKUlQ2pJEmSsnJkL0mSVAvJ65BWYkIqSZKkrExIJUmSqiwByUVNFZmQSpIkKSsbUkmSJGXlyF6SJKnaUnJRUwdMSCVJkpSVCakkSVINuKipMhNSSZIkZWVDKkmSpKwc2UuSJNWCi5oqMiGVJElSVpGSJ9hKkiRVU0T8FRicsYQ5KaWDMx6/QzakkiRJysqRvSRJkrKyIZUkSVJWNqSSJEnKyoZUkiRJWdmQSpIkKav/BxOjMhVl8ZoVAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 864x864 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(12, 12))\n",
"plot_confusion_matrix(model, X_test, y_test, ax=ax)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# With balanced classes"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [],
"source": [
"rus = RandomUnderSampler(sampling_strategy='not minority', random_state=1)\n",
"data_balanced, balanced_y = rus.fit_resample(data, data['y'])"
]
},
{
"cell_type": "code",
"execution_count": 180,
"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>negate</th>\n",
" <th>ppron</th>\n",
" <th>nonfl</th>\n",
" <th>i</th>\n",
" <th>relativ</th>\n",
" <th>percept</th>\n",
" <th>quant</th>\n",
" <th>affect</th>\n",
" <th>shehe</th>\n",
" <th>achieve</th>\n",
" <th>...</th>\n",
" <th>you</th>\n",
" <th>cogmech</th>\n",
" <th>auxverb</th>\n",
" <th>they</th>\n",
" <th>incl</th>\n",
" <th>money</th>\n",
" <th>feel</th>\n",
" <th>we</th>\n",
" <th>hear</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.050562</td>\n",
" <td>0.252809</td>\n",
" <td>0.033708</td>\n",
" <td>0.188202</td>\n",
" <td>0.160112</td>\n",
" <td>0.025281</td>\n",
" <td>0.016854</td>\n",
" <td>0.070225</td>\n",
" <td>0.030899</td>\n",
" <td>0.008427</td>\n",
" <td>...</td>\n",
" <td>0.002809</td>\n",
" <td>0.115169</td>\n",
" <td>0.115169</td>\n",
" <td>0.002809</td>\n",
" <td>0.025281</td>\n",
" <td>0.005618</td>\n",
" <td>0.016854</td>\n",
" <td>0.028090</td>\n",
" <td>0.002809</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.038462</td>\n",
" <td>0.378205</td>\n",
" <td>0.054487</td>\n",
" <td>0.272436</td>\n",
" <td>0.285256</td>\n",
" <td>0.054487</td>\n",
" <td>0.038462</td>\n",
" <td>0.108974</td>\n",
" <td>0.057692</td>\n",
" <td>0.006410</td>\n",
" <td>...</td>\n",
" <td>0.012821</td>\n",
" <td>0.227564</td>\n",
" <td>0.108974</td>\n",
" <td>0.000000</td>\n",
" <td>0.083333</td>\n",
" <td>0.003205</td>\n",
" <td>0.019231</td>\n",
" <td>0.035256</td>\n",
" <td>0.022436</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.018786</td>\n",
" <td>0.552023</td>\n",
" <td>0.046243</td>\n",
" <td>0.341040</td>\n",
" <td>0.339595</td>\n",
" <td>0.052023</td>\n",
" <td>0.066474</td>\n",
" <td>0.114162</td>\n",
" <td>0.135838</td>\n",
" <td>0.026012</td>\n",
" <td>...</td>\n",
" <td>0.027457</td>\n",
" <td>0.225434</td>\n",
" <td>0.167630</td>\n",
" <td>0.020231</td>\n",
" <td>0.049133</td>\n",
" <td>0.010116</td>\n",
" <td>0.018786</td>\n",
" <td>0.027457</td>\n",
" <td>0.020231</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.039113</td>\n",
" <td>0.413299</td>\n",
" <td>0.061278</td>\n",
" <td>0.320730</td>\n",
" <td>0.251630</td>\n",
" <td>0.053455</td>\n",
" <td>0.032595</td>\n",
" <td>0.067797</td>\n",
" <td>0.053455</td>\n",
" <td>0.002608</td>\n",
" <td>...</td>\n",
" <td>0.010430</td>\n",
" <td>0.170795</td>\n",
" <td>0.088657</td>\n",
" <td>0.001304</td>\n",
" <td>0.045632</td>\n",
" <td>0.005215</td>\n",
" <td>0.013038</td>\n",
" <td>0.027379</td>\n",
" <td>0.007823</td>\n",
" <td>f</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.026490</td>\n",
" <td>0.394702</td>\n",
" <td>0.079470</td>\n",
" <td>0.270199</td>\n",
" <td>0.241060</td>\n",
" <td>0.046358</td>\n",
" <td>0.027815</td>\n",
" <td>0.092715</td>\n",
" <td>0.070199</td>\n",
" <td>0.023841</td>\n",
" <td>...</td>\n",
" <td>0.027815</td>\n",
" <td>0.143046</td>\n",
" <td>0.092715</td>\n",
" <td>0.000000</td>\n",
" <td>0.018543</td>\n",
" <td>0.006623</td>\n",
" <td>0.010596</td>\n",
" <td>0.026490</td>\n",
" <td>0.025166</td>\n",
" <td>f</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",
" <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>10031</th>\n",
" <td>0.027867</td>\n",
" <td>0.454984</td>\n",
" <td>0.065380</td>\n",
" <td>0.274920</td>\n",
" <td>0.310289</td>\n",
" <td>0.032154</td>\n",
" <td>0.029475</td>\n",
" <td>0.088424</td>\n",
" <td>0.138800</td>\n",
" <td>0.012326</td>\n",
" <td>...</td>\n",
" <td>0.013398</td>\n",
" <td>0.190782</td>\n",
" <td>0.150054</td>\n",
" <td>0.003751</td>\n",
" <td>0.043944</td>\n",
" <td>0.008039</td>\n",
" <td>0.007503</td>\n",
" <td>0.024116</td>\n",
" <td>0.013934</td>\n",
" <td>t</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10032</th>\n",
" <td>0.052083</td>\n",
" <td>0.322917</td>\n",
" <td>0.050000</td>\n",
" <td>0.229167</td>\n",
" <td>0.237500</td>\n",
" <td>0.018750</td>\n",
" <td>0.006250</td>\n",
" <td>0.093750</td>\n",
" <td>0.041667</td>\n",
" <td>0.010417</td>\n",
" <td>...</td>\n",
" <td>0.008333</td>\n",
" <td>0.129167</td>\n",
" <td>0.079167</td>\n",
" <td>0.002083</td>\n",
" <td>0.012500</td>\n",
" <td>0.002083</td>\n",
" <td>0.006250</td>\n",
" <td>0.041667</td>\n",
" <td>0.004167</td>\n",
" <td>t</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10033</th>\n",
" <td>0.128889</td>\n",
" <td>0.306667</td>\n",
" <td>0.017778</td>\n",
" <td>0.213333</td>\n",
" <td>0.284444</td>\n",
" <td>0.022222</td>\n",
" <td>0.013333</td>\n",
" <td>0.075556</td>\n",
" <td>0.022222</td>\n",
" <td>0.017778</td>\n",
" <td>...</td>\n",
" <td>0.026667</td>\n",
" <td>0.155556</td>\n",
" <td>0.053333</td>\n",
" <td>0.000000</td>\n",
" <td>0.031111</td>\n",
" <td>0.008889</td>\n",
" <td>0.008889</td>\n",
" <td>0.044444</td>\n",
" <td>0.000000</td>\n",
" <td>t</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10034</th>\n",
" <td>0.048276</td>\n",
" <td>0.439655</td>\n",
" <td>0.047414</td>\n",
" <td>0.289655</td>\n",
" <td>0.238793</td>\n",
" <td>0.046552</td>\n",
" <td>0.056034</td>\n",
" <td>0.106034</td>\n",
" <td>0.076724</td>\n",
" <td>0.015517</td>\n",
" <td>...</td>\n",
" <td>0.020690</td>\n",
" <td>0.199138</td>\n",
" <td>0.129310</td>\n",
" <td>0.000862</td>\n",
" <td>0.052586</td>\n",
" <td>0.008621</td>\n",
" <td>0.012069</td>\n",
" <td>0.051724</td>\n",
" <td>0.022414</td>\n",
" <td>t</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10035</th>\n",
" <td>0.060134</td>\n",
" <td>0.443207</td>\n",
" <td>0.044543</td>\n",
" <td>0.293987</td>\n",
" <td>0.360802</td>\n",
" <td>0.020045</td>\n",
" <td>0.042316</td>\n",
" <td>0.122494</td>\n",
" <td>0.073497</td>\n",
" <td>0.026726</td>\n",
" <td>...</td>\n",
" <td>0.022272</td>\n",
" <td>0.200445</td>\n",
" <td>0.113586</td>\n",
" <td>0.006682</td>\n",
" <td>0.069042</td>\n",
" <td>0.002227</td>\n",
" <td>0.011136</td>\n",
" <td>0.046771</td>\n",
" <td>0.004454</td>\n",
" <td>t</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10036 rows × 65 columns</p>\n",
"</div>"
],
"text/plain": [
" negate ppron nonfl i relativ percept quant \\\n",
"0 0.050562 0.252809 0.033708 0.188202 0.160112 0.025281 0.016854 \n",
"1 0.038462 0.378205 0.054487 0.272436 0.285256 0.054487 0.038462 \n",
"2 0.018786 0.552023 0.046243 0.341040 0.339595 0.052023 0.066474 \n",
"3 0.039113 0.413299 0.061278 0.320730 0.251630 0.053455 0.032595 \n",
"4 0.026490 0.394702 0.079470 0.270199 0.241060 0.046358 0.027815 \n",
"... ... ... ... ... ... ... ... \n",
"10031 0.027867 0.454984 0.065380 0.274920 0.310289 0.032154 0.029475 \n",
"10032 0.052083 0.322917 0.050000 0.229167 0.237500 0.018750 0.006250 \n",
"10033 0.128889 0.306667 0.017778 0.213333 0.284444 0.022222 0.013333 \n",
"10034 0.048276 0.439655 0.047414 0.289655 0.238793 0.046552 0.056034 \n",
"10035 0.060134 0.443207 0.044543 0.293987 0.360802 0.020045 0.042316 \n",
"\n",
" affect shehe achieve ... you cogmech auxverb \\\n",
"0 0.070225 0.030899 0.008427 ... 0.002809 0.115169 0.115169 \n",
"1 0.108974 0.057692 0.006410 ... 0.012821 0.227564 0.108974 \n",
"2 0.114162 0.135838 0.026012 ... 0.027457 0.225434 0.167630 \n",
"3 0.067797 0.053455 0.002608 ... 0.010430 0.170795 0.088657 \n",
"4 0.092715 0.070199 0.023841 ... 0.027815 0.143046 0.092715 \n",
"... ... ... ... ... ... ... ... \n",
"10031 0.088424 0.138800 0.012326 ... 0.013398 0.190782 0.150054 \n",
"10032 0.093750 0.041667 0.010417 ... 0.008333 0.129167 0.079167 \n",
"10033 0.075556 0.022222 0.017778 ... 0.026667 0.155556 0.053333 \n",
"10034 0.106034 0.076724 0.015517 ... 0.020690 0.199138 0.129310 \n",
"10035 0.122494 0.073497 0.026726 ... 0.022272 0.200445 0.113586 \n",
"\n",
" they incl money feel we hear y \n",
"0 0.002809 0.025281 0.005618 0.016854 0.028090 0.002809 f \n",
"1 0.000000 0.083333 0.003205 0.019231 0.035256 0.022436 f \n",
"2 0.020231 0.049133 0.010116 0.018786 0.027457 0.020231 f \n",
"3 0.001304 0.045632 0.005215 0.013038 0.027379 0.007823 f \n",
"4 0.000000 0.018543 0.006623 0.010596 0.026490 0.025166 f \n",
"... ... ... ... ... ... ... .. \n",
"10031 0.003751 0.043944 0.008039 0.007503 0.024116 0.013934 t \n",
"10032 0.002083 0.012500 0.002083 0.006250 0.041667 0.004167 t \n",
"10033 0.000000 0.031111 0.008889 0.008889 0.044444 0.000000 t \n",
"10034 0.000862 0.052586 0.008621 0.012069 0.051724 0.022414 t \n",
"10035 0.006682 0.069042 0.002227 0.011136 0.046771 0.004454 t \n",
"\n",
"[10036 rows x 65 columns]"
]
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_balanced"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"t 2509\n",
"n 2509\n",
"f 2509\n",
"s 2509\n",
"Name: y, dtype: int64"
]
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"balanced_y.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"t 2509\n",
"n 2509\n",
"f 2509\n",
"s 2509\n",
"Name: y, dtype: int64"
]
},
"execution_count": 182,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_balanced.y.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"65\n"
]
}
],
"source": [
"print(len(data.columns))\n",
"y = data_balanced.iloc[:,[64]]\n",
"X = data_balanced.iloc[:,0:63]"
]
},
{
"cell_type": "code",
"execution_count": 184,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2045)"
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"s 2033\n",
"t 2017\n",
"f 1994\n",
"n 1984\n",
"Name: y, dtype: int64"
]
},
"execution_count": 185,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train.y.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"n 525\n",
"f 515\n",
"t 492\n",
"s 476\n",
"Name: y, dtype: int64"
]
},
"execution_count": 186,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_test.y.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
" colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n",
" importance_type='gain', interaction_constraints='',\n",
" learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n",
" min_child_weight=1, missing=nan, monotone_constraints='()',\n",
" n_estimators=100, n_jobs=0, num_parallel_tree=1,\n",
" objective='multi:softprob', random_state=0, reg_alpha=0,\n",
" reg_lambda=1, scale_pos_weight=None, subsample=1,\n",
" tree_method='exact', validate_parameters=1, verbosity=None)"
]
},
"execution_count": 188,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = xgb.XGBClassifier()\n",
"model.fit(X_train.values, y_train.iloc[:,0])"
]
},
{
"cell_type": "code",
"execution_count": 194,
"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>negate</th>\n",
" <th>ppron</th>\n",
" <th>nonfl</th>\n",
" <th>i</th>\n",
" <th>relativ</th>\n",
" <th>percept</th>\n",
" <th>quant</th>\n",
" <th>affect</th>\n",
" <th>shehe</th>\n",
" <th>achieve</th>\n",
" <th>...</th>\n",
" <th>funct</th>\n",
" <th>sad</th>\n",
" <th>you</th>\n",
" <th>cogmech</th>\n",
" <th>auxverb</th>\n",
" <th>they</th>\n",
" <th>incl</th>\n",
" <th>money</th>\n",
" <th>feel</th>\n",
" <th>we</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>7343</th>\n",
" <td>0.020151</td>\n",
" <td>0.458438</td>\n",
" <td>0.076826</td>\n",
" <td>0.332494</td>\n",
" <td>0.328715</td>\n",
" <td>0.030227</td>\n",
" <td>0.036524</td>\n",
" <td>0.095718</td>\n",
" <td>0.044081</td>\n",
" <td>0.028967</td>\n",
" <td>...</td>\n",
" <td>1.358942</td>\n",
" <td>0.006297</td>\n",
" <td>0.021411</td>\n",
" <td>0.152393</td>\n",
" <td>0.119647</td>\n",
" <td>0.010076</td>\n",
" <td>0.035264</td>\n",
" <td>0.013854</td>\n",
" <td>0.003778</td>\n",
" <td>0.050378</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2127</th>\n",
" <td>0.034139</td>\n",
" <td>0.470128</td>\n",
" <td>0.034139</td>\n",
" <td>0.301565</td>\n",
" <td>0.281650</td>\n",
" <td>0.046230</td>\n",
" <td>0.044808</td>\n",
" <td>0.088193</td>\n",
" <td>0.076814</td>\n",
" <td>0.014936</td>\n",
" <td>...</td>\n",
" <td>1.494310</td>\n",
" <td>0.002845</td>\n",
" <td>0.013514</td>\n",
" <td>0.256046</td>\n",
" <td>0.148649</td>\n",
" <td>0.008535</td>\n",
" <td>0.047653</td>\n",
" <td>0.009957</td>\n",
" <td>0.014936</td>\n",
" <td>0.069701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2225</th>\n",
" <td>0.030955</td>\n",
" <td>0.484260</td>\n",
" <td>0.073977</td>\n",
" <td>0.351522</td>\n",
" <td>0.317419</td>\n",
" <td>0.049318</td>\n",
" <td>0.037775</td>\n",
" <td>0.107030</td>\n",
" <td>0.076600</td>\n",
" <td>0.031480</td>\n",
" <td>...</td>\n",
" <td>1.606506</td>\n",
" <td>0.003148</td>\n",
" <td>0.021511</td>\n",
" <td>0.178909</td>\n",
" <td>0.136411</td>\n",
" <td>0.006821</td>\n",
" <td>0.038300</td>\n",
" <td>0.013641</td>\n",
" <td>0.018363</td>\n",
" <td>0.027807</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5473</th>\n",
" <td>0.067358</td>\n",
" <td>0.393782</td>\n",
" <td>0.058722</td>\n",
" <td>0.260794</td>\n",
" <td>0.303972</td>\n",
" <td>0.034542</td>\n",
" <td>0.058722</td>\n",
" <td>0.074266</td>\n",
" <td>0.072539</td>\n",
" <td>0.010363</td>\n",
" <td>...</td>\n",
" <td>1.298791</td>\n",
" <td>0.003454</td>\n",
" <td>0.005181</td>\n",
" <td>0.127807</td>\n",
" <td>0.100173</td>\n",
" <td>0.001727</td>\n",
" <td>0.032815</td>\n",
" <td>0.015544</td>\n",
" <td>0.013817</td>\n",
" <td>0.053541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1515</th>\n",
" <td>0.037975</td>\n",
" <td>0.379747</td>\n",
" <td>0.042194</td>\n",
" <td>0.299578</td>\n",
" <td>0.248945</td>\n",
" <td>0.059072</td>\n",
" <td>0.046414</td>\n",
" <td>0.033755</td>\n",
" <td>0.063291</td>\n",
" <td>0.016878</td>\n",
" <td>...</td>\n",
" <td>1.059072</td>\n",
" <td>0.000000</td>\n",
" <td>0.004219</td>\n",
" <td>0.168776</td>\n",
" <td>0.067511</td>\n",
" <td>0.008439</td>\n",
" <td>0.025316</td>\n",
" <td>0.021097</td>\n",
" <td>0.021097</td>\n",
" <td>0.004219</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",
" <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>550</th>\n",
" <td>0.053942</td>\n",
" <td>0.448133</td>\n",
" <td>0.049793</td>\n",
" <td>0.319502</td>\n",
" <td>0.242739</td>\n",
" <td>0.020747</td>\n",
" <td>0.024896</td>\n",
" <td>0.080913</td>\n",
" <td>0.068465</td>\n",
" <td>0.006224</td>\n",
" <td>...</td>\n",
" <td>1.307054</td>\n",
" <td>0.014523</td>\n",
" <td>0.020747</td>\n",
" <td>0.155602</td>\n",
" <td>0.105809</td>\n",
" <td>0.008299</td>\n",
" <td>0.037344</td>\n",
" <td>0.020747</td>\n",
" <td>0.006224</td>\n",
" <td>0.031120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3477</th>\n",
" <td>0.025516</td>\n",
" <td>0.520656</td>\n",
" <td>0.102066</td>\n",
" <td>0.375456</td>\n",
" <td>0.284933</td>\n",
" <td>0.060753</td>\n",
" <td>0.034629</td>\n",
" <td>0.116039</td>\n",
" <td>0.078372</td>\n",
" <td>0.027339</td>\n",
" <td>...</td>\n",
" <td>1.597813</td>\n",
" <td>0.007290</td>\n",
" <td>0.029162</td>\n",
" <td>0.157959</td>\n",
" <td>0.156744</td>\n",
" <td>0.002430</td>\n",
" <td>0.033414</td>\n",
" <td>0.019441</td>\n",
" <td>0.026124</td>\n",
" <td>0.035237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3042</th>\n",
" <td>0.010163</td>\n",
" <td>0.443089</td>\n",
" <td>0.052846</td>\n",
" <td>0.239837</td>\n",
" <td>0.241870</td>\n",
" <td>0.034553</td>\n",
" <td>0.038618</td>\n",
" <td>0.083333</td>\n",
" <td>0.095528</td>\n",
" <td>0.010163</td>\n",
" <td>...</td>\n",
" <td>1.355691</td>\n",
" <td>0.008130</td>\n",
" <td>0.026423</td>\n",
" <td>0.172764</td>\n",
" <td>0.095528</td>\n",
" <td>0.012195</td>\n",
" <td>0.069106</td>\n",
" <td>0.000000</td>\n",
" <td>0.006098</td>\n",
" <td>0.069106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9734</th>\n",
" <td>0.045028</td>\n",
" <td>0.360225</td>\n",
" <td>0.061914</td>\n",
" <td>0.250469</td>\n",
" <td>0.275797</td>\n",
" <td>0.055347</td>\n",
" <td>0.034709</td>\n",
" <td>0.110694</td>\n",
" <td>0.059099</td>\n",
" <td>0.014071</td>\n",
" <td>...</td>\n",
" <td>1.252345</td>\n",
" <td>0.016886</td>\n",
" <td>0.009381</td>\n",
" <td>0.214822</td>\n",
" <td>0.119137</td>\n",
" <td>0.000938</td>\n",
" <td>0.045966</td>\n",
" <td>0.024390</td>\n",
" <td>0.037523</td>\n",
" <td>0.040338</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9261</th>\n",
" <td>0.034934</td>\n",
" <td>0.425036</td>\n",
" <td>0.055313</td>\n",
" <td>0.216885</td>\n",
" <td>0.229985</td>\n",
" <td>0.039301</td>\n",
" <td>0.024745</td>\n",
" <td>0.090247</td>\n",
" <td>0.085881</td>\n",
" <td>0.011645</td>\n",
" <td>...</td>\n",
" <td>1.199418</td>\n",
" <td>0.001456</td>\n",
" <td>0.080058</td>\n",
" <td>0.177584</td>\n",
" <td>0.109170</td>\n",
" <td>0.001456</td>\n",
" <td>0.046579</td>\n",
" <td>0.008734</td>\n",
" <td>0.013100</td>\n",
" <td>0.040757</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2008 rows × 63 columns</p>\n",
"</div>"
],
"text/plain": [
" negate ppron nonfl i relativ percept quant \\\n",
"7343 0.020151 0.458438 0.076826 0.332494 0.328715 0.030227 0.036524 \n",
"2127 0.034139 0.470128 0.034139 0.301565 0.281650 0.046230 0.044808 \n",
"2225 0.030955 0.484260 0.073977 0.351522 0.317419 0.049318 0.037775 \n",
"5473 0.067358 0.393782 0.058722 0.260794 0.303972 0.034542 0.058722 \n",
"1515 0.037975 0.379747 0.042194 0.299578 0.248945 0.059072 0.046414 \n",
"... ... ... ... ... ... ... ... \n",
"550 0.053942 0.448133 0.049793 0.319502 0.242739 0.020747 0.024896 \n",
"3477 0.025516 0.520656 0.102066 0.375456 0.284933 0.060753 0.034629 \n",
"3042 0.010163 0.443089 0.052846 0.239837 0.241870 0.034553 0.038618 \n",
"9734 0.045028 0.360225 0.061914 0.250469 0.275797 0.055347 0.034709 \n",
"9261 0.034934 0.425036 0.055313 0.216885 0.229985 0.039301 0.024745 \n",
"\n",
" affect shehe achieve ... funct sad you \\\n",
"7343 0.095718 0.044081 0.028967 ... 1.358942 0.006297 0.021411 \n",
"2127 0.088193 0.076814 0.014936 ... 1.494310 0.002845 0.013514 \n",
"2225 0.107030 0.076600 0.031480 ... 1.606506 0.003148 0.021511 \n",
"5473 0.074266 0.072539 0.010363 ... 1.298791 0.003454 0.005181 \n",
"1515 0.033755 0.063291 0.016878 ... 1.059072 0.000000 0.004219 \n",
"... ... ... ... ... ... ... ... \n",
"550 0.080913 0.068465 0.006224 ... 1.307054 0.014523 0.020747 \n",
"3477 0.116039 0.078372 0.027339 ... 1.597813 0.007290 0.029162 \n",
"3042 0.083333 0.095528 0.010163 ... 1.355691 0.008130 0.026423 \n",
"9734 0.110694 0.059099 0.014071 ... 1.252345 0.016886 0.009381 \n",
"9261 0.090247 0.085881 0.011645 ... 1.199418 0.001456 0.080058 \n",
"\n",
" cogmech auxverb they incl money feel we \n",
"7343 0.152393 0.119647 0.010076 0.035264 0.013854 0.003778 0.050378 \n",
"2127 0.256046 0.148649 0.008535 0.047653 0.009957 0.014936 0.069701 \n",
"2225 0.178909 0.136411 0.006821 0.038300 0.013641 0.018363 0.027807 \n",
"5473 0.127807 0.100173 0.001727 0.032815 0.015544 0.013817 0.053541 \n",
"1515 0.168776 0.067511 0.008439 0.025316 0.021097 0.021097 0.004219 \n",
"... ... ... ... ... ... ... ... \n",
"550 0.155602 0.105809 0.008299 0.037344 0.020747 0.006224 0.031120 \n",
"3477 0.157959 0.156744 0.002430 0.033414 0.019441 0.026124 0.035237 \n",
"3042 0.172764 0.095528 0.012195 0.069106 0.000000 0.006098 0.069106 \n",
"9734 0.214822 0.119137 0.000938 0.045966 0.024390 0.037523 0.040338 \n",
"9261 0.177584 0.109170 0.001456 0.046579 0.008734 0.013100 0.040757 \n",
"\n",
"[2008 rows x 63 columns]"
]
},
"execution_count": 194,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {},
"outputs": [],
"source": [
"y_pred = model.predict(X_test.values)"
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.24651394422310757"
]
},
"execution_count": 197,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"accuracy = accuracy_score(y_test, y_pred)\n",
"accuracy"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x864 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(12, 12))\n",
"plot_confusion_matrix(model, X_test.values, y_test, ax=ax)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" f 0.27 0.27 0.27 515\n",
" n 0.26 0.25 0.25 525\n",
" s 0.24 0.26 0.25 476\n",
" t 0.21 0.21 0.21 492\n",
"\n",
" accuracy 0.25 2008\n",
" macro avg 0.25 0.25 0.25 2008\n",
"weighted avg 0.25 0.25 0.25 2008\n",
"\n"
]
}
],
"source": [
"print(classification_report(y_test, y_pred))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# With reduced dimensionality"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [],
"source": [
"reducer = umap.UMAP()\n",
"mapper = umap.UMAP().fit(X) # for plotting\n",
"embedding = reducer.fit_transform(X)"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10036, 2)"
]
},
"execution_count": 201,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"embedding.shape"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['f', 'f', 'f', ..., 't', 't', 't'], dtype=object)"
]
},
"execution_count": 202,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y.values.ravel()"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 203,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAJtCAYAAABDpcZWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdZWCcZb6w8esZl0zc3aVN2tTdaUsNihaXxWFxWGSRRZfFZXF3lyI12lJ3TdO0SRp3l8lMxp/3Q89hDwtnD+dd9hR2/r9P7cw899zNSK4+qqiqihBCCCGE+PemOdYTEEIIIYQQ/3oSfUIIIYQQQUCiTwghhBAiCEj0CSGEEEIEAYk+IYQQQoggoPvfPDg6OlpNT0//F01FCCGEEEL8s3bv3t2pqmrM39/+v4q+9PR0du3a9cvNSgghhBBC/KIURan7qdtl864QQgghRBCQ6BNCCCGECAISfUIIIYQQQeB/tU+fEEIIIcS/O6/XS2NjIy6X61hP5R8ymUwkJyej1+t/1uMl+oQQQggh/ovGxkZsNhvp6ekoinKsp/OTVFWlq6uLxsZGMjIyftYysnlXCCGEEOK/cLlcREVF/WqDD0BRFKKiov5XayMl+oQQQggh/s6vOfj+0/92jhJ9QgghhBBBQPbpE0IIIYT4B17XzPpFx7swsOZnPe7pp5/m+eefZ+TIkbz77rv/9PNK9AkhhBBC/Ao999xzLF++/GcfqPE/kc27QgghhBC/MpdffjnV1dWccMIJPPHEE7/ImLKmTwghhBDiV+aFF15gxYoVfPfdd0RHR/8iY8qaPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgOzTJ4QQQgjxD/zcU6z82kn0CSGEEEL8CtXW1v6i48nmXSGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFATtkihBBCCPEPBNZd94uOp5n+5C863s9+3mPyrEIIIf5PBfweVHsjqqoe66kIIY4RiT4hhPg3pnrsNKxaQfnex3DvfQJ6yo/1lIQQP0NtbS0FBQVccsklDB06lDlz5jA4OPhPjSnRJ4QQ/8bsmx/lz++18cHyJA7HpYE1/lhPSQjxM1VWVnLVVVdx8OBBwsPD+fTTT/+p8WSfPiGE+Dfl83rZ1RqGo1eDp1TFH69ByQs/1tMSQvxMGRkZFBcXAzBq1Kh/+rJsEn1CCPFvRlUDlHSv4YuHaqmujCav0MkpJ48ib+ToYz01IcT/gtFo/P7PWq1WNu8KIYT4Ib/qp7a2mZoqI6AQr1gl+IQQsqZPCCH+3ZTvr+Cz+xVQYcg0P7+7/oJjPSUhftOO1SlWfmkSfUII8W/E7/Hy3NO7QNWARuWa03OP9ZSEEP8f0tPTKS0t/f7vN9100z89pmzeFUKIfxN+1cdfLn6DQbsCqPzxfhvmpInHelpCiF8JiT4hhPgN6/d0cKRvB76Al2f/+gHl/UZUv8r95x8md8hJx3p6QohfEYk+IYT4DasfOEij4xD93g5aKxRAIaUY9FP/Fnwet4+AP3DM5iiE+HWQ6BNCiN+wnLCxDImYRtubu4hcuxEAXcBCRPhQAFrrK7hkyXtcfNpbtG8rO5ZTFUIcYxJ9QgjxG2bUWog1pxNIrWLUqgkcP6KH665fiFFrAcDtsAMQUDX4nO5jOVUhxDEmR+8KIcRv3L6vvuaFDyPw+xUeeHoWoeHm7+9LKxjFiYEP6Vh1ANOfJh3DWQohjjWJPiGE+I37cnsHgwM6NBqV8NC8H91/3BPX0b2/iohhmcdgdkL89q1rfvMXHW964vm/6Hg/l0SfEEL8xp0x18Lr9kHOvWwKBuOPv9ZDsxIJzUo8BjMTQvyaSPQJIcRvXO6UJfx5yrGehRDil+RwODj99NNpbGzE7/dz5513smTJkn9qTIk+IYQQQohfmRUrVpCYmMg333wDQF9f3z89phy9K4QQQgjxK1NUVMTq1au55ZZb2LhxI2FhYf/0mBJ9QgghhBC/Mrm5uezevZuioiJuu+027r333n96TNm8K4QQQgjxK9Pc3ExkZCTnnHMOISEhvPHGG//0mBJ9QgghhBD/wLE4xcqBAwe4+eab0Wg06PV6nn/++X96TIk+IYQQQohfmblz5zJ37txfdEzZp08IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkFO2CCGEEEL8A+cvfvsXHe/NL879Hx/T29vLe++9x5VXXvmLPa+s6RNCCCGE+JXp7e3lueee+0XHlOgTQgghhPiVufXWW6mqqqK4uJibb775FxlTNu8KIYQQQvzKPPTQQ5SWlrJv375fbExZ0yeEEEIIEQQk+oQQQgghgoBEnxBCCCHEr4zNZsNut/+iY8o+fUIIIYQQ/8DPOcXKLy0qKopJkyZRWFjIvHnzeOSRR/7pMSX6hBBCCCF+hd57771fdDzZvCuEEEIIEQQk+oQQQgghgoBEnxBCCCHE31FV9VhP4X/0v52jRJ8QQgghxH9hMpno6ur6VYefqqp0dXVhMpl+9jJyIIcQQgghxH+RnJxMY2MjHR0dx3oq/5DJZCI5OflnP16iTwghhBDiv9Dr9WRkZBzrafziZPOuEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4QQQggRBCT6hBBCCCGCgESfEEIIIUQQkOgTQgghhAgCEn1CCCGEEEFAok8IIYQQIghI9AkhhBBCBAGJPiGEEEKIICDRJ4T4zQsEArz80ru8+9anx3oqQgjxqyXRJ4T4zXM4u9i0LMCqzxzHeipCCPGrpTvWExBCiH+WLSSGEVOMmM3GYz0VIYT41ZLoE0L8W7juxtOP9RSEEOJXTTbvCiGEEEIEAYk+IYQQQoggINEnhBBCCBEEJPqEEEIIIYKARJ8QQgghRBCQ6BNCCCGECAISfUIIIYQQQUCiTwghhBAiCEj0CSGEEEIEAYk+IYQQQoggINEnhBBCCBEEJPqEEEIIIYKARJ8QQgghRBCQ6BNCCCGECAISfUIIIYQQQUCiTwghhBAiCOiO9QSEEEL8a/V52ul0NdD10C60io5RD1x0rKckhDgGZE2fEEL8m6u176dhoJTqdRsoe+YzAOq/2sr6cx/E6xg8xrMTQvxfkTV9Qgjxby4vbAL93k6K35yJRqMF4PArX9Kr66C7vIa4kUNYf+6DNC7bzikVb2GMCAFXJ4ol7hjPXAjxS5LoE0KIf3MmXQgmXQjk/O223BdPpzZQwmCIFwA1oKL6A0f/XPMNNKyFoktRooYciyn/Q32VjfSW1ZF6wkQURTnW0xHiN0M27wohRBBKiMkjyZJPjDmdyt7thD01ihPb38AUFQZh2RCSApZYVL8XVVX/23FUVaWv9/92E/H6sx9g7Ul30Vfe8H/6vEL81kn0CSFEEDJqLeSEjyOg+mhyHqbP00b7YC0AmughaEbfCH4P6sabUauW/rfjLPuijGsu+IQ9O/7vAmzUAxcx7I/nEJqd9P1tqs+N6hn4P5uDEL9FEn1CCBHEQvSRFIRPIZd4UpvLUAO+v92pNYA+BAyhP1hGDfgJbH8A7/4XiIhXiIkLISra+pPjqwEfavs+VK/zB7f7Vf/R+1WVPdsb6O5y/tTiPylp9mhG3XchGp32b8+z5wnULXei+tw/exwhgo3s0yeEEEHG43dRY99LkjWfEH0EcZZMAmWfw0ADpM8HcxQAijkaZdL9P1r+228O07jTxojztHhidnLtY2Por3LT1tJPXEIozY4Kmp0VFPb7MTRvAb+bNtM0FH8O1U4dr728m5mX+5gzcSbd1Uae+vM6ho9K4oY7Z/63c3Z4e2l0HCLDVoxBa/7xAyJywGADzY9/rXWXVGEICyEkTQ5MEcFNok8IIYJMj7uZFmcFGrTkhI8FQBl2Kbh7Uf4j+FRV/f4gCdXnRj30Fgw0QfJ0vv2ml/bWCEabsoEK+jq9PHL3apJTw7njj5Po1bcy4O2i6svd5I/QsrdjBM+8O0Da4ddIHZqE1x9LwK/B4x8kLSuB4xbkMWZi2j+cc6vzCC3OCsIMsUQaE9FpDChuO2rVUpTUWWhyTvnB4/9z/l+8u4dNT3yN1aByyfvXkJwW8cv/QIX4jZDoE0KI3yBXRy9aixG99SfWev0PYszpKIqGCGPC97cpBtvRNWWAL+BlW9sn2PRRlHwagn3rZi6/oAmAQFcVt953Bo4BN6nJkXh8w+n9+HFGWvXEOBy8l7SE9JfuoPft7dRuPkJ69VskZpsJ/WolzfnDOPW0LE45MZf9PSvocNWRGJXLuZeM/cl5vv/6Lhrrepkb2kPlO8sY9dXVuPwDbGr+iAhDIsVqBHTsRTVFotiSv1/uwGMfsesPL7Fw21/ZvLGejuQMOoAXz36KhWNiUVWVcU9cKUf+iqAj+/QJIcRvjLt3gPcTTmXZlOv+v5bXKBpizenoNcafvF8BNIqWwQEPq5dXUaLGsfLdQT4/v5zGI5lExVhJzYgEQO9zExXfyZiiLryRIbSMm8xbX9ZT2qgjfGga1uR4YhLNFE+Mxatq2PvAu4RqI8kPn0xu2Lj/do67ttWzYfURSve1ULe/gX2uKHra+6m17+OL+7S8cG0ra6/5mkDe71DS5/xgWa1Rj9ZsQNFquOOhuSwY4yA+YpBCdwVV767m0NOf4XO6/r9+dkL8lsmaPiGE+I3RWYzETRlG9MijJ97rPVTHoeeWMuKu8zDFhH//ONXvRdHqf7Ds/j+/S8uavRz31QPozD8dfVqNnonxp9NYto8Tb+9CqwtgHhxNytwFdE4ZwDpYT4w5la1XP03Tip0MffkqXtxWCahkTx7LhDgbky7MJ6M4FYAjfTvIXFRHyFeb8Da1ARBvyfr++byOQTZd9Agx4woouGIB7f5mPvt0N06Hl9vun8Phg63U95XQ2hhJbqaNpIROWpurqVu2Ecd9FxBqbkINS0c9/D44mim48nqG/P4kAAJHPqexw0drTxhZvz+XqOkx2H1d6Cw//W8X4t+ZRJ8QQvzGaA165n/3+Pd/r3htOYefXUrMmHyyzzu61kvtLEUtfQU170w0CeNQVZX+ikYavtxKx/ZDeHoH0JmNeANudIrhJzd1Jg8pJvCdm67kTvriO3Flw4C/mxZHBTHmVAZqWhmoayM+M4txxZXoNQGOO3M06dnRPxiv7dGtePJVBra3EXPzRfhR0P6X5xmobaP2o/Wk5lXDls20DJ3F5N+56PlLKwl6D8nz8wkLNzN+agZms55b7oEn713NrtCLWUI56r7l+JJORNPfjMbVBgH/3w7osDdyxYJqegYMuO0j6DB7cPp6cbs68bdupcTsJjWkiITuFpTQNJTwLIT4dyXRJ4QQvyH+utXc+2A1qjmOe544AUVRGH772USPzCXtlCl/e6DOzGAgBI3fiBk48tYqNl34MKP/cgnTP7qLsloH2vZu+mK2kGDOIS9i4o+eq/ybXTz0QhkFuTrG3ghajQFdwEi3p4n2nmpmLb2PgMeHVq9y+ZwKCM3gwymXcyA5htAHbsASYmDspHRaXtuOz+nC/vsr2LC9mz23r+JPj87//nkihqYza+n9uHe/i181o9MYsIRB78G9NK3JY8iVi5kxNxeANmctKn5Uby9qwINfFw8ReSw/8RkcHT7ObP2Y1Stq+PKjEq69bgiRKWczkFrBtrmP4T5cyqltL+CuX4lhcBv29m240/Jxulqh+kvUkGSU0Tf9q19CIY4ZiT4hhPgN8Tv7qG0zAf24XT5MZj3GCBsZZ8zAWVuFNiT66CbesExuerUInb6SZ94oJnJYJpEjsomdWIguOoJnrv4AW5iRcx62YfGrtH/8FNXrVcY9fQ2K5j929zYZCGg0dHVpiTGlkhxSgNvnpLx7M6tn30b2zJmMffgyGt55icQkO4pvEGNkKNpwG68/vx2L9Wj0Ze45m+8+suNq9WIy6xg2MhG7p4v9XSvJDB1DojWH1EUTYNEEau37sQ+UY9VGkLh0HhgjqW/8ioSAGX9EHofs6wE45/Q+wrtq+HLuR0RPnEzE6DFEKAqK1khPt5P+PjePPLobr3sP5zyhkvPeyST3jsDYU42xrRQ0BmyZC5gUNRytPhSlwAbWRAAe+dNqBuxu7n5kPhqNHOwh/n1I9AkhxK+A3dOFw9dLnDnzJze1ut0+9DoN+vyTuf3+Zvx+DSbz3/bX89dtwFz3OTtf6WfcO6+hKArpWZE01PVwuLSNxKwk5u14CoPWxL6djSSlhDF5Zhbj44YS2P88akwNOyvb8NZsQde6AqXoUuzWcFA0GCPDGBo57egTGcDUrKe57Uts6XG4u/vx2ks50mIjZ+hkTi67ioA/wJbrvyEiQk+g/ENcIS5qdyu4HXZe/vBsdDoNve42fKoXv+r5/t8wYHfz8fNlZE7zMDK7kEFPKYOeDtqUATzV9aSymtjYGPrDUzH1l7ElZxhRG4oxboTxS87/fpzTzhnBoul+nnq/lEGnQvignZyOJlwjJ7Ohu5aCkDBiBuwo8WPR6/7j6Oe40d8v393ppL9vEFSVo4e1/Nh/PaXN/xXV1QtdpRA/7kf7agrxc0j0CSHEr8Dh3k04fL2EGmKw6H54BYyqliPcd+VWCkcmcP0fp2NK6yLG/MPz2mlCE3H2arANHY7LN8Chno2MnR1L2WOtfPXpAUr3tjDx7ABxFPL5u2UAdLQfvWyZknMqFS3rsb7uoN9vJ9I7gM/ey8a3DgJwwulFP3iu0OwkljR8yPJZN7L/9Y85MGoWja16Hp4cRxzgD6i0tfTjd2uhZRvjFR3xF4ehzz4afADlO5zs+i6ZMTfkfD9u2YFWSrf4cCsKK5/ci81m5r5npvPJq1/yxqp00ow92MaGM+ZMJwfetWO4w4QbL4nzR9LQs4vEsGK0Gh3vvrqL7WsquHRcN11nR+MkDIuagKPkdUhOg7ixUDgJRffD0914+h2gqtz/1EJUFTTanz7BRc2RLu79w3JOO28E8xcP/V++0v//1LqV0LIVRW+F2BH/sucZ8Pbi9PUSa07/lz2HODYk+oQQv1lqIPC3TZG/5LiqCm07wZqAYkv5xcf/KTlh4xnwdmHWHj1XXqDnCDR+h5J9EvZAMyHRKpFxOrrdzdTY9+L09ZOpDqNl7V5SF4xEicgmZPHjDFkMdfYSelztrFnRyYSpGUyYkUJNbTOhUVo6ywYBmDAxmfHhLgJ+PxpLDNGJ4xiw78MSM4nDXYW4P9uD7eU3WHjG8RyefzUDc0aTedYsjDFhtG8uZei1p2COjcDwRC5ZtVqivzMSYj4aUTqNj6du9aM16qFLx/aHa7G3aZm/LYnA5j/iD01nw7dRlJY46GwfYP3qFvQ6Dbu21mLUBwjr1ICqwRbvpdvbji7LiC3cR9NAJNpdCkOjavEWZmDTGhgZMovKum9o9mv45uUKTjlnNj1dTuxOH6vv20mY/grmnJTPX579ltGZGsaMOUxdyhBsOgXL370Gn0+6FNs1BUw67zLCjDHf366qKupAM7TvRonIQ1Gi0WpVNE1rUb0ZKPq/H+mf4wt42dXxFeGGOPIjJn1/u5IyE9UYBpEFv+jz/b09HV8TwI9BYybcKFcx+Xci0SeE+E2q3bGFWvN+QussjFx4/v+8wP+C6uyAw++BJQ5l7G2/6NgAO+55mfpN25n/5kNYEqMBCDfGEW6MQ1VVPH1t6Pb/9eiDo4soSpzIQ88VEaKPIKD6yQkbR6QxmT3Xvkr/zrWkRmegJs9AyT4RgNYHtzFY6KTxYBSBlG4uv2EyT75yOq6mbg58+jEL7j+JI098yJZbV2A2/4nkIV1ERQ0hOnYR5Qfb+Muf1jFydCKJKdEMvPs1+lAL9poW1iy+E1tWIvaqZmLHD2H6+3dwsGsDBkMdR057mfIQByPvuxAGO7E3lLKhPJVeVwqJw5OI8x+9Nq/dqWWLXcOw8+zMLasn2VLHXW+UApAa48Ri1OF0+XC7LIw+PUCdfT+JQ70smNZIRsRMNAY9mxe+RsbSU3D5B9jTvZyA10XfRj9bt4SRFrmGq24+ne7SBN64u4/139YTGWHjcL2K6o8ke5qGHl2AXncbFl3YD16X2DNHoCyIoX2whlCXHbXjAKTNheql0LL16Huj+xBp2Sfz6I0ubINV4HfDLxx9KgHcfgfuwA+vR6xYYlDSj//Z4zTU9vDmi9s584IRZObG/uzN0bs+sFK2Y4DCZ00gZ7b5tyLRJ4T4TeoPawCbBa/J8z8/+H+p9uBhnn2tkIKRPs4a2f+jza3/P1SvE7wOVGMkztkQfckUBjy9+L0K+zpXkGEbSXJIAW+9uIO1Kyq477xonvs8FmNUO/c8qUNv19LbWkv4kHSSrPkA5F6yAOuiGlRAMf9tzVTbt3voeriShyvfxxYXDoBBa6Lik81UPP8loRkJFFxxAlq9jrjhIVDzKWpfDcqoXFLSIxg/JZ0ps7Lwhp3Ot6uqOPupcwnTBdhzx2tknD4dZ3MXMROGoKoqg4E+/KEBpj47g5jpxwGghCSxunkO325tASAxD867NYNA43e8sTKOPUcMLLnGT3wSNGh6WHL+CD55Zy8nT2xi+KhUvJ1HcHj1lETmo0FDysYkNlz0JgUfTSJt0UgidzxHaG4yihl2H/4a00ArI9PbiT2rmMzJyai1y4joWk2W2YJnSymjH5rFuGlZHHn0HdZNXEfGVydTWbOKhIuyv19TPDgwiNkRQUxLNmkjRqCWvg7dZUevUtKyFb/OTG36KKJbD1P7xds8uTSHEe4YUv23MeerBzHpbWgV3U+G1UC/G5fLS3RsyI/u6+120lDXS2FxwvfL6jVGpiSchfIzr5/Q6arH6/eQYM3+we1VlZ1UHuqg4ptXyQikoRSc/bPGC9PHocGFTmP4WY8Xvx0SfUKI36SCjAU0tX1LfMKYX3zsHaUBOvuNbN5kIGHkdhZMnf2zl1XVAHSXQ1j6D/YZK2l4Bw9+Om8owRWrJ+6eSQxE2jGpYfhVH421fTzx7Edk5cYRFm5i44NtdEdGYg3YAfh24e2U1Q6Q9+AVLDpvDBqNhqjibALbosHVCWGZ3z/XvPVP4HO4MMf+8DqzeZctxBwfScyCIkoH15H66PF882oJPnsip56ZhRoIsOfap5hamMHQ4ils6ink4Jp+3n+nhIUnFzLlyZNRG9ehzD6TstJ2Hr57NRf+fgxj4tdhzm5HifF+/1zjFyczGNVBZFgYlpRu2gdryG1vZGaRk1Z7KF1HCqhdFI3T18DUhSOYfXwmyrbbwV6H3hpJ+GAbOkWH3eEiZuQwJux5g/ff20Hk/ucIUzW0qLFcMWM7IwsupXvvLkpmFmLUQCNVaNGxzl7MOqeWgrNj+OOta7jhjpmkzhiBKdKEY4gOf5afjt5aujWtZIWM5vqLP0ftdvN77ydoQtsYyJhNe0wyqZFjCHjt7DE78eBgMHEIEW4T0bEuzJWDRL47gT1dywjgJy2kiIzQkT96T9x7y3LaWuy88P4ZmM0/PADjpae2cHB/C3c/Mo/MnOjvb9co2h88zu3yUrKnGUtpKc1fbWb6B3eis5hwOBvZUbUJn+plwbAMtP9lufGT01m19CA9zhAw/OP/uARqlkHnAZTiq7no6olcdPWPT+Ejfvsk+oQQv0l6QwjpKUevuqAG/NCxDyLyUAw/XpvyU1RVJeD1oTX8+CjI5AkB+BICPoVVb/ZQmNxNYkoYev3RX6hVFR289+ouLrhiPCnpPwwrOksJHHyN+rTRfP5RJJ4BPX+45zgGjVZceDE/Nx5DnQOP6qLL1UBm6Aimxp/D0oOr6Gxxk15QxaS1q4ibXMiEjz9n/v7XWPPKK4y+Loyv3hjGwS8qmBn/EdaMMWjyzoDEidCyDTx2AhsepS9iNtbcWah+J9uve5Yh15yE3qZnoKGH6JG5ZJ01i7odG/EkD9Kydz/frHLg08czaVoSH110H+GV+7BtKGHodacyZnwyA/ZRvP/abhpqe3jiFh90HwJHExpNBHq9hnrnPuLissiLKET12MHnQtGZ8Ft6yJnioXdXGH27Y5h+UhxKRh95ke00f95E87IK2mvNnHPnVHCZufx3n5KdO5kbbyrC3+NEb9ISbeznnScbebd8BSPy/Ryu0AJRRMX76Wr1suGUoUy3aImZdy71nlIMji4SworxhumISCwnJdXIkOGJdHW5iIy2sHH+o7g7+8i78DL67T6+3LSf1In9JJizSc2KQo3UU7CoFZo20BgZQW1PBy8/+C0z52VjLN5LqD6GvMhpGBOtPDYJ4GRq+vfiV/20D1Zj1NpQVRWHrweLLuz7cBs3OZ3mxj6Mhh+GHMC8xUOIiQshOTX8v32fNjf2sW9nIx+9tZcRrkbCVm3H2dTJQHQLla5DfP6Agt+vZdHHGrwBN1pFj0bR4PX6aWq0Yw7JRZN1dLOw6nODVo+i/N1aRHsDOFq+31zt9wcYdHoJsRlR1QDewU48eh0h+sif9fkSv04SfUKI377O/aiH3obEySi5p/6sRb47/R7ql27h9Lr3sSRE/eC+opQCikdXYFP8JORN4a4bvmH2VBMLT8wiLHMElYc6OFLeyeplh7ngivG0rN3LgYc/ZPJrN2GJycQfO5I6o5+aI124+3W0NPbx9ZMhFMzvxeJzsfMTPRfeMov0rFicHT3scS0nocjAOQ+aUD5porm7nwnPXsu0d25nzYpK3v7ayMT8GIZVbyLl3km4Iy0csrjJcbcQkToTUmeiDjTTO6DhusfbScj+mHOHmil7+jPiC1yk5DWw9/Zaxrz2NKaoULpfeI5J5yfg0E0gwdWIs0fPlqUK+8IziZudgA8zrX/6mHPG7WZCVAqr4xIpHpOMkj0M4sdDaBr5IQM890wO6/rLObjPRe7QUJSDr6OmzELJWoTa0QVWWP1ZA/ZeLxMj11HfMEh2QiojMvvZWx1BeGgL1tpS3lneiMEAvlAnpc4KiuvXMNir0pBdREO5EYvRxxnTWsiIt+LOSWBoVA3tgQg08SYCLVvRte9ltC0N7HUQiEeTdxpl533JiKpmxpyUwwkvLAZgwqc30hxXR370ZJYuO8LGZXWcHJ2BKc3G7Q/MBcDVM4X33iplVHgGFoeN1oZD1B+xc+HxZ+ILuDFofrj/XrptOJ7KDZgOhZKwKItudxMHuteQZC0gJ2wsAKecXYw/4MXp7yVE+8NoKhqRSNGIxP/2ffrmc1v57tsqClJMFMUqnHbzhVg8ZxKWmwIOlZD+EqZOjaB9SyebNr6BP1tDlBJJYfxC3C4f9906hpCoowcHqc4O1B0P0J00Cmf8CFJChn6/SVkpvBj87u8PSnn+sY3s3FLPw8+fSIzjO0ppoN9iY0zMiVj14T/rMyZ+fST6hBC/fRF5kDQFJeFvm6SaHRXU2PcwPGouIfqja+MGB72oSoCK5lJMQ2Ow7Ig8eoTpf3D6+vH4BwmzxvP7UxMpf2875a9+SKQrAr0zwLU3urjo6lDmLMxn7YoK1q06QnJ3Ey1vfI2/uoHu/dXo5hZxIDqCFGMi9zyRhlkbRtmOMhqq+xnePJSKh96mKXc0h/b10Fq7gq7vDmOekYReZ4THGpn55f3wx5vRaI+uFRo7KY13X9nBlsNR3PjeGXTHd9Chn4bT28SAp4sIYwIA+1wlOIsmkpTtITpnkIRTpjBVfzOmiF583hbCRxdhTYmm/MVvqNviIen4RDTzi+lJG2SgW8H75edMOG4mLX4jtW0qXftcTMyMIEpnoqNtgN7mJtQeM7TtRMk7E7VmGbqWrTTsPo4NG3tIu8zCqLQRKHGjWLW0lPJ1lSw5rYvb7rkW+4Cfx/7yLb39cMMFsYyqX07hlZPQDg3jgXtaaW7vJTzEQ8ZIHa6Al5ZSFX1ENHGKk4xCMwnZBj4pjWLnZgtnF8cQ3Wug6elNTHz1FgyJ/aA1osZPp+Gd16mtjaZmzVas1a04KhtZc8rdjHv8SrRmIyEnZODtOYLd28Xw2Vqc5gCWvBpKunsZE3sCrb2NbNhUyvrvOmho9FBd2cWs2cmcdUoIm+7/K1wcRbJ5CNkRY/A6BtFZTNBfh775C9RyO9VOPVEz8tANRqExGenzdBBmOLqv5eHerXS4ahgWMovI0OSf/db2bNkDARvG8j1kVJcQ/fBijOHxAIRZUxltvZiRl/p489rj8d52OhrVQEhXOdsqCnnhiU1kl2xjZHQP857Kg+RpYIygyqwwaN9NrCUDk/boATaKRgv/JWjTMiNpqu/DbDFw6KCWFXtCGHMabHn+eSaefDHW5JifnK/4dZPoE0L85il6K0rOKT+4zRMYxBtw41e9bFlfzevPbcPj9hMaDf2dcPK5Ntw9A3TuKidpztH9Ag90rWbQb6c4MIvPi54h7PmZrGlIIr2rnaHjxrK9rh1vSBPvvdGFLULHmFkZfPhWJb4hM7j74UyS542lYd9uBuK6MfksxHqS2HjlnYy5QOHP5weILQxF3XEvlUccZA6JZlvHbkIiMzE/WUvzxlrcvS4URfnBaWhCw0xceOV4+gZ7yBtWSI+nhcCBASo/XEntNTpMOhsx5jR8ATfo3dz38MkM+Hposx8mIXMdrWs7+ex9AxPWz2Zr/2dQ0Yw5yk9ndDyrnq5h7jl68ryV7A3MJ9ClZ+zaCgoOHSL7wfMYvvgmNL0VPPq71wi1+KCpDXoOQcoMlKQpqBo9+ltXkReXQJ6yD5QRKCGJbPhuDw210ZzR2ULihCiaD+6jtx8sRj8FthX0XXkqRyJ6caMSP97A4DIHE8bYWPZsgJmnWZlw1ZMoikIskPDHOg72rKOpzERsi0pdZx1rvvHQ78+g9sVtXDxrM4Qk4tn/EdvvWceuceG0a0P409K/0KBdiQYtm3IeQWc1cU7/14yNPQmz1oa+r4OCWBcxoQrhpjhq+/fz+pMHqN2nMn2JjUnFo3nzhe0MCduP5nAtPWs7sE4dC5FuDn/0FVuveJL4mSNImJxHQraRZWXhqJUHqFxeSWe/lYS8bhZeV8ak+DNQVYjWJ1O/eivfPXwXp+x67UfvYdXeAP11qIEAL/31CCWNFqKjzcQvXc28UDj9vXT8ahH68B/vvqDR6zil/C1Uo4pJU48hcSyYQ0lIsjEkbij5I43gPgCeATQT7maot5tBn/374PO5PDhra7BFuSC6CEXRsOjUIhadWsTWl7/lgy9q6NWHkzXeT9ypidR+tIyKl5Yz7pk/kDjrx/swil8viT4hxL+dHncrLc5KhkXNJswQi9vVi8ftxxKqISLFhzXUiKa/GZ/Txfbrn+Pkg68fXe7jHipbfQy7WIepMBpNViSOrxWak+JQM2I482Yj7d4KVn+tQVVVhi/pwqvVodGoOCcFePTub/FX15O0/kvSXriQrtg3ob+cdbe6mfvacWiavgO9mezEPNq+XsOYeSeis3bQdPOnKA8MYVjYop88+jNvopZNBw6xZqODedOn0+R9ltCbCvHj45vPDrPt6038/uxcRi8YhaJocPr6aXbXoIlMYm1vKttybCTs9RM/VGHUbSOo71dZfcjP3h1tpOp6yBzZzfOfp9HTqmHSSTE0d3oomj0brVaLGpkPdivN++sY0BvwtofTeqiawnkjSM05mQh1DVHt1YSkzaC/J5ryM86i4ICec24rQpOZTmXfTrLyhqLTHsTp1vLKt5mkjuvEkGahdKlKRs4gsfUbsJWMY0jRENZ+3EqIcyUnnzMaTJG0OquI95kospWQd1UqL95hwTNoBrOZrkGFgKpB42jDGHAQfec5pPfFc+68IaTnxNDZEYZW0TFnxV840uJi+6ZahiccYc2GFrbsCVDVqGXJrXq6UhsAhYzRKl6PhjEjPGS3P8r9f74RXNmo/Q1MuLaDWHaihg2nJdoNgD/gwzamjrZ+E1t6swix+hhw6NDqID42mhxTIo/d8y3lZZ3ce+ck+m7YTfTY/J98z6qH3wdHMyoavP40HAM6HA4vGbMnMGxmLmSEoDWG01P2HY/8tYPp84eRZW/CUddG0S1nEpqVSEAN4PRZaHHW4eQjHjitHCVuLEracajemSih6dR+vpFDz3zO9HduxFP1IV0tMZS/sZXE1ApC5kagFF4C0UMJ1K4CvZWPVzbQqw+nqH4HOX3DMPVnklv4FekPRFOxpZTYGYVylO9viESfEOLfjss/gNvvwOM/eiLiGXNzSR/vps6xh2GRsznSvxOnLwrzgjgSR2WidpWBzszmj9upj0gm+dBehr9zMu0RTqacAxvfgS/eOcSRfYMMH+FBVY2AwvLHVbLGqugNUL9jDwf3RRAZE868j66kLq0NiCfjntl4DydiGjsVDr8NtcvQqsuI0vhofB+iihLpcWtwRyq4AWvHftRD76AUXowSmUfA60OtcbP+ZT19nY0kln+DEtpJZ6eBybOmsb/3AIODAV7560YG3qrkjAtGMXNeNk5PH3a7iUmnWej9uITJkSqRFTsJJEylZq+N/EINudMbmVjYTts+O6fF7EMdFk5ohp6KWwpZfved2OptREwbSfywxVR99AkB1348uh4+rs5ia4WT+55YyKLtz37/c9esf5sxl8fCc810b9XjPj6bHudhBlc0Mf34PFZ/U872w+EErCqWAS/7Vxnw1lpJrBxgYLyB45bE09TQTaRrJ0/fVU+TPYTj/+jFgJfuhHTyewZR+jSgN3DPEwspefVxVpQZOH64jtpGlZVlVtpaWjnpgrEoisKY2BMAUI8LcP/ZH+IcrOGCeV28vTyKojQ746YaMCaaAEi05BI/0c+QDaWEb2lgrT0UjbsE87A+UnqyOPjkC6Q9OxFT9w4COX7Gtt7GU9e08fHLAY672M85xzeSEdrP3q4Yvl4TQ3JUOJ8+vZED+8LRaqBp+XYGm7uIm1j4/c/L7fah12uPXt/Xd/S9quaex7SCraQkHKHlhTouqHgDVYUDe5rJyovAvulempqHUl3ZSc9jL+Js7iL/yhMxhFop2fsNvfHdGPwaPBYL2Ro9a7cZMax5jRmFbaiTH6bixU+Juj+ZI30rsdv8+AMdWO+KxPlxLL6I4TQsq6F18zImnNlEz6CNLl8uMSGDFMVZSEmYgiUkkq+3l1Jx2M28uxLZ1Po+I6PnE2qQzb2/BRJ9Qoh/OwmWbKKMyTgOtfDVRVcy/tFzMRZZKF+vxRHSwoSpU9GEeQi94QCoXagHXgKdhavuiOelr53UNbWTl97FyHaF4ZNnEqJrxhTXS2+3StQYA9fGNvDy1iScfVqyxgQIq6uj+5K9LMrPZJlxJM/+dZAz/gwWdwwZ089AN+voGW4DCeNhsBOvJomO0mYSZloJWPT03+KiNDOUNw4vY855OrZ8VMD5F7Yzdm4ee+5+k3e29xKancykyTHsufIhtp14Dm5Vx8KQFzh7dBh7vs2ixxQDHj+fvr8HY952Du+GTe8pFBlqGTLRw85PXcy9aBYHO/N5+zMHw/coTGrey4HGMaQs/h1jPe/iMTq49/lUWgc0jNMYaO02U7e2n7ltlZy19H4G9y1F3/MdLRV+zDE+rjj7Q2bNy+XUc45eEqytwkRri4b8u+/BlpeLR3Hx1YnXsrHMwJFhE5h2jo4wTQimsgp6n9jBjOsXMXvOTEoKEvlgaTPZX+3l/hfmEtJs5f3rWnFrfNg7VfIMPdSbYjnoKCbNv44KQzy7mpdhOzEdY7IBf/h8XnxjPe1tDq66eQoJSTYCzg4oeR6SplD2cSfDSlYx/OpccoZnEbbJzYG6cI6PbyXF4SImcwkRxnj6q5rZ+uhd7DUY2XL8mZi3NnLG4xqOxJYw9InhHImMAbcPjDpUbxMhESZ8HR4MYQofvpVCWmgft59dycji4SSNLuLxpyoAlTCzynKnwsnf3Eju1BmoAR+tFe3cdtsaikcnc96NeTjSJ5BoH+DNMz/CfHoakQuzaKgv4uvlW4kOj+CFh3cxaVYal5zzO54aB7bEbPpmJuDq6scQenQzbf83lWiO05Cl6rAGGnjn1n42xDoxGJKYMb+Q5tV7qRrwcOiNWOZdoWL2uAEtDpuF/HMmYEg/mZJzL6K3tJZhNzxKr8tARuIOkpONfHawiMrXvsT64koqLr+GZns/i63xGLW96DRyBuffCok+IcS/JYPWRMO+I3TuLCfC8zFKiY6tHxUBZXz0ahmPvngSytALQA2gurqgaTORYT6q6iLQNcHidAshhira/Z8TPzYDg2Lm9D/4MevCydBUcU9iGe+/pSMhLw/7DidT3rid5DmjWXHm+7gdUPq2i907u7jpvNcYOnUyStTQo6eViRmOMXMhIbbX+NNz1fS01PLMGzfT+95uyjsGGLS7GXDpObSylrFzpxA7sxh71UF8Pg+nXDGBA47zyM4vYECpZWf+MHJa6hgyM0DZWgVFUXAOeHH4VPKiB6hKjCLl1CRs+VrwBWiPHsK2L1vQaOC4sc0UJibiLTyfg9Vuet0TcST3UHAmmD/20B49hbpAN1q3C0PP0bVQ2ryJKM0wNN/F7uUDOB0qO7fUsfiM4eh0Go58sI3W7/ZzytlhaHRaTFiZevv1xFR007a+DluCm6gMD4yPZvSQLGIid9F0xMoHSwcIiVbJmaiy77a3yD1lLiGhPbgHVIY0HCFr5Bw2f+phw3eHueaeJUxK3Mg3T/pprzZx23lHMJ4cw4LZmaxfeoCctBDU/c8T6K3m443xZOS1kDG2iMItaxle1MPO1EHSJ6vsX66lrjuFJZE5aIxHD4wIzUpkyus30rr0Y7b4VdxuLUaPC7fBiEbRMbSpCu+An1eWj8AaYeXmc+OJdr9JqxLJLksSkQnRVKiFbKywk5X6GXOyjcwvNPPMWwP0lAzSdbEPbecm1Jpv2HZDE+aYmcTEh1DeuwW36kDnHMWG8AE036osHA1NdS527znCcWeFkzVWJW8SKBG5NL35CX3l3zDh2WsJdJYS2HI3DL2QieeMoNy9j2a9lrrTemgNP3oJtRkZrXT3jiNuUjKujGL62hVSlMmYS6txDLoZyIklemIxACFp8TjrGvji472s3qXnhjvmoOrdbNyxGV9hLEkLxrP4nlk4HF6SEyOAwh999sSvl0SfEOI3RfW7wTOAYo76h48b6HcTu2gKC0pTKavZS2NbgONODLBzaS9qZBhGk5aN136N/Ugz4569iCffiScz0ceJ45tYui2JXbsHSR3nJSq8mAxrOrED3RiOfImSNhfvsAVUrPicYqWFUU1mVkXN4M4XDnNHehp3PnQ8jSU76Rw4RGWdGb+tFyo+hXF50FNOnzeais59mCK9RKRpsBhN7LjiSXrfX8PkoekM6lOBTIxRoPYeISl+H9c9moK+Yy+aQy8y4u4bAWgfjKWsZz3KkPM5KbOexQu8mGzZtLkrKbCl4h2w07vjFWLGj8fe0YllQgSHezfh77NhMutJnXoKGB20lq3nqcddhIaZWHLZSJJCWjjnTid/etoPQES0yrxTO6nbsYOa5EPER2YzxjYGtfAQeQnw2dtl3H71lzz06ERmvbyQQe81hGb97RQkcROHEpO4ijExJax5tgvdGePo+KoMw+nZNHU14g4twRaZwbBxLjJS/YRFV7D/hk1Yc+bSownhsU9yuSwxBpunAUWBAbsb/QYncZpB7Fj581vZ3D+yh71f76Parmf9G6s44dQI+nyxrNgdT0KrlYeeLSIm6QTcg50w6GHkIh3Tk/tYuyufqn2HSbMsZafnLIpGp5M100xmWhiuWiuHXllP/w0ORr57J9EJaZTfdT3VezposBRgafOz75PnGX