{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "r02ouRHg8ZmZ"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"source": [
"df = pd.read_csv('/content/diabetes_prediction_dataset.csv')"
],
"metadata": {
"id": "GlmmGECmNK2K"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "NNKuyPZcNQV1",
"outputId": "3f89b7a4-c026-410c-92c4-b065047ebd39"
},
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" gender age hypertension heart_disease smoking_history bmi \\\n",
"0 Female 80.0 0 1 never 25.19 \n",
"1 Female 54.0 0 0 No Info 27.32 \n",
"2 Male 28.0 0 0 never 27.32 \n",
"3 Female 36.0 0 0 current 23.45 \n",
"4 Male 76.0 1 1 current 20.14 \n",
"\n",
" HbA1c_level blood_glucose_level diabetes \n",
"0 6.6 140 0 \n",
"1 6.6 80 0 \n",
"2 5.7 158 0 \n",
"3 5.0 155 0 \n",
"4 4.8 155 0 "
],
"text/html": [
"\n",
"
\n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender | \n",
" age | \n",
" hypertension | \n",
" heart_disease | \n",
" smoking_history | \n",
" bmi | \n",
" HbA1c_level | \n",
" blood_glucose_level | \n",
" diabetes | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Female | \n",
" 80.0 | \n",
" 0 | \n",
" 1 | \n",
" never | \n",
" 25.19 | \n",
" 6.6 | \n",
" 140 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" Female | \n",
" 54.0 | \n",
" 0 | \n",
" 0 | \n",
" No Info | \n",
" 27.32 | \n",
" 6.6 | \n",
" 80 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" Male | \n",
" 28.0 | \n",
" 0 | \n",
" 0 | \n",
" never | \n",
" 27.32 | \n",
" 5.7 | \n",
" 158 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" Female | \n",
" 36.0 | \n",
" 0 | \n",
" 0 | \n",
" current | \n",
" 23.45 | \n",
" 5.0 | \n",
" 155 | \n",
" 0 | \n",
"
\n",
" \n",
" 4 | \n",
" Male | \n",
" 76.0 | \n",
" 1 | \n",
" 1 | \n",
" current | \n",
" 20.14 | \n",
" 4.8 | \n",
" 155 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df",
"summary": "{\n \"name\": \"df\",\n \"rows\": 100000,\n \"fields\": [\n {\n \"column\": \"gender\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Female\",\n \"Male\",\n \"Other\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 22.51683987161513,\n \"min\": 0.08,\n \"max\": 80.0,\n \"num_unique_values\": 102,\n \"samples\": [\n 29.0,\n 39.0,\n 16.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hypertension\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"heart_disease\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 0,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 6,\n \"samples\": [\n \"never\",\n \"No Info\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bmi\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.636783416649581,\n \"min\": 10.01,\n \"max\": 95.69,\n \"num_unique_values\": 4247,\n \"samples\": [\n 53.27,\n 32.33\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"HbA1c_level\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.0706720918832282,\n \"min\": 3.5,\n \"max\": 9.0,\n \"num_unique_values\": 18,\n \"samples\": [\n 6.6,\n 5.7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"blood_glucose_level\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 40,\n \"min\": 80,\n \"max\": 300,\n \"num_unique_values\": 18,\n \"samples\": [\n 140,\n 80\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"diabetes\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"source": [
"df.info()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Mz3gCmUwNRgg",
"outputId": "3a18dba4-7aae-4424-9ac3-d88cda778b6b"
},
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"RangeIndex: 100000 entries, 0 to 99999\n",
"Data columns (total 9 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 gender 100000 non-null object \n",
" 1 age 100000 non-null float64\n",
" 2 hypertension 100000 non-null int64 \n",
" 3 heart_disease 100000 non-null int64 \n",
" 4 smoking_history 100000 non-null object \n",
" 5 bmi 100000 non-null float64\n",
" 6 HbA1c_level 100000 non-null float64\n",
" 7 blood_glucose_level 100000 non-null int64 \n",
" 8 diabetes 100000 non-null int64 \n",
"dtypes: float64(3), int64(4), object(2)\n",
"memory usage: 6.9+ MB\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"df.drop_duplicates(inplace = True)\n",
"df.shape"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PGOOQLmk4Sdq",
"outputId": "80d9226f-1abf-4ee4-f9a5-10b031fe79bc"
},
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(96146, 9)"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"source": [
"# features=X.columns.tolist()\n",
"# pd.plotting.scatter_matrix(X[features], figsize=(12, 12))\n",
"# plt.show()"
],
"metadata": {
"id": "ETJDhwxQNjlH"
},
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def cor(df, th):\n",
" corr_mat = df.corr(numeric_only=True)\n",
" corr = set()\n",
"\n",
" for i in range(len(corr_mat.columns)):\n",
" for j in range(i):\n",
" if abs(corr_mat.iloc[i, j]) > th:\n",
" colname = corr_mat.columns[i]\n",
" corr.add(colname)\n",
" return corr\n",
"\n",
"cor(df,0.9)\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-Huy54T34SRo",
"outputId": "21c9ab27-2198-4dcb-9944-6954064ed94d"
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"set()"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"df.duplicated().sum()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ChebluFo4Sbl",
"outputId": "4001ca7f-a39f-4b60-b88f-063958e12799"
},
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0"
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"source": [
"df.select_dtypes(include = ['float64','int64']).columns"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ZSCgG10z7AXq",
"outputId": "1b7bb858-e852-4cc4-b342-296d9a54a28c"
},
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['age', 'hypertension', 'heart_disease', 'bmi', 'HbA1c_level',\n",
" 'blood_glucose_level', 'diabetes'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"source": [
"# checking for outliers\n",
"def detect_outlier_iqr(df):\n",
" out = {}\n",
"\n",
" for i in df.select_dtypes(include = ['float64','int64']).columns:\n",
" q1 = df[i].quantile(0.25)\n",
" q3 = df[i].quantile(0.75)\n",
"\n",
" iqr = q3 - q1\n",
" upper_bound = q3 + 1.5 * iqr\n",
" lower_bound = q1 - 1.5 * iqr\n",
"\n",
" # out[i] = df[(df[i] > upper_bound) | (df[i] < lower_bound)].index\n",
" out[i] = df[(df[i] > upper_bound) | (df[i] < lower_bound)][i].count()\n",
"\n",
" return out"
],
"metadata": {
"id": "xtBGtixl5VYZ"
},
"execution_count": 10,
"outputs": []
},
{
"cell_type": "code",
"source": [
"detect_outlier_iqr(df) # planning to use tree based algo , hence leaving the outleirs"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YrZhSaoI7sWZ",
"outputId": "f565065c-045d-4258-ee00-dd4583e62c8e"
},
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'age': 0,\n",
" 'hypertension': 7461,\n",
" 'heart_disease': 3923,\n",
" 'bmi': 5354,\n",
" 'HbA1c_level': 1312,\n",
" 'blood_glucose_level': 2031,\n",
" 'diabetes': 8482}"
]
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X = df.drop('diabetes', axis=1)\n",
"y = df['diabetes']\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
"\n"
],
"metadata": {
"id": "P87fPcx6ClP1"
},
"execution_count": 12,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from sklearn.compose import ColumnTransformer\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"\n",
"ct = ColumnTransformer(\n",
" transformers=[('encoder', OneHotEncoder(), ['gender', 'smoking_history'])],\n",
" remainder='passthrough' # Keep non-categorical features unchanged\n",
")\n",
"# Fit encoder on the training set and transform both training and test sets\n",
"X_train = ct.fit_transform(X_train)\n",
"X_test = ct.transform(X_test)\n",
"\n",
"# the columns will be changed after encoding\n",
"encoded_columns = ct.transformers_[0][1].get_feature_names_out(['gender', 'smoking_history'])\n",
"\n",
"non_encoded_columns = [col for col in X.columns if col not in ['gender', 'smoking_history']]\n",
"\n",
"columns = list(encoded_columns) + non_encoded_columns\n",
"\n",
"X_train_df = pd.DataFrame(X_train, columns=columns)\n",
"X_test_df = pd.DataFrame(X_test, columns=columns)\n",
"\n",
"X_train_df.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 243
},
"id": "y5IMX2wF7xNt",
"outputId": "1a27a9c1-149a-436d-b227-d2d080a7ed80"
},
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" gender_Female gender_Male gender_Other smoking_history_No Info \\\n",
"0 1.0 0.0 0.0 1.0 \n",
"1 1.0 0.0 0.0 1.0 \n",
"2 1.0 0.0 0.0 0.0 \n",
"3 0.0 1.0 0.0 0.0 \n",
"4 0.0 1.0 0.0 0.0 \n",
"\n",
" smoking_history_current smoking_history_ever smoking_history_former \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 1.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" smoking_history_never smoking_history_not current age hypertension \\\n",
"0 0.0 0.0 35.0 0.0 \n",
"1 0.0 0.0 0.4 0.0 \n",
"2 0.0 0.0 60.0 0.0 \n",
"3 1.0 0.0 66.0 0.0 \n",
"4 0.0 1.0 48.0 0.0 \n",
"\n",
" heart_disease bmi HbA1c_level blood_glucose_level \n",
"0 0.0 31.53 6.6 155.0 \n",
"1 0.0 15.19 4.0 130.0 \n",
"2 0.0 20.90 6.5 100.0 \n",
"3 0.0 27.05 6.0 130.0 \n",
"4 0.0 24.05 4.8 145.0 "
],
"text/html": [
"\n",
" \n",
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender_Female | \n",
" gender_Male | \n",
" gender_Other | \n",
" smoking_history_No Info | \n",
" smoking_history_current | \n",
" smoking_history_ever | \n",
" smoking_history_former | \n",
" smoking_history_never | \n",
" smoking_history_not current | \n",
" age | \n",
" hypertension | \n",
" heart_disease | \n",
" bmi | \n",
" HbA1c_level | \n",
" blood_glucose_level | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 35.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 31.53 | \n",
" 6.6 | \n",
" 155.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.4 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 15.19 | \n",
" 4.0 | \n",
" 130.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 60.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 20.90 | \n",
" 6.5 | \n",
" 100.0 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 66.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 27.05 | \n",
" 6.0 | \n",
" 130.0 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.0 | \n",
" 48.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 24.05 | \n",
" 4.8 | \n",
" 145.0 | \n",
"
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "X_train_df",
"summary": "{\n \"name\": \"X_train_df\",\n \"rows\": 76916,\n \"fields\": [\n {\n \"column\": \"gender_Female\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.49278981616535134,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.0,\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"gender_Male\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.49275404821913577,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"gender_Other\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.014421462123147873,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history_No Info\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.47468796206505487,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.0,\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history_current\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.29436237193571957,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history_ever\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2004279188212293,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history_former\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2955547024342698,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history_never\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4790868208182658,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"smoking_history_not current\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.24779545740747777,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 22.461482386186912,\n \"min\": 0.08,\n \"max\": 80.0,\n \"num_unique_values\": 102,\n \"samples\": [\n 29.0,\n 65.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hypertension\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2667059473374165,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"heart_disease\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.197157379821037,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 1.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bmi\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.770758482966483,\n \"min\": 10.01,\n \"max\": 95.69,\n \"num_unique_values\": 4103,\n \"samples\": [\n 46.0,\n 39.55\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"HbA1c_level\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.0731461261964725,\n \"min\": 3.5,\n \"max\": 9.0,\n \"num_unique_values\": 18,\n \"samples\": [\n 6.6,\n 4.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"blood_glucose_level\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 40.92295872881815,\n \"min\": 80.0,\n \"max\": 300.0,\n \"num_unique_values\": 18,\n \"samples\": [\n 155.0,\n 130.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"source": [
"# training with random_forest classifier"
],
"metadata": {
"id": "WSyGSoJ1Hur_"
},
"execution_count": 14,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.metrics import classification_report, accuracy_score\n",
"\n",
"rf_model = RandomForestClassifier(random_state=42)\n",
"rf_model.fit(X_train, y_train)\n",
"\n",
"y_pred = rf_model.predict(X_test)\n",
"\n",
"print(f'Accuracy: {accuracy_score(y_test, y_pred)}')\n",
"print(f'Classification Report: \\n{classification_report(y_test, y_pred)}')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "M83wlm6sC91d",
"outputId": "91d25ca1-4c46-4c96-a9c3-e715257c9c83"
},
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Accuracy: 0.9686427457098284\n",
"Classification Report: \n",
" precision recall f1-score support\n",
"\n",
" 0 0.97 1.00 0.98 17509\n",
" 1 0.95 0.69 0.80 1721\n",
"\n",
" accuracy 0.97 19230\n",
" macro avg 0.96 0.84 0.89 19230\n",
"weighted avg 0.97 0.97 0.97 19230\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import xgboost as xgb\n",
"xgb_model = xgb.XGBClassifier(random_state=42, eval_metric='mlogloss')\n",
"\n",
"xgb_model.fit(X_train_df, y_train)\n",
"\n",
"y_pred_xgb = xgb_model.predict(X_test_df)\n",
"\n",
"\n",
"print(f'Accuracy: {accuracy_score(y_test, y_pred_xgb)}')\n",
"print(f'Classification Report: \\n{classification_report(y_test, y_pred_xgb)}')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Zc97ymCIHDF6",
"outputId": "3109ea58-8e14-4be9-cbae-b0d5d6427125"
},
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Accuracy: 0.9702548101924077\n",
"Classification Report: \n",
" precision recall f1-score support\n",
"\n",
" 0 0.97 1.00 0.98 17509\n",
" 1 0.96 0.69 0.81 1721\n",
"\n",
" accuracy 0.97 19230\n",
" macro avg 0.97 0.85 0.90 19230\n",
"weighted avg 0.97 0.97 0.97 19230\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Now lets try out hyperparameter tuning\n",
"\n",
"from sklearn.model_selection import GridSearchCV"
],
"metadata": {
"id": "R5g3kuruC_jQ"
},
"execution_count": 17,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# for random forest\n",
"param_grid_rf = {\n",
" 'n_estimators': [50, 100, 200],\n",
" 'max_depth': [5, 10, 15],\n",
" 'min_samples_split': [2, 5, 10],\n",
" 'min_samples_leaf': [1, 2, 4]\n",
"}\n",
"grid_search_rf = GridSearchCV(estimator=RandomForestClassifier(random_state=42),\n",
" param_grid=param_grid_rf,\n",
" scoring='accuracy',\n",
" cv=5,\n",
" verbose=2,\n",
" n_jobs=-1)\n",
"\n",
"# grid_search_rf.fit(X_train_df, y_train)\n",
"\n",
"# print(f\"Best Parameters for Random Forest: {grid_search_rf.best_params_}\")\n",
"\n",
"# estm = grid_search_rf.best_estimator_\n",
"# y_pred_rf = estm.predict(X_test_df)\n",
"\n",
"# print(f'Accuracy: {accuracy_score(y_test, y_pred_rf)}')\n",
"# print(f'Classification Report: \\n{classification_report(y_test, y_pred_rf)}')"
],
"metadata": {
"id": "6pt7VTU1IaUS"
},
"execution_count": 18,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import torch\n",
"print(torch.cuda.is_available())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "A4bdvQLxLO7v",
"outputId": "dd8bd5f0-3fe5-4f12-c9d6-28c7b125801b"
},
"execution_count": 19,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"True\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# !pip uninstall -y scikit-learn xgboost\n",
"# !pip install scikit-learn xgboost\n",
"\n"
],
"metadata": {
"id": "-nyIpy9yNBQy"
},
"execution_count": 20,
"outputs": []
},
{
"cell_type": "code",
"source": [
"!pip uninstall -y scikit-learn\n",
"!pip install scikit-learn==1.3.1\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 322
},
"id": "3GnHbZ1ANTrx",
"outputId": "6b355ac6-a103-42bc-9531-e69a306268e6"
},
"execution_count": 21,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found existing installation: scikit-learn 1.3.1\n",
"Uninstalling scikit-learn-1.3.1:\n",
" Successfully uninstalled scikit-learn-1.3.1\n",
"Collecting scikit-learn==1.3.1\n",
" Using cached scikit_learn-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)\n",
"Requirement already satisfied: numpy<2.0,>=1.17.3 in /usr/local/lib/python3.10/dist-packages (from scikit-learn==1.3.1) (1.26.4)\n",
"Requirement already satisfied: scipy>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn==1.3.1) (1.13.1)\n",
"Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn==1.3.1) (1.4.2)\n",
"Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn==1.3.1) (3.5.0)\n",
"Using cached scikit_learn-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB)\n",
"Installing collected packages: scikit-learn\n",
"Successfully installed scikit-learn-1.3.1\n"
]
},
{
"output_type": "display_data",
"data": {
"application/vnd.colab-display-data+json": {
"pip_warning": {
"packages": [
"sklearn"
]
},
"id": "da314930a9264314bfb31a015a04cbc0"
}
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"#for xgboost\n",
"\n",
"from sklearn.model_selection import RandomizedSearchCV\n",
"import xgboost as xgb\n",
"from sklearn.metrics import accuracy_score, classification_report\n",
"\n",
"param_dist_xgb = {\n",
" 'n_estimators': [50, 100, 200],\n",
" 'max_depth': [3, 6, 10],\n",
" 'learning_rate': [0.01, 0.1, 0.2],\n",
" 'subsample': [0.8, 1.0],\n",
" 'colsample_bytree': [0.8, 1.0]\n",
"}\n",
"\n",
"random_search_xgb = RandomizedSearchCV(estimator=xgb.XGBClassifier(random_state=42,tree_method='gpu_hist',device='cuda',eval_metric='mlogloss'),\n",
" param_distributions=param_dist_xgb,\n",
" scoring='accuracy',\n",
" n_iter=10, # number of random combinations to try\n",
" cv=5,\n",
" verbose=2,\n",
" n_jobs=-1,\n",
" random_state=42)\n",
"\n",
"# Fit the RandomizedSearchCV with training data\n",
"random_search_xgb.fit(X_train_df, y_train)\n",
"\n",
"# Print the best parameters found by RandomizedSearchCV\n",
"print(f\"Best Parameters for XGBoost: {random_search_xgb.best_params_}\")\n",
"\n",
"# Get the best estimator (model) from the random search\n",
"estm_xgb = random_search_xgb.best_estimator_\n",
"\n",
"# Make predictions with the best model\n",
"y_pred_xgb = estm_xgb.predict(X_test_df)\n",
"\n",
"# Print accuracy and classification report\n",
"print(f'Accuracy: {accuracy_score(y_test, y_pred_xgb)}')\n",
"print(f'Classification Report: \\n{classification_report(y_test, y_pred_xgb)}')\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sOfAnOxyI521",
"outputId": "d09c85d7-e2d3-4d71-c89f-d75202539db3"
},
"execution_count": 22,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fitting 5 folds for each of 10 candidates, totalling 50 fits\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/xgboost/core.py:158: UserWarning: [15:20:55] WARNING: /workspace/src/common/error_msg.cc:27: The tree method `gpu_hist` is deprecated since 2.0.0. To use GPU training, set the `device` parameter to CUDA instead.\n",
"\n",
" E.g. tree_method = \"hist\", device = \"cuda\"\n",
"\n",
" warnings.warn(smsg, UserWarning)\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Best Parameters for XGBoost: {'subsample': 1.0, 'n_estimators': 200, 'max_depth': 3, 'learning_rate': 0.1, 'colsample_bytree': 1.0}\n",
"Accuracy: 0.9709828393135725\n",
"Classification Report: \n",
" precision recall f1-score support\n",
"\n",
" 0 0.97 1.00 0.98 17509\n",
" 1 0.99 0.69 0.81 1721\n",
"\n",
" accuracy 0.97 19230\n",
" macro avg 0.98 0.84 0.90 19230\n",
"weighted avg 0.97 0.97 0.97 19230\n",
"\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/xgboost/core.py:158: UserWarning: [15:20:56] WARNING: /workspace/src/common/error_msg.cc:27: The tree method `gpu_hist` is deprecated since 2.0.0. To use GPU training, set the `device` parameter to CUDA instead.\n",
"\n",
" E.g. tree_method = \"hist\", device = \"cuda\"\n",
"\n",
" warnings.warn(smsg, UserWarning)\n",
"/usr/local/lib/python3.10/dist-packages/xgboost/core.py:158: UserWarning: [15:20:56] WARNING: /workspace/src/common/error_msg.cc:58: Falling back to prediction using DMatrix due to mismatched devices. This might lead to higher memory usage and slower performance. XGBoost is running on: cuda:0, while the input data is on: cpu.\n",
"Potential solutions:\n",
"- Use a data structure that matches the device ordinal in the booster.\n",
"- Set the device for booster before call to inplace_predict.\n",
"\n",
"This warning will only be shown once.\n",
"\n",
" warnings.warn(smsg, UserWarning)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"param_grid_xgb = {\n",
" 'n_estimators': [50, 100, 200],\n",
" 'max_depth': [3, 6, 10],\n",
" 'learning_rate': [0.01, 0.1, 0.2],\n",
" 'subsample': [0.8, 1.0],\n",
" 'colsample_bytree': [0.8, 1.0]\n",
"}\n",
"\n",
"grid_search_xgb = GridSearchCV(estimator=xgb.XGBClassifier(random_state=42,tree_method='gpu_hist',device='cuda', eval_metric='mlogloss'),\n",
" param_grid=param_grid_xgb,\n",
" scoring='accuracy',\n",
" cv=5,\n",
" verbose=2,\n",
" n_jobs=-1)\n",
"\n",
"grid_search_xgb.fit(X_train_df, y_train)\n",
"\n",
"print(f\"Best Parameters for XGBoost: {grid_search_xgb.best_params_}\")\n",
"\n",
"estm_xg = grid_search_xgb.best_estimator_\n",
"y_pred_xgb = estm_xg.predict(X_test_df)\n",
"\n",
"print(f'Accuracy: {accuracy_score(y_test, y_pred_xgb)}')\n",
"print(f'Classification Report: \\n{classification_report(y_test, y_pred_xgb)}')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "KN3sQOG_Mkyt",
"outputId": "2f04e0be-2a61-4e55-eb8c-978e1f53bf38"
},
"execution_count": 23,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fitting 5 folds for each of 108 candidates, totalling 540 fits\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/xgboost/core.py:158: UserWarning: [15:24:48] WARNING: /workspace/src/common/error_msg.cc:27: The tree method `gpu_hist` is deprecated since 2.0.0. To use GPU training, set the `device` parameter to CUDA instead.\n",
"\n",
" E.g. tree_method = \"hist\", device = \"cuda\"\n",
"\n",
" warnings.warn(smsg, UserWarning)\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Best Parameters for XGBoost: {'colsample_bytree': 1.0, 'learning_rate': 0.1, 'max_depth': 3, 'n_estimators': 200, 'subsample': 0.8}\n",
"Accuracy: 0.971086843473739\n",
"Classification Report: \n",
" precision recall f1-score support\n",
"\n",
" 0 0.97 1.00 0.98 17509\n",
" 1 0.99 0.69 0.81 1721\n",
"\n",
" accuracy 0.97 19230\n",
" macro avg 0.98 0.84 0.90 19230\n",
"weighted avg 0.97 0.97 0.97 19230\n",
"\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/xgboost/core.py:158: UserWarning: [15:24:48] WARNING: /workspace/src/common/error_msg.cc:27: The tree method `gpu_hist` is deprecated since 2.0.0. To use GPU training, set the `device` parameter to CUDA instead.\n",
"\n",
" E.g. tree_method = \"hist\", device = \"cuda\"\n",
"\n",
" warnings.warn(smsg, UserWarning)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"from sklearn.metrics import confusion_matrix\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Generate the confusion matrix\n",
"cm = confusion_matrix(y_test, y_pred_xgb)\n",
"\n",
"# Plot the confusion matrix\n",
"sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')\n",
"plt.ylabel('True Label')\n",
"plt.xlabel('Predicted Label')\n",
"plt.title('Confusion Matrix')\n",
"plt.show()"
],
"metadata": {
"id": "ZCnpcc7qVGLx",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"outputId": "4b43f631-8251-4e5c-dd95-5b122b85f532"
},
"execution_count": 24,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAHHCAYAAABz3mgLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQa0lEQVR4nO3df1yNd/8H8NdJdUqck9CPM4QhNebnluTnrcnENDaiTQhjZRKNZoiZtsz8pts2y21s2KaNDK2WNpJEQ2hs0fw4laVS9ENd3z98u+YodLgudfJ63o/r8dj5fN7X5/p8zn2b9/35cR2FIAgCiIiIiGo5o5ruABEREVF1MGkhIiIig8CkhYiIiAwCkxYiIiIyCExaiIiIyCAwaSEiIiKDwKSFiIiIDAKTFiIiIjIITFqIiIjIIDBpIZLRuXPnMHDgQKjVaigUCkRGRkra/oULF6BQKBARESFpu4asX79+6NevX013g4hkwKSF6rw///wTb731Flq3bg0zMzOoVCq4urpi5cqVuHXrlqzP9vHxwcmTJ/Hhhx9i8+bN6N69u6zPe5LGjRsHhUIBlUpV5fd47tw5KBQKKBQKfPLJJ3q3f+XKFYSEhCAlJUWC3hJRXWBc0x0gklNUVBRef/11KJVKjB07Fh06dEBJSQl+++03BAUFITU1FRs2bJDl2bdu3UJCQgLmzp0Lf39/WZ5hb2+PW7duwcTERJb2H8bY2Bg3b97Erl27MHLkSJ26LVu2wMzMDEVFRY/U9pUrV7Bw4UK0bNkSnTt3rvZ9+/fvf6TnEVHtx6SF6qz09HR4eXnB3t4esbGxsLOzE+v8/Pxw/vx5REVFyfb87OxsAIClpaVsz1AoFDAzM5Ot/YdRKpVwdXXF119/XSlp2bp1Kzw8PPDdd989kb7cvHkT9evXh6mp6RN5HhE9eVweojorLCwMBQUF+OKLL3QSlgpt2rTB9OnTxc+3b9/GBx98gGeffRZKpRItW7bEe++9h+LiYp37WrZsiSFDhuC3337Diy++CDMzM7Ru3Rr/+9//xJiQkBDY29sDAIKCgqBQKNCyZUsAd5ZVKv75biEhIVAoFDpl0dHR6NWrFywtLdGgQQM4ODjgvffeE+vvt6clNjYWvXv3hoWFBSwtLTFs2DCcOXOmyuedP38e48aNg6WlJdRqNcaPH4+bN2/e/4u9x5gxY/DTTz8hNzdXLEtKSsK5c+cwZsyYSvE5OTmYNWsWOnbsiAYNGkClUuHll1/G77//LsbExcXhhRdeAACMHz9eXGaqGGe/fv3QoUMHJCcno0+fPqhfv774vdy7p8XHxwdmZmaVxu/u7o5GjRrhypUr1R4rEdUsJi1UZ+3atQutW7dGz549qxU/ceJEzJ8/H127dsXy5cvRt29fhIaGwsvLq1Ls+fPn8dprr+Gll17CsmXL0KhRI4wbNw6pqakAgOHDh2P58uUAgNGjR2Pz5s1YsWKFXv1PTU3FkCFDUFxcjEWLFmHZsmV45ZVXcPDgwQfe9/PPP8Pd3R1ZWVkICQlBYGAgDh06BFdXV1y4cKFS/MiRI3Hjxg2EhoZi5MiRiIiIwMKFC6vdz+HDh0OhUOD7778Xy7Zu3Yr27duja9euleL/+usvREZGYsiQIfj0008RFBSEkydPom/fvmIC4ejoiEWLFgEAJk+ejM2bN2Pz5s3o06eP2M4///yDl19+GZ07d8aKFSvQv3//Kvu3cuVKNG3aFD4+PigrKwMA/Pe//8X+/fuxevVqaDSaao+ViGqYQFQH5eXlCQCEYcOGVSs+JSVFACBMnDhRp3zWrFkCACE2NlYss7e3FwAI8fHxYllWVpagVCqFmTNnimXp6ekCAGHp0qU6bfr4+Aj29vaV+rBgwQLh7j+Sy5cvFwAI2dnZ9+13xTO+/PJLsaxz586CtbW18M8//4hlv//+u2BkZCSMHTu20vMmTJig0+arr74qNG7c+L7PvHscFhYWgiAIwmuvvSYMGDBAEARBKCsrE2xtbYWFCxdW+R0UFRUJZWVllcahVCqFRYsWiWVJSUmVxlahb9++AgAhPDy8yrq+ffvqlO3bt08AICxevFj466+/hAYNGgienp4PHSMR1S6caaE6KT8/HwDQsGHDasXv2bMHABAYGKhTPnPmTACotPfFyckJvXv3Fj83bdoUDg4O+Ouvvx65z/eq2Avzww8/oLy8vFr3XL16FSkpKRg3bhysrKzE8ueffx4vvfSSOM67TZkyRedz79698c8//4jfYXWMGTMGcXFx0Gq1iI2NhVarrXJpCLizD8bI6M6/esrKyvDPP/+IS1/Hjh2r9jOVSiXGjx9frdiBAwfirbfewqJFizB8+HCYmZnhv//9b7WfRUS1A5MWqpNUKhUA4MaNG9WKv3jxIoyMjNCmTRudcltbW1haWuLixYs65S1atKjURqNGjXD9+vVH7HFlo0aNgqurKyZOnAgbGxt4eXlh+/btD0xgKvrp4OBQqc7R0RHXrl1DYWGhTvm9Y2nUqBEA6DWWwYMHo2HDhti2bRu2bNmCF154odJ3WaG8vBzLly9H27ZtoVQq0aRJEzRt2hQnTpxAXl5etZ/5zDPP6LXp9pNPPoGVlRVSUlKwatUqWFtbV/teIqodmLRQnaRSqaDRaHDq1Cm97rt3I+z91KtXr8pyQRAe+RkV+y0qmJubIz4+Hj///DPefPNNnDhxAqNGjcJLL71UKfZxPM5YKiiVSgwfPhybNm3Czp077zvLAgBLlixBYGAg+vTpg6+++gr79u1DdHQ0nnvuuWrPKAF3vh99HD9+HFlZWQCAkydP6nUvEdUOTFqozhoyZAj+/PNPJCQkPDTW3t4e5eXlOHfunE55ZmYmcnNzxZNAUmjUqJHOSZsK987mAICRkREGDBiATz/9FKdPn8aHH36I2NhY/PLLL1W2XdHPtLS0SnVnz55FkyZNYGFh8XgDuI8xY8bg+PHjuHHjRpWblyt8++236N+/P7744gt4eXlh4MCBcHNzq/SdVDeBrI7CwkKMHz8eTk5OmDx5MsLCwpCUlCRZ+0T0ZDBpoTrr3XffhYWFBSZOnIjMzMxK9X/++SdWrlwJ4M7yBoBKJ3w+/fRTAICHh4dk/Xr22WeRl5eHEydOiGVXr17Fzp07deJycnIq3VvxkrV7j2FXsLOzQ+fOnbFp0yadJODUqVPYv3+/OE459O/fHx988AHWrFkDW1vb+8bVq1ev0izOjh07cPnyZZ2yiuSqqgRPX7Nnz0ZGRgY2bdqETz/9FC1btoSPj899v0ciqp34cjmqs5599lls3boVo0aNgqOjo84bcQ8dOoQdO3Zg3LhxAIBOnTrBx8cHGzZsQG5uLvr27YsjR45g06ZN8PT0vO9x2kfh5eWF2bNn49VXX8U777yDmzdvYv369WjXrp3ORtRFixYhPj4eHh4esLe3R1ZWFtatW4dmzZqhV69e921/6dKlePnll+Hi4gJfX1/cunULq1evhlqtRkhIiGTjuJeRkRHef//9h8YNGTIEixYtwvjx49GzZ0+cPHkSW7ZsQevWrXXinn32WVhaWiI8PBwNGzaEhYUFnJ2d0apVK736FRsbi3Xr1mHBggXiEewvv/wS/fr1w7x58xAWFqZXe0RUg2r49BKR7P744w9h0qRJQsuWLQVTU1OhYcOGgqurq7B69WqhqKhIjCstLRUWLlwotGrVSjAxMRGaN28uBAcH68QIwp0jzx4eHpWec+9R2/sdeRYEQdi/f7/QoUMHwdTUVHBwcBC++uqrSkeeY2JihGHDhgkajUYwNTUVNBqNMHr0aOGPP/6o9Ix7jwX//PPPgqurq2Bubi6oVCph6NChwunTp3ViKp5375HqL7/8UgAgpKen3/c7FQTdI8/3c78jzzNnzhTs7OwEc3NzwdXVVUhISKjyqPIPP/wgODk5CcbGxjrj7Nu3r/Dcc89V+cy728nPzxfs7e2Frl27CqWlpTpxM2bMEIyMjISEhIQHjoGIag+FIOix246IiIiohnBPCxERERkEJi1ERERkEJi0EBERkUFg0kJEREQGgUkLERERGQQmLURERGQQmLQQERGRQaiTb8Q17+Jf010gqpWuJ62p6S4Q1TpmT+BvQqn+Xrp1/On+M8yZFiIiIjIIdXKmhYiIqFZRcI5ACkxaiIiI5KZQ1HQP6gQmLURERHLjTIsk+C0SERGRQeBMCxERkdy4PCQJJi1ERERy4/KQJPgtEhERkUHgTAsREZHcuDwkCSYtREREcuPykCT4LRIREZFB4EwLERGR3Lg8JAkmLURERHLj8pAk+C0SERGRQeBMCxERkdy4PCQJJi1ERERy4/KQJJi0EBERyY0zLZJg6kdEREQGgTMtREREcuPykCSYtBAREcmNSYsk+C0SERGRQeBMCxERkdyMuBFXCkxaiIiI5MblIUnwWyQiIiKDwJkWIiIiufE9LZJg0kJERCQ3Lg9Jgt8iERFRHRUfH4+hQ4dCo9FAoVAgMjKyUsyZM2fwyiuvQK1Ww8LCAi+88AIyMjLE+qKiIvj5+aFx48Zo0KABRowYgczMTJ02MjIy4OHhgfr168Pa2hpBQUG4ffu2TkxcXBy6du0KpVKJNm3aICIiQu/xMGkhIiKSm0IhzaWnwsJCdOrUCWvXrq2y/s8//0SvXr3Qvn17xMXF4cSJE5g3bx7MzMzEmBkzZmDXrl3YsWMHDhw4gCtXrmD48OFifVlZGTw8PFBSUoJDhw5h06ZNiIiIwPz588WY9PR0eHh4oH///khJSUFAQAAmTpyIffv26TUehSAIgp7fQa1n3sW/prtAVCtdT1pT010gqnXMnsBGCfOBSyVp59b+oEe+V6FQYOfOnfD09BTLvLy8YGJigs2bN1d5T15eHpo2bYqtW7fitddeAwCcPXsWjo6OSEhIQI8ePfDTTz9hyJAhuHLlCmxsbAAA4eHhmD17NrKzs2FqaorZs2cjKioKp06d0nl2bm4u9u7dW+0xcKaFiIhIbjU00/Ig5eXliIqKQrt27eDu7g5ra2s4OzvrLCElJyejtLQUbm5uYln79u3RokULJCQkAAASEhLQsWNHMWEBAHd3d+Tn5yM1NVWMubuNipiKNqqLSQsREZGBKC4uRn5+vs5VXFz8SG1lZWWhoKAAH330EQYNGoT9+/fj1VdfxfDhw3HgwAEAgFarhampKSwtLXXutbGxgVarFWPuTlgq6ivqHhSTn5+PW7duVbvPTFqIiIjkpjCS5AoNDYVarda5QkNDH6lL5eXlAIBhw4ZhxowZ6Ny5M+bMmYMhQ4YgPDxcytFLhkkLERGR3CRaHgoODkZeXp7OFRwc/EhdatKkCYyNjeHk5KRT7ujoKJ4esrW1RUlJCXJzc3ViMjMzYWtrK8bce5qo4vPDYlQqFczNzavdZyYtREREBkKpVEKlUulcSqXykdoyNTXFCy+8gLS0NJ3yP/74A/b29gCAbt26wcTEBDExMWJ9WloaMjIy4OLiAgBwcXHByZMnkZWVJcZER0dDpVKJCZGLi4tOGxUxFW1UF18uR0REJLcaerlcQUEBzp8/L35OT09HSkoKrKys0KJFCwQFBWHUqFHo06cP+vfvj71792LXrl2Ii4sDAKjVavj6+iIwMBBWVlZQqVSYNm0aXFxc0KNHDwDAwIED4eTkhDfffBNhYWHQarV4//334efnJyZUU6ZMwZo1a/Duu+9iwoQJiI2Nxfbt2xEVFaXXeHjkmegpwiPPRJU9kSPPHqskaedW1Dt6xcfFxaF///6Vyn18fMSXu23cuBGhoaG4dOkSHBwcsHDhQgwbNkyMLSoqwsyZM/H111+juLgY7u7uWLdunbj0AwAXL17E1KlTERcXBwsLC/j4+OCjjz6CsfG/X25cXBxmzJiB06dPo1mzZpg3bx7GjRun13iYtBA9RZi0EFVWl5OWuobLQ0RERHLjbw9JgkkLERGR3Ji0SILfIhERERkEzrQQERHJTeJX8D+tmLQQERHJjctDkmDSQkREJDfOtEiCqR8REREZBM60EBERyY3LQ5Jg0kJERCQ3Lg9JgqkfERERGQTOtBAREclMwZkWSTBpISIikhmTFmlweYiIiIgMAmdaiIiI5MaJFkkwaSEiIpIZl4ekweUhIiIiMgicaSEiIpIZZ1qkwaSFiIhIZkxapMGkhYiISGZMWqTBPS1ERERkEDjTQkREJDdOtEiCSQsREZHMuDwkDS4PERERkUHgTAsREZHMONMiDSYtREREMmPSIg0uDxEREZFB4EwLERGRzDjTIg0mLURERHJjziIJLg8RERGRQeBMCxERkcy4PCQNJi1EREQyY9IiDSYtREREMmPSIg3uaSEiIqqj4uPjMXToUGg0GigUCkRGRt43dsqUKVAoFFixYoVOeU5ODry9vaFSqWBpaQlfX18UFBToxJw4cQK9e/eGmZkZmjdvjrCwsErt79ixA+3bt4eZmRk6duyIPXv26D0eJi1ERERyU0h06amwsBCdOnXC2rVrHxi3c+dOHD58GBqNplKdt7c3UlNTER0djd27dyM+Ph6TJ08W6/Pz8zFw4EDY29sjOTkZS5cuRUhICDZs2CDGHDp0CKNHj4avry+OHz8OT09PeHp64tSpU3qNRyEIgqDXHQbAvIt/TXeBqFa6nrSmprtAVOuYPYGNEjYTd0jSTubnrz/yvQqFAjt37oSnp6dO+eXLl+Hs7Ix9+/bBw8MDAQEBCAgIAACcOXMGTk5OSEpKQvfu3QEAe/fuxeDBg3Hp0iVoNBqsX78ec+fOhVarhampKQBgzpw5iIyMxNmzZwEAo0aNQmFhIXbv3i0+t0ePHujcuTPCw8OrPQbOtBARERmI4uJi5Ofn61zFxcWP3F55eTnefPNNBAUF4bnnnqtUn5CQAEtLSzFhAQA3NzcYGRkhMTFRjOnTp4+YsACAu7s70tLScP36dTHGzc1Np213d3ckJCTo1V8mLURERDJTKBSSXKGhoVCr1TpXaGjoI/fr448/hrGxMd55550q67VaLaytrXXKjI2NYWVlBa1WK8bY2NjoxFR8flhMRX118fQQERGRzKQ6PRQcHIzAwECdMqVS+UhtJScnY+XKlTh27JjBnG7iTAsREZGBUCqVUKlUOtejJi2//vorsrKy0KJFCxgbG8PY2BgXL17EzJkz0bJlSwCAra0tsrKydO67ffs2cnJyYGtrK8ZkZmbqxFR8flhMRX11MWkhIiKSmVTLQ1J68803ceLECaSkpIiXRqNBUFAQ9u3bBwBwcXFBbm4ukpOTxftiY2NRXl4OZ2dnMSY+Ph6lpaViTHR0NBwcHNCoUSMxJiYmRuf50dHRcHFx0avPXB4iIiKSWw2tvhQUFOD8+fPi5/T0dKSkpMDKygotWrRA48aNdeJNTExga2sLBwcHAICjoyMGDRqESZMmITw8HKWlpfD394eXl5d4PHrMmDFYuHAhfH19MXv2bJw6dQorV67E8uXLxXanT5+Ovn37YtmyZfDw8MA333yDo0eP6hyLrg7OtBAREdVRR48eRZcuXdClSxcAQGBgILp06YL58+dXu40tW7agffv2GDBgAAYPHoxevXrpJBtqtRr79+9Heno6unXrhpkzZ2L+/Pk673Lp2bMntm7dig0bNqBTp0749ttvERkZiQ4dOug1Hr6nhegpwve0EFX2JN7T8szUnZK0c3n9q5K0Y6i4PERERCQzQzmdU9sxaSEiIpIZkxZpcE8LERERGQTOtBAREcmNEy2SYNJCREQkMy4PSYPLQ0RERGQQONNCOly7PosZY93Q1akF7JqqMXLGBuyKOyHW3zpe9ZHZ95bvxPL/6b7t0NTEGPGbZ6GTQzM4jwrFiT8ui3UjXuqCIF93tG1hjWu5BQj/5oDO/cP+0wmTXu+N5x2egdLEGGf+0mJx+B78nHBG4hETySf5aBIiNn6BM6dPITs7G8tXrcV/Bvz7S7ednnOo8r4ZM4MwbsLEJ9VNegI40yINJi2kw8JciZN/XMb/fkjAtk8nV6pv6Ras83mg63MIXzAGO2NSKsUuCRiGq9l56OTQ7J57nPDlh+MQGLYDPyecQftWtlg3fwxuFZcifFs8AKBX1zaIPXwWC1b/iNyCWxj7Sg98t/It9HnzE/yedkm6ARPJ6Natm3BwcIDn8BEInF75/VExcb/pfP7tt3iEzJsLt5fcn1QX6Qlh0iINJi2kY//B09h/8PR96zP/uaHzeWi/jjiQdA4XLv+jUz7Q1QkDejhidNDnGNTrOZ26MR4vYlfc7/j82zv/wr5w+R8s3bgfM8e9JCYtQZ98p3PPgjW7MKTf8xjctwOTFjIYvXr3Ra/efe9b36RpU53PcbExeOFFZzRr3lzurhEZpBpNWq5du4aNGzciISEBWq0WwJ1fguzZsyfGjRuHpvf8gabaxdqqIQb16oBJ8zdXKl83bzRGBn6Gm7dKKt2nNDWuVH6ruATNbBuhhZ0VMq7mVLpHoVCgYX0lrufdlHYQRLXEP9eu4df4A/jgw49quiskA860SKPGNuImJSWhXbt2WLVqFdRqNfr06YM+ffpArVZj1apVaN++PY4ePVpT3aNqeGOoM27cLEJkbIpO+YZFb+Czb3/DsdMZVd4XfegMhg3ohH4vtoNCoUCbFtaY/sYAAIBdU3WV98wYOwAW9ZX4bv8xScdAVFv8+MNO1K9vgQEvDazprpAcFBJdT7kam2mZNm0aXn/9dYSHh1fKQAVBwJQpUzBt2jQkJCQ8sJ3i4mIUFxfr3l9eBoVRPcn7TLrGDuuBbT8dRXHJbbHs7dF90bC+GZZu3H/f+zZ+fxCtmzXB9yunwMS4HvILi7B2axzmTfVAeXl5pfhRg7rjvbdexuszNiD7eoEsYyGqaZE7v8PgIUOhVCpruitEtVaNJS2///47IiIiqpwyUygUmDFjhvirlA8SGhqKhQsX6pTVs3kBJnYvStZXqsy1y7NwaGWLN+d8qVPe74V2cH6+FfISV+iUH9zyLr756ai4lPT+qh8wf82PsG2sQvb1AvR3vnOKIv2evTGvu3fDuvlj4P3uF/glMU2+ARHVoGPJR3EhPR1hn6yo6a6QTLg8JI0aS1psbW1x5MgRtG/fvsr6I0eOwMbG5qHtBAcHIzAwUKfMuvdsSfpI9+fj6YLk0xk4edcxZgCYGfYtQtbuFj/bNVVj93p/vDnnSySdvKATW14u4Ep2HgBg5KBuOPz7X7h210zKyEHdEL7AG2ODv8Te31LlGwxRDdv53bdweu45ONzn34dk+Ji0SKPGkpZZs2Zh8uTJSE5OxoABA8QEJTMzEzExMfjss8/wySefPLQdpVJZaTqVS0OPzsLcFM82/3cDdMtnGuP5ds/gev5N/K29DgBoaGGG4S91wZxPK//UekVMhYKbd5bu/vo7G5ezcgEAjS0t8KpbF8QfPQczU2OMHdYDw926YODEleJ9owZ1x2eL3sSspd8i6eQF2DRuCAC4VVyK/IIiScdMJJebhYXIyPh3b9flS5dw9swZqNVq2Gk0AICCggLs378XM4P4f7bqMuYs0qixpMXPzw9NmjTB8uXLsW7dOpSVlQEA6tWrh27duiEiIgIjR46sqe49tbo62WP/59PFz2GzRgAANv94GJMXfAXgzpKNAgps3/voG6XfGOqM0BmvQqEAEk+kw33SShxNvSjWTxjhChOTelj53iisfG+UWH53P4hqu9TUU5g4fqz4+ZOwUADAK8NexQdL7pwS2rsnChAEvDx4SI30kciQKARBEGq6E6Wlpbh27RoAoEmTJjAxMXms9sy7VH6JExEB15OqfqMx0dPM7An83/e2QXslaefc0kGStGOoasXL5UxMTGBnZ1fT3SAiIpIFl4ekwR9MJCIiIoNQK2ZaiIiI6jKeHpIGkxYiIiKZMWeRBpeHiIiIyCBwpoWIiEhmRkacapECkxYiIiKZcXlIGlweIiIiIoPAmRYiIiKZ8fSQNJi0EBERyYw5izSYtBAREcmMMy3S4J4WIiIiMgicaSEiIpIZZ1qkwaSFiIhIZsxZpMHlISIiojoqPj4eQ4cOhUajgUKhQGRkpFhXWlqK2bNno2PHjrCwsIBGo8HYsWNx5coVnTZycnLg7e0NlUoFS0tL+Pr6oqCgQCfmxIkT6N27N8zMzNC8eXOEhYVV6suOHTvQvn17mJmZoWPHjtizZ4/e42HSQkREJDOFQiHJpa/CwkJ06tQJa9eurVR38+ZNHDt2DPPmzcOxY8fw/fffIy0tDa+88opOnLe3N1JTUxEdHY3du3cjPj4ekydPFuvz8/MxcOBA2NvbIzk5GUuXLkVISAg2bNggxhw6dAijR4+Gr68vjh8/Dk9PT3h6euLUqVN6jUchCIKg53dQ65l38a/pLhDVSteT1tR0F4hqHbMnsFGi66JYSdo5Nv8/j3yvQqHAzp074enped+YpKQkvPjii7h48SJatGiBM2fOwMnJCUlJSejevTsAYO/evRg8eDAuXboEjUaD9evXY+7cudBqtTA1NQUAzJkzB5GRkTh79iwAYNSoUSgsLMTu3bvFZ/Xo0QOdO3dGeHh4tcfAmRYiIiIDUVxcjPz8fJ2ruLhYsvbz8vKgUChgaWkJAEhISIClpaWYsACAm5sbjIyMkJiYKMb06dNHTFgAwN3dHWlpabh+/boY4+bmpvMsd3d3JCQk6NU/Ji1EREQyk2p5KDQ0FGq1WucKDQ2VpI9FRUWYPXs2Ro8eDZVKBQDQarWwtrbWiTM2NoaVlRW0Wq0YY2NjoxNT8flhMRX11cXTQ0RERDKT6vRQcHAwAgMDdcqUSuVjt1taWoqRI0dCEASsX7/+sduTC5MWIiIiA6FUKiVJUu5WkbBcvHgRsbGx4iwLANja2iIrK0sn/vbt28jJyYGtra0Yk5mZqRNT8flhMRX11cXlISIiIpnV1Omhh6lIWM6dO4eff/4ZjRs31ql3cXFBbm4ukpOTxbLY2FiUl5fD2dlZjImPj0dpaakYEx0dDQcHBzRq1EiMiYmJ0Wk7OjoaLi4uevWXSQsREZHMFAppLn0VFBQgJSUFKSkpAID09HSkpKQgIyMDpaWleO2113D06FFs2bIFZWVl0Gq10Gq1KCkpAQA4Ojpi0KBBmDRpEo4cOYKDBw/C398fXl5e0Gg0AIAxY8bA1NQUvr6+SE1NxbZt27By5UqdZazp06dj7969WLZsGc6ePYuQkBAcPXoU/v76nfblkWeipwiPPBNV9iSOPDuHHpCkncTgvnrFx8XFoX///pXKfXx8EBISglatWlV53y+//IJ+/foBuPNyOX9/f+zatQtGRkYYMWIEVq1ahQYNGojxJ06cgJ+fH5KSktCkSRNMmzYNs2fP1mlzx44deP/993HhwgW0bdsWYWFhGDx4sF7jYdJC9BRh0kJUWV1OWuoabsQlIiKSGX97SBpMWoiIiGTGX3mWBjfiEhERkUHgTAsREZHMONEiDSYtREREMuPykDS4PEREREQGgTMtREREMuNEizSYtBAREcmMy0PS4PIQERERGQTOtBAREcmMMy3SYNJCREQkM+Ys0mDSQkREJDPOtEiDe1qIiIjIIHCmhYiISGacaJEGkxYiIiKZcXlIGlweIiIiIoPAmRYiIiKZcaJFGkxaiIiIZGbErEUSXB4iIiIig8CZFiIiIplxokUaTFqIiIhkxtND0mDSQkREJDMj5iyS4J4WIiIiMgicaSEiIpIZl4ekwaSFiIhIZsxZpMHlISIiIjIInGkhIiKSmQKcapECkxYiIiKZ8fSQNKqVtJw4caLaDT7//POP3BkiIiKi+6lW0tK5c2coFAoIglBlfUWdQqFAWVmZpB0kIiIydDw9JI1qJS3p6ely94OIiKjOYs4ijWqdHrK3t6/2RURERLVDfHw8hg4dCo1GA4VCgcjISJ16QRAwf/582NnZwdzcHG5ubjh37pxOTE5ODry9vaFSqWBpaQlfX18UFBToxJw4cQK9e/eGmZkZmjdvjrCwsEp92bFjB9q3bw8zMzN07NgRe/bs0Xs8j3TkefPmzXB1dYVGo8HFixcBACtWrMAPP/zwKM0RERHVaUYKhSSXvgoLC9GpUyesXbu2yvqwsDCsWrUK4eHhSExMhIWFBdzd3VFUVCTGeHt7IzU1FdHR0di9ezfi4+MxefJksT4/Px8DBw6Evb09kpOTsXTpUoSEhGDDhg1izKFDhzB69Gj4+vri+PHj8PT0hKenJ06dOqXXeBTC/Taq3Mf69esxf/58BAQE4MMPP8SpU6fQunVrREREYNOmTfjll1/06oAczLv413QXiGql60lraroLRLWO2RM4RztiY7Ik7Xw3odsj36tQKLBz5054enoCuDPLotFoMHPmTMyaNQsAkJeXBxsbG0RERMDLywtnzpyBk5MTkpKS0L17dwDA3r17MXjwYFy6dAkajQbr16/H3LlzodVqYWpqCgCYM2cOIiMjcfbsWQDAqFGjUFhYiN27d4v96dGjBzp37ozw8PBqj0HvmZbVq1fjs88+w9y5c1GvXj2xvHv37jh58qS+zREREdV5CoVCkktK6enp0Gq1cHNzE8vUajWcnZ2RkJAAAEhISIClpaWYsACAm5sbjIyMkJiYKMb06dNHTFgAwN3dHWlpabh+/boYc/dzKmIqnlNdeueX6enp6NKlS6VypVKJwsJCfZsjIiKiaiouLkZxcbFOmVKphFKp1LstrVYLALCxsdEpt7GxEeu0Wi2sra116o2NjWFlZaUT06pVq0ptVNQ1atQIWq32gc+pLr1nWlq1aoWUlJRK5Xv37oWjo6O+zREREdV5CoU0V2hoKNRqtc4VGhpa08N7YvSeaQkMDISfnx+KioogCAKOHDmCr7/+GqGhofj888/l6CMREZFBe5RNtFUJDg5GYGCgTtmjzLIAgK2tLQAgMzMTdnZ2YnlmZiY6d+4sxmRlZencd/v2beTk5Ij329raIjMzUyem4vPDYirqq0vvmZaJEyfi448/xvvvv4+bN29izJgxWL9+PVauXAkvLy99myMiIqJqUiqVUKlUOtejJi2tWrWCra0tYmJixLL8/HwkJibCxcUFAODi4oLc3FwkJ/+7kTg2Nhbl5eVwdnYWY+Lj41FaWirGREdHw8HBAY0aNRJj7n5ORUzFc6rrkfZMe3t7w9vbGzdv3kRBQUGl9S4iIiL6V029W66goADnz58XP6enpyMlJQVWVlZo0aIFAgICsHjxYrRt2xatWrXCvHnzoNFoxBNGjo6OGDRoECZNmoTw8HCUlpbC398fXl5e0Gg0AIAxY8Zg4cKF8PX1xezZs3Hq1CmsXLkSy5cvF587ffp09O3bF8uWLYOHhwe++eYbHD16VOdYdHU88kGvrKwspKWlAbizK7pp06aP2hQREVGdVlOv8T969Cj69+8vfq5YWvLx8UFERATeffddFBYWYvLkycjNzUWvXr2wd+9emJmZifds2bIF/v7+GDBgAIyMjDBixAisWrVKrFer1di/fz/8/PzQrVs3NGnSBPPnz9d5l0vPnj2xdetWvP/++3jvvffQtm1bREZGokOHDnqNR+/3tNy4cQNvv/02vv76a5SXlwMA6tWrh1GjRmHt2rVQq9V6dUAOfE8LUdX4nhaiyp7Ee1pG/y9Fkna+HttZknYM1SPtaUlMTERUVBRyc3ORm5uL3bt34+jRo3jrrbfk6CMREZFBM1JIcz3t9M4vd+/ejX379qFXr15imbu7Oz777DMMGjRI0s4RERHVBfyVZ2noPdPSuHHjKpeA1Gq1uEuYiIiISGp6Jy3vv/8+AgMDdd5ip9VqERQUhHnz5knaOSIiorpAqpfLPe2qtTzUpUsXnamtc+fOoUWLFmjRogUAICMjA0qlEtnZ2dzXQkREdA8uD0mjWklLxXltIiIi0h830UqjWknLggUL5O4HERER0QM9gdPpRERETzcuD0lD76SlrKwMy5cvx/bt25GRkYGSkhKd+pycHMk6R0REVBcwZZGG3qeHFi5ciE8//RSjRo1CXl4eAgMDMXz4cBgZGSEkJESGLhIRERE9QtKyZcsWfPbZZ5g5cyaMjY0xevRofP7555g/fz4OHz4sRx+JiIgMmpFCIcn1tNM7adFqtejYsSMAoEGDBsjLywMADBkyBFFRUdL2joiIqA7ge1qkoXfS0qxZM1y9ehUA8Oyzz2L//v0AgKSkJCiVSml7R0RERPT/9E5aXn31VcTExAAApk2bhnnz5qFt27YYO3YsJkyYIHkHiYiIDJ1CoZDketrpfXroo48+Ev951KhRsLe3x6FDh9C2bVsMHTpU0s4RERHVBcw3pKH3TMu9evTogcDAQDg7O2PJkiVS9ImIiIioksdOWipcvXqVP5hIRERUBZ4ekgbfiEtERCQz5hvSYNJCREQkM26ilYZky0NEREREcqr2TEtgYOAD67Ozsx+7M1LJSlhV010gqpVu3Lpd010gqnXMGsq/6MAZAmlU+7+p48ePPzSmT58+j9UZIiKiuojLQ9KodtLyyy+/yNkPIiIiogfiRlwiIiKZGXGiRRJMWoiIiGTGpEUa3BtEREREBoEzLURERDLjRlxpMGkhIiKSGZeHpPFIy0O//vor3njjDbi4uODy5csAgM2bN+O3336TtHNEREREFfROWr777ju4u7vD3Nwcx48fR3FxMQAgLy+Pv/JMRERUBYVCmutpp3fSsnjxYoSHh+Ozzz6DiYmJWO7q6opjx45J2jkiIqK6gL/yLA2997SkpaVV+eZbtVqN3NxcKfpERERUp/CorjT0/h5tbW1x/vz5SuW//fYbWrduLUmniIiI6PGUlZVh3rx5aNWqFczNzfHss8/igw8+gCAIYowgCJg/fz7s7Oxgbm4ONzc3nDt3TqednJwceHt7Q6VSwdLSEr6+vigoKNCJOXHiBHr37g0zMzM0b94cYWFhsoxJ76Rl0qRJmD59OhITE6FQKHDlyhVs2bIFs2bNwtSpU+XoIxERkUGriT0tH3/8MdavX481a9bgzJkz+PjjjxEWFobVq1eLMWFhYVi1ahXCw8ORmJgICwsLuLu7o6ioSIzx9vZGamoqoqOjsXv3bsTHx2Py5MlifX5+PgYOHAh7e3skJydj6dKlCAkJwYYNGx77e7uXQrg75aoGQRCwZMkShIaG4ubNmwAApVKJWbNm4YMPPpC8g4/iRlF5TXeBqFYqKuWfDaJ7NX0Cv/I8b++5hwdVwweD2lY7dsiQIbCxscEXX3whlo0YMQLm5ub46quvIAgCNBoNZs6ciVmzZgG4c6jGxsYGERER8PLywpkzZ+Dk5ISkpCR0794dALB3714MHjwYly5dgkajwfr16zF37lxotVqYmpoCAObMmYPIyEicPXtWknFX0HumRaFQYO7cucjJycGpU6dw+PBhZGdn15qEhYiIqK4qLi5Gfn6+zlVxivdePXv2RExMDP744w8AwO+//47ffvsNL7/8MgAgPT0dWq0Wbm5u4j1qtRrOzs5ISEgAACQkJMDS0lJMWADAzc0NRkZGSExMFGP69OkjJiwA4O7ujrS0NFy/fl3S8T/y3iBTU1M4OTnhxRdfRIMGDaTsExERUZ0i1fJQaGgo1Gq1zhUaGlrlM+fMmQMvLy+0b98eJiYm6NKlCwICAuDt7Q0A0Gq1AAAbGxud+2xsbMQ6rVYLa2trnXpjY2NYWVnpxFTVxt3PkIrec2L9+/d/4OuIY2NjH6tDREREdY1Ub8QNDg5GYGCgTplSqawydvv27diyZQu2bt2K5557DikpKQgICIBGo4GPj480HXrC9E5aOnfurPO5tLQUKSkpOHXqlMF+CURERIZAqVTeN0m5V1BQkDjbAgAdO3bExYsXERoaCh8fH9ja2gIAMjMzYWdnJ96XmZkp/l1va2uLrKwsnXZv376NnJwc8X5bW1tkZmbqxFR8roiRit5Jy/Lly6ssDwkJqXQEioiIiFAjL4a7efMmjIx0d4HUq1cP5eV3NuS3atUKtra2iImJEZOU/Px8JCYmiqeBXVxckJubi+TkZHTr1g3AnRWV8vJyODs7izFz585FaWmp+NLZ6OhoODg4oFGjRpKOSbL33bzxxhvYuHGjVM0RERHVGTVx5Hno0KH48MMPERUVhQsXLmDnzp349NNP8eqrr/5/nxQICAjA4sWL8eOPP+LkyZMYO3YsNBoNPD09AQCOjo4YNGgQJk2ahCNHjuDgwYPw9/eHl5cXNBoNAGDMmDEwNTWFr68vUlNTsW3bNqxcubLSMpYUJDvnlZCQADMzM6maIyIiosewevVqzJs3D2+//TaysrKg0Wjw1ltvYf78+WLMu+++i8LCQkyePBm5ubno1asX9u7dq/P3+ZYtW+Dv748BAwbAyMgII0aMwKpVq8R6tVqN/fv3w8/PD926dUOTJk0wf/58nXe5SEXv97QMHz5c57MgCLh69SqOHj2KefPmYcGCBZJ28FHwPS1EVeN7WogqexLvafkwpvKb5B/F3AFtJGnHUOn935Rardb5bGRkBAcHByxatAgDBw6UrGNERER1hQL8sUMp6JW0lJWVYfz48ejYsaPkm2uIiIjqKqmOPD/t9NqIW69ePQwcOJC/5kxERERPnN6nhzp06IC//vpLjr4QERHVSUYKaa6nnd5Jy+LFizFr1izs3r0bV69erfQbCERERKRLoVBIcj3tqr2nZdGiRZg5cyYGDx4MAHjllVd0vkBBEKBQKFBWViZ9L4mIiOipV+2kZeHChZgyZQp++eUXOftDRERU53BpRxrVTloqXufSt29f2TpDRERUF3FlRxp67WnhehoRERHVFL3e09KuXbuHJi45OTmP1SEiIqK6piZ+MLEu0itpWbhwYaU34hIREdGDcU+LNPRKWry8vGBtbS1XX4iIiIjuq9pJC/ezEBERPRr+FSoNvU8PERERkX6M+IOJkqh20lJezp+0JyIiehScaZGG3q/xJyIiIqoJem3EJSIiIv3x9JA0mLQQERHJjO9pkQaXh4iIiMggcKaFiIhIZpxokQaTFiIiIplxeUgaXB4iIiIig8CZFiIiIplxokUaTFqIiIhkxmUNafB7JCIiIoPAmRYiIiKZ8UeHpcGkhYiISGZMWaTBpIWIiEhmPPIsDe5pISIiIoPAmRYiIiKZcZ5FGkxaiIiIZMbVIWlweYiIiKiOunz5Mt544w00btwY5ubm6NixI44ePSrWC4KA+fPnw87ODubm5nBzc8O5c+d02sjJyYG3tzdUKhUsLS3h6+uLgoICnZgTJ06gd+/eMDMzQ/PmzREWFibLeJi0EBERyUyhUEhy6eP69etwdXWFiYkJfvrpJ5w+fRrLli1Do0aNxJiwsDCsWrUK4eHhSExMhIWFBdzd3VFUVCTGeHt7IzU1FdHR0di9ezfi4+MxefJksT4/Px8DBw6Evb09kpOTsXTpUoSEhGDDhg2P/8XdQyEIgiB5qzXsRlF5TXeBqFYqKuWfDaJ7NW0o/06JbccvS9LOqC7PVDt2zpw5OHjwIH799dcq6wVBgEajwcyZMzFr1iwAQF5eHmxsbBAREQEvLy+cOXMGTk5OSEpKQvfu3QEAe/fuxeDBg3Hp0iVoNBqsX78ec+fOhVarhampqfjsyMhInD179jFHrIszLURERAaiuLgY+fn5OldxcXGVsT/++CO6d++O119/HdbW1ujSpQs+++wzsT49PR1arRZubm5imVqthrOzMxISEgAACQkJsLS0FBMWAHBzc4ORkRESExPFmD59+ogJCwC4u7sjLS0N169fl3T8TFqIiIhkJtXyUGhoKNRqtc4VGhpa5TP/+usvrF+/Hm3btsW+ffswdepUvPPOO9i0aRMAQKvVAgBsbGx07rOxsRHrtFotrK2tdeqNjY1hZWWlE1NVG3c/Qyo8PURERCQzqQ4PBQcHIzAwUKdMqVRWGVteXo7u3btjyZIlAIAuXbrg1KlTCA8Ph4+Pj0Q9erI400JERGQglEolVCqVznW/pMXOzg5OTk46ZY6OjsjIyAAA2NraAgAyMzN1YjIzM8U6W1tbZGVl6dTfvn0bOTk5OjFVtXH3M6TCpIWIiEhmNXF6yNXVFWlpaTplf/zxB+zt7QEArVq1gq2tLWJiYsT6/Px8JCYmwsXFBQDg4uKC3NxcJCcnizGxsbEoLy+Hs7OzGBMfH4/S0lIxJjo6Gg4ODjonlaTApIWIiEhmRhJd+pgxYwYOHz6MJUuW4Pz589i6dSs2bNgAPz8/AHcSqYCAACxevBg//vgjTp48ibFjx0Kj0cDT0xPAnZmZQYMGYdKkSThy5AgOHjwIf39/eHl5QaPRAADGjBkDU1NT+Pr6IjU1Fdu2bcPKlSsrLWNJgUeeiZ4iPPJMVNmTOPK884Q0G1JffV6/5Zbdu3cjODgY586dQ6tWrRAYGIhJkyaJ9YIgYMGCBdiwYQNyc3PRq1cvrFu3Du3atRNjcnJy4O/vj127dsHIyAgjRozAqlWr0KBBAzHmxIkT8PPzQ1JSEpo0aYJp06Zh9uzZjz/gezBpIXqKMGkhqqwuJy11DU8PERERyYw/PSQNJi1EREQy4w8mSoMbcYmIiMggcKaFiIhIZkZcIJIEkxYiIiKZcXlIGlweIiIiIoPAmRYiIiKZKbg8JAkmLURERDLj8pA0uDxEREREBoEzLURERDLj6SFpMGkhIiKSGZeHpMGkhYiISGZMWqTBPS1ERERkEDjTQkREJDMeeZYGkxYiIiKZGTFnkQSXh4iIiMggcKaFiIhIZlwekgaTFiIiIpnx9JA0uDxEREREBoEzLURERDLj8pA0mLQQERHJjKeHpMHlISIiIjIInGkhvfx3/Rp8Fr5Wp8y+ZSt898MeAMCHixbgSGICrmVnwbx+fTzfqQveCZiJlq1ai/FHEhMQvnYVzp/7A+bm9eExdBjenhYAY2P+z5EMR8qxo9i6eSPSzpzGP9eyseSTVejTb4BYfyA2GpHfbUfa2VTk5+Xhyy3foq2Do04b/1zLxrqVy5B05BBuFt5EC/uWGDthMvoNGAgAuHrlMiI+D8exo4n4559raNLEGu6Dh2DshMkwMTF9ouOlx8PlIWnwbwnSW+tn22Ddho3iZ+N6//7PyNHpObzsMQS2thrk5+fiv+vXwm/KRPy4Jxr16tXDH2lnMd3vLUyY+BYWLv4IWVmZCF28EOXl5QiY+W5NDIfokdy6dQtt2jrA45XhmBs0vcr65zt3wX9ecsfHixdU2cbiBe+h4EY+Plq2BmrLRojeG4X5wTPx+f+2o117R1y88BcEoRxB7y3AM81aIP3Pc/j4wxDcunUL/gFBcg+RJMTTQ9Jg0kJ6MzY2RpMmTausG/7aSPGfNc88g7f9p2P06564euUymjVvgeh9P6FtOwdMmuIHAGjewh7vBMxC8LszMGmKHywsLJ7IGIgel4trb7i49r5v/SCPVwDcmS25n1MnjmPmnPlw6vA8AGDcxCnY/vX/kHY2Fe3aO6JHz97o0fPfZzzTrDkyLl7Azu+2MWkxMMxZpME9LaS3jIsXMcitD4YNfgnvBwdBe/VKlXG3bt7Ejz98j2eeaQYbW1sAQElJCUxNlTpxSjMliouLceZ0qux9J6pNOjzfBbHRe5Gfl4vy8nL8vG8PSopL0KXbC/e9p6DgBlQq9RPsJVHtUauTlr///hsTJkx4YExxcTHy8/N1ruLi4ifUw6dPh47PI+SDJVi97jPMmbsAVy5fwsTxb6CwsFCM2bFtK3r36IbeLt1w6Ldfsfa/X4jr7y49e+HE78ex96colJWVISszE5//dx0A4Nq17BoZE1FNWfTRMty+XYrBA1zR36ULli5ZiCWfrESz5vZVxl/6+yK+27YVw4a//oR7So/LSKGQ5Hra1eqkJScnB5s2bXpgTGhoKNRqtc61bOlHT6iHTx/XXn3gNnAQ2rZzgItrL6xc81/cuHED0ft+EmNeHjwUW7Z9hw0b/4cW9i0xJ2iGmEj26OmKd2YEIXRxCHq+0AnDX3kZrr36AgD/QNJT5/P1q3Hjxg2sWPcFPt+8DaO8fTB/zkz8ef6PSrHZWZmYOe0t9HdzxyuvMmkxNAqJrqddje5p+fHHHx9Y/9dffz20jeDgYAQGBuqUlQgmj9Uvqr6GKhXs7Vvi0t8ZYlmDhg3RoGFDtLBviY7Pd0L/Xj3wS+zPGPSyBwDgjbHj4P2mD65lZ6OhSoWrVy5jzapP8Uyz5jU1DKIn7vKlDHy3fSv+t+0HtH62DQCgbbv2+D0lGd9v/xpB7/27efdadhamTRmPDs93wbtzQ2qox0Q1r0aTFk9PTygUCgiCcN8YxUP+37dSqYRSqbtH4kZRuST9o4e7ebMQl/7+G4P/f9PhvQQBECCgtKREp1yhUKCptTUAYN9PUbCxtUN7RyfZ+0tUWxQVFQEAjO5561g9IyOUC//+Oyw7KxPTpoyHQ3snvLdgMYyMavUEOd0Pp0kkUaNJi52dHdatW4dhw4ZVWZ+SkoJu3bo94V7Rg6xYFobeffvBzu4ZZGdn4b/rV8OonhHcX/bApUt/I3rfT+jh4opGjRohMzMTERs/g5lSCddefcQ2/hfxBXq69oZCocAvMdGI2Pg5Plr6KerVq1eDIyPSz82bhbh81wzj1cuXcC7tDBqq1XeO/OflIlN7Fdey7+zVyrh4AQBg1bgJGjdpCvuWrdCseQssXbIQftNnQW1pifi4WCQlJiBs+Z19XtlZmZj21jjY2GngHxCE3Os54vMa3+cEH9VOfE+LNGo0Ze/WrRuSk5PvW/+wWRh68jIztZg7ZxZGDHsZwUEzoFZbImLzN2hkZQWlqRLHjx3FdL+34DlkEN57NxAWFhb44n9fw6pxY7GNQ7/9ionj38DYMa/jt18PYNnKNej3H7caHBWR/s6eTsV479cw3vs1AMDq5WEY7/0avghfAwD4Lf4XjPd+DUEBUwEAC96bhfHeryHyu+0AAGNjEyxdGQ5Ly0aYHegPH6/h2Bv1A+aGLIHL/yf5SYmHcOnvDCQfOYxXB/8Hwwb1Ey8ifX300UdQKBQICAgQy4qKiuDn54fGjRujQYMGGDFiBDIzM3Xuy8jIgIeHB+rXrw9ra2sEBQXh9u3bOjFxcXHo2rUrlEol2rRpg4iICFnGoBBqMCv49ddfUVhYiEGDBlVZX1hYiKNHj6Jv3756tcvlIaKqFZXyzwbRvZo2lH/R4chfeZK082LrRzvunpSUhJEjR0KlUqF///5YsWIFAGDq1KmIiopCREQE1Go1/P39YWRkhIMHDwIAysrK0LlzZ9ja2mLp0qW4evUqxo4di0mTJmHJkiUAgPT0dHTo0AFTpkzBxIkTERMTg4CAAERFRcHd3V2ScVeo0aRFLkxaiKrGpIWosieRtCRJlLS88AhJS0FBAbp27Yp169Zh8eLF6Ny5M1asWIG8vDw0bdoUW7duxWuv3ZkxPHv2LBwdHZGQkIAePXrgp59+wpAhQ3DlyhXY2NgAAMLDwzF79mxkZ2fD1NQUs2fPRlRUFE6dOiU+08vLC7m5udi7d68k467AHV1EREQG4lHeTebn5wcPDw+4uekuwycnJ6O0tFSnvH379mjRogUSEhIAAAkJCejYsaOYsACAu7s78vPzkZqaKsbc27a7u7vYhpSYtBAREclNohe1VPVustDQ0Ps+9ptvvsGxY8eqjNFqtTA1NYWlpaVOuY2NDbRarRhzd8JSUV9R96CY/Px83Lp162HfjF7420NEREQyk+r0UFXvJrv3tR8V/v77b0yfPh3R0dEwMzOT5Pk1jTMtREREMlMopLmUSiVUKpXOdb+kJTk5GVlZWejatSuMjY1hbGyMAwcOYNWqVTA2NoaNjQ1KSkqQm5urc19mZiZs///34mxtbSudJqr4/LAYlUoFc3NzKb4+EZMWIiKiOmjAgAE4efIkUlJSxKt79+7w9vYW/9nExAQxMTHiPWlpacjIyICLiwsAwMXFBSdPnkRWVpYYEx0dDZVKBScnJzHm7jYqYirakBKXh4iIiGRWE6+Wa9iwITp06KBTZmFhgcaNG4vlvr6+CAwMhJWVFVQqFaZNmwYXFxf06NEDADBw4EA4OTnhzTffRFhYGLRaLd5//334+fmJMzxTpkzBmjVr8O6772LChAmIjY3F9u3bERUVJfmYmLQQERHJrZa+EHf58uUwMjLCiBEjUFxcDHd3d6xbt06sr1evHnbv3o2pU6fCxcUFFhYW8PHxwaJFi8SYVq1aISoqCjNmzMDKlSvRrFkzfP7555K/owXge1qInip8TwtRZU/iPS3HLuZL0k5Xe5Uk7RgqzrQQERHJjL89JA0mLURERDJTMGeRBE8PERERkUHgTAsREZHMONEiDSYtREREcmPWIgkuDxEREZFB4EwLERGRzHh6SBpMWoiIiGTG00PSYNJCREQkM+Ys0uCeFiIiIjIInGkhIiKSG6daJMGkhYiISGbciCsNLg8RERGRQeBMCxERkcx4ekgaTFqIiIhkxpxFGlweIiIiIoPAmRYiIiK5capFEkxaiIiIZMbTQ9Lg8hAREREZBM60EBERyYynh6TBpIWIiEhmzFmkwaSFiIhIbsxaJME9LURERGQQONNCREQkM54ekgaTFiIiIplxI640uDxEREREBoEzLURERDLjRIs0mLQQERHJjVmLJLg8RERERAaBMy1EREQy4+khaTBpISIikhlPD0mDy0NERER1UGhoKF544QU0bNgQ1tbW8PT0RFpamk5MUVER/Pz80LhxYzRo0AAjRoxAZmamTkxGRgY8PDxQv359WFtbIygoCLdv39aJiYuLQ9euXaFUKtGmTRtERETIMiYmLURERDJTSHTp48CBA/Dz88Phw4cRHR2N0tJSDBw4EIWFhWLMjBkzsGvXLuzYsQMHDhzAlStXMHz4cLG+rKwMHh4eKCkpwaFDh7Bp0yZERERg/vz5Ykx6ejo8PDzQv39/pKSkICAgABMnTsS+ffv07PHDKQRBECRvtYbdKCqv6S4Q1UpFpfyzQXSvpg3l3ylx4Z8iSdpp2djske/Nzs6GtbU1Dhw4gD59+iAvLw9NmzbF1q1b8dprrwEAzp49C0dHRyQkJKBHjx746aefMGTIEFy5cgU2NjYAgPDwcMyePRvZ2dkwNTXF7NmzERUVhVOnTonP8vLyQm5uLvbu3ft4A74HZ1qIiIhkppDoP48jLy8PAGBlZQUASE5ORmlpKdzc3MSY9u3bo0WLFkhISAAAJCQkoGPHjmLCAgDu7u7Iz89HamqqGHN3GxUxFW1IiRtxiYiIDERxcTGKi4t1ypRKJZRK5QPvKy8vR0BAAFxdXdGhQwcAgFarhampKSwtLXVibWxsoNVqxZi7E5aK+oq6B8Xk5+fj1q1bMDc312+QD8CZFiIiIpkpFNJcoaGhUKvVOldoaOhDn+/n54dTp07hm2++eQKjlQ9nWoiIiGQm1Ynn4OBgBAYG6pQ9bJbF398fu3fvRnx8PJo1ayaW29raoqSkBLm5uTqzLZmZmbC1tRVjjhw5otNexemiu2PuPXGUmZkJlUol6SwLwJkWIiIig6FUKqFSqXSu+yUtgiDA398fO3fuRGxsLFq1aqVT361bN5iYmCAmJkYsS0tLQ0ZGBlxcXAAALi4uOHnyJLKyssSY6OhoqFQqODk5iTF3t1ERU9GGlHh6iOgpwtNDRJU9idNDl64XPzyoGpo1evCsyt3efvttbN26FT/88AMcHBzEcrVaLc6ATJ06FXv27EFERARUKhWmTZsGADh06BCAO0eeO3fuDI1Gg7CwMGi1Wrz55puYOHEilixZAuDOkecOHTrAz88PEyZMQGxsLN555x1ERUXB3d1dknFXYNJC9BRh0kJU2ZNJWkokaadZI9Nqxyru8xreL7/8EuPGjQNw5+VyM2fOxNdff43i4mK4u7tj3bp14tIPAFy8eBFTp05FXFwcLCws4OPjg48++gjGxv9+b3FxcZgxYwZOnz6NZs2aYd68eeIzpMSkhegpwqSFqLK6mrTURdyIS0REJDP+9pA0mLQQERHJjDmLNHh6iIiIiAwCZ1qIiIhkxuUhaTBpISIiktnj/m4Q3cGkhYiISG7MWSTBPS1ERERkEDjTQkREJDNOtEiDSQsREZHMuBFXGlweIiIiIoPAmRYiIiKZ8fSQNJi0EBERyY05iyS4PEREREQGgTMtREREMuNEizSYtBAREcmMp4ekweUhIiIiMgicaSEiIpIZTw9Jg0kLERGRzLg8JA0uDxEREZFBYNJCREREBoHLQ0RERDLj8pA0mLQQERHJjBtxpcHlISIiIjIInGkhIiKSGZeHpMGkhYiISGbMWaTB5SEiIiIyCJxpISIikhunWiTBpIWIiEhmPD0kDS4PERERkUHgTAsREZHMeHpIGkxaiIiIZMacRRpMWoiIiOTGrEUS3NNCREREBoEzLURERDLj6SFpMGkhIiKSGTfiSoPLQ0RERGQQFIIgCDXdCaqbiouLERoaiuDgYCiVypruDlGtwT8bRI+GSQvJJj8/H2q1Gnl5eVCpVDXdHaJag382iB4Nl4eIiIjIIDBpISIiIoPApIWIiIgMApMWko1SqcSCBQu40ZDoHvyzQfRouBGXiIiIDAJnWoiIiMggMGkhIiIig8CkhYiIiAwCkxYiIiIyCExaSDZr165Fy5YtYWZmBmdnZxw5cqSmu0RUo+Lj4zF06FBoNBooFApERkbWdJeIDAqTFpLFtm3bEBgYiAULFuDYsWPo1KkT3N3dkZWVVdNdI6oxhYWF6NSpE9auXVvTXSEySDzyTLJwdnbGCy+8gDVr1gAAysvL0bx5c0ybNg1z5syp4d4R1TyFQoGdO3fC09OzprtCZDA400KSKykpQXJyMtzc3MQyIyMjuLm5ISEhoQZ7RkREhoxJC0nu2rVrKCsrg42NjU65jY0NtFptDfWKiIgMHZMWIiIiMghMWkhyTZo0Qb169ZCZmalTnpmZCVtb2xrqFRERGTomLSQ5U1NTdOvWDTExMWJZeXk5YmJi4OLiUoM9IyIiQ2Zc0x2guikwMBA+Pj7o3r07XnzxRaxYsQKFhYUYP358TXeNqMYUFBTg/Pnz4uf09HSkpKTAysoKLVq0qMGeERkGHnkm2axZswZLly6FVqtF586dsWrVKjg7O9d0t4hqTFxcHPr371+p3MfHBxEREU++Q0QGhkkLERERGQTuaSEiIiKDwKSFiIiIDAKTFiIiIjIITFqIiIjIIDBpISIiIoPApIWIiIgMApMWIiIiMghMWohqgXHjxsHT01P83K9fPwQEBDzxfsTFxUGhUCA3N1e2Z9w71kfxJPpJRLUPkxai+xg3bhwUCgUUCgVMTU3Rpk0bLFq0CLdv35b92d9//z0++OCDasU+6b/AW7ZsiRUrVjyRZxER3Y2/PUT0AIMGDcKXX36J4uJi7NmzB35+fjAxMUFwcHCl2JKSEpiamkryXCsrK0naISKqSzjTQvQASqUStra2sLe3x9SpU+Hm5oYff/wRwL/LHB9++CE0Gg0cHBwAAH///TdGjhwJS0tLWFlZYdiwYbhw4YLYZllZGQIDA2FpaYnGjRvj3Xffxb2/pnHv8lBxcTFmz56N5s2bQ6lUok2bNvjiiy9w4cIF8bdsGjVqBIVCgXHjxgG488vaoaGhaNWqFczNzdGpUyd8++23Os/Zs2cP2rVrB3Nzc/Tv31+nn4+irKwMvr6+4jMdHBywcuXKKmMXLlyIpk2bQqVSYcqUKSgpKRHrqtN3Inr6cKaFSA/m5ub4559/xM8xMTFQqVSIjo4GAJSWlsLd3R0uLi749ddfYWxsjMWLF2PQoEE4ceIETE1NsWzZMkRERGDjxo1wdHTEsmXLsHPnTvznP/+573PHjh2LhIQErFq1Cp06dUJ6ejquXbuG5s2b47vvvsOIESOQlpYGlUoFc3NzAEBoaCi++uorhIeHo23btoiPj8cbb7yBpk2bom/fvvj7778xfPhw+Pn5YfLkyTh69Chmzpz5WN9PeXk5mjVrhh07dqBx48Y4dOgQJk+eDDs7O4wcOVLnezMzM0NcXBwuXLiA8ePHo3Hjxvjwww+r1XciekoJRFQlHx8fYdiwYYIgCEJ5ebkQHR0tKJVKYdasWWK9jY2NUFxcLN6zefNmwcHBQSgvLxfLiouLBXNzc2Hfvn2CIAiCnZ2dEBYWJtaXlpYKzZo1E58lCILQt29fYfr06YIgCEJaWpoAQIiOjq6yn7/88osAQLh+/bpYVlRUJNSvX184dOiQTqyvr68wevRoQRAEITg4WHByctKpnz17dqW27mVvby8sX778vvX38vPzE0aMGCF+9vHxEaysrITCwkKxbP369UKDBg2EsrKyavW9qjETUd3HmRaiB9i9ezcaNGiA0tJSlJeXY8yYMQgJCRHrO3bsqLOP5ffff8f58+fRsGFDnXaKiorw559/Ii8vD1evXoWzs7NYZ2xsjO7du1daIqqQkpKCevXq6TXDcP78edy8eRMvvfSSTnlJSQm6dOkCADhz5oxOPwDAxcWl2s+4n7Vr12Ljxo3IyMjArVu3UFJSgs6dO+vEdOrUCfXr19d5bkFBAf7++28UFBQ8tO9E9HRi0kL0AP3798f69ethamoKjUYDY2PdPzIWFhY6nwsKCtCtWzds2bKlUltNmzZ9pD5ULPfoo6CgAAAQFRWFZ555RqdOqVQ+Uj+q45tvvsGsWbOwbNkyuLi4oGHDhli6dCkSExOr3UZN9Z2Iaj8mLUQPYGFhgTZt2lQ7vmvXrti2bRusra2hUqmqjLGzs0NiYiL69OkDALh9+zaSk5PRtWvXKuM7duyI8vJyHDhwAG5ubpXqK2Z6ysrKxDInJycolUpkZGTcd4bG0dFR3FRc4fDhww8f5AMcPHgQPXv2xNtvvy2W/fnnn5Xifv/9d9y6dUtMyA4fPowGDRqgefPmsLKyemjfiejpxNNDRBLy9vZGkyZNMGzYMPz6669IT09HXFwc3nnnHVy6dAkAMH36dHz00UeIjIzE2bNn8fbbbz/wHSstW7aEj48PJkyYgMjISLHN7du3AwDs7e2hUCiwe/duZGdno6CgAA0bNsSsWbMwY8YMbNq0CX/++SeOHTuG1atXY9OmTQCAKVOm4Ny5cwgKCkJaWhq2bt2KiIiIao3z8uXLSElJ0bmuX7+Otm3b4ujRo9i3bx/++OMPzJs3D0lJSZXuLykpga+vL06fPo09e/ZgwYIF8Pf3h5GRUbX6TkRPqZreVENUW929EVef+qtXrwpjx44VmjRpIiiVSqF169bCpEmThLy8PEEQ7my8nT59uqBSqQRLS0shMDBQGDt27H034gqCINy6dUuYMWOGYGdnJ5iamgpt2rQRNm7cKNYvWrRIsLW1FRQKheDj4yMIwp3NwytWrBAcHBwEExMToWnTpoK7u7tw4MAB8b5du3YJbdq0EZRKpdC7d29h48aN1dqIC6DStXnzZqGoqEgYN26coFarBUtLS2Hq1KnCnDlzhE6dOlX63ubPny80btxYaNCggTBp0iShqKhIjHlY37kRl+jppBCE++z+IyIiIqpFuDxEREREBoFJCxERERkEJi1ERERkEJi0EBERkUFg0kJEREQGgUkLERERGQQmLURERGQQmLQQERGRQWDSQkRERAaBSQsREREZBCYtREREZBCYtBAREZFB+D/GbzuBOxP3igAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# # Plot feature importance\n",
"# xgb.plot_importance(y_pred_xgb)\n",
"# plt.show()\n",
"xgb.plot_importance(estm_xg)\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"id": "wLkhIeV00Gb8",
"outputId": "53a79897-1c43-478c-d8bf-3631538bb2b0"
},
"execution_count": 28,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAucAAAHHCAYAAAAcQ/ZjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADJJUlEQVR4nOzde1yO9//A8dfdQdK5KCFyCDnnkPM5SuY7sTmMEWIoJOcZChPmtM1pmGLTtu/mtJFDTjNGSE5D5jSGhhmtInd1/f7o1/V1q6jcKbyfj0ePdX2uz/W5Pp/3nd3v+3N9ruvWKIqiIIQQQgghhCh0BoXdASGEEEIIIUQGSc6FEEIIIYQoIiQ5F0IIIYQQooiQ5FwIIYQQQogiQpJzIYQQQgghighJzoUQQgghhCgiJDkXQgghhBCiiJDkXAghhBBCiCJCknMhhBBCCCGKCEnOhRBCiAISHh6ORqPh6tWrhd0VIcQrQpJzIYQQepOZjGb3M3HixAI556+//kpwcDD3798vkPbfZMnJyQQHB7Nv377C7ooQbwyjwu6AEEKI18/06dOpWLGiTlmtWrUK5Fy//vorISEh+Pr6Ym1tXSDnyK/333+fXr16YWJiUthdyZfk5GRCQkIAaNOmTeF2Rog3hCTnQggh9K5Tp040bNiwsLvxQpKSkjAzM3uhNgwNDTE0NNRTj16e9PR0Hj9+XNjdEOKNJMtahBBCvHTbtm2jZcuWmJmZYWFhQefOnfntt9906pw6dQpfX18qVapE8eLFKV26NAMHDuTvv/9W6wQHBzNu3DgAKlasqC6huXr1KlevXkWj0RAeHp7l/BqNhuDgYJ12NBoNZ8+e5b333sPGxoYWLVqo+7/++msaNGiAqakptra29OrVi+vXrz93nNmtOXd2duatt95i3759NGzYEFNTU2rXrq0uHdmwYQO1a9emePHiNGjQgNjYWJ02fX19MTc35/Lly3h6emJmZkaZMmWYPn06iqLo1E1KSmLMmDE4OTlhYmJCtWrVmDdvXpZ6Go2GgIAA1q1bR82aNTExMWH58uWUKlUKgJCQEDW2mXHLzevzZGwvXryoXt2wsrJiwIABJCcnZ4nZ119/jbu7OyVKlMDGxoZWrVqxc+dOnTq5+fsR4lUlM+dCCCH07sGDB9y9e1enrGTJkgB89dVX9O/fH09PT+bMmUNycjLLli2jRYsWxMbG4uzsDEBUVBSXL19mwIABlC5dmt9++40VK1bw22+/cfjwYTQaDd26dePChQt88803LFy4UD1HqVKluHPnTp77/e677+Li4sKsWbPUBPbjjz9mypQp9OjRAz8/P+7cucPnn39Oq1atiI2NzddSmosXL/Lee+/xwQcf0LdvX+bNm0eXLl1Yvnw5H374IcOHDwcgNDSUHj16EBcXh4HB/+bT0tLS8PLyokmTJsydO5ft27czbdo0UlNTmT59OgCKovCf//yHvXv3MmjQIOrVq8eOHTsYN24cN27cYOHChTp92rNnD//9738JCAigZMmS1K1bl2XLljFs2DB8fHzo1q0bAHXq1AFy9/o8qUePHlSsWJHQ0FCOHz/OqlWrsLe3Z86cOWqdkJAQgoODadasGdOnT6dYsWJER0ezZ88eOnbsCOT+70eIV5YihBBC6ElYWJgCZPujKIry77//KtbW1srgwYN1jouPj1esrKx0ypOTk7O0/8033yiAsn//frXsk08+UQDlypUrOnWvXLmiAEpYWFiWdgBl2rRp6va0adMUQOndu7dOvatXryqGhobKxx9/rFN++vRpxcjIKEt5TvF4sm8VKlRQAOXXX39Vy3bs2KEAiqmpqfLHH3+o5V988YUCKHv37lXL+vfvrwDKiBEj1LL09HSlc+fOSrFixZQ7d+4oiqIomzZtUgBl5syZOn165513FI1Go1y8eFEnHgYGBspvv/2mU/fOnTtZYpUpt69PZmwHDhyoU9fHx0exs7NTt3///XfFwMBA8fHxUdLS0nTqpqenK4qSt78fIV5VsqxFCCGE3i1ZsoSoqCidH8iYbb1//z69e/fm7t276o+hoSGNGzdm7969ahumpqbq748ePeLu3bs0adIEgOPHjxdIv4cOHaqzvWHDBtLT0+nRo4dOf0uXLo2Li4tOf/OiRo0aNG3aVN1u3LgxAO3ataN8+fJZyi9fvpyljYCAAPX3zGUpjx8/ZteuXQBERkZiaGjIyJEjdY4bM2YMiqKwbds2nfLWrVtTo0aNXI8hr6/P07Ft2bIlf//9NwkJCQBs2rSJ9PR0pk6dqnOVIHN8kLe/HyFeVbKsRQghhN65u7tne0Po77//DmQkodmxtLRUf7937x4hISF8++233L59W6fegwcP9Njb/3n6CTO///47iqLg4uKSbX1jY+N8nefJ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detGhw4dSE1NZciQIU0Y2aMhMjKSixcval1jIv6cmnJ693UOHh4eODo6MmTIEHJycujQocPDDvORJctahHgEtGzZEn19/Sp3Evi///s/HBwcmiiqR1uLFi3o1KkT2dnZODg4cPv2bW7cuKHVR/Jbf5V5qu016uDgUOUC5rKyMn777TfJ831o3749LVu2JDs7G5C81mbWrFkcOnSIlJQUWrdurbbX53fewcGh2tdz5bYnVU05rU7fvn0BtF6rktO6SXEuxCOgefPmeHl5ceLECbWtoqKCEydO4O3t3YSRPboKCwvJycnB0dERLy8vDAwMtPKblZVFbm6u5Lee2rVrh4ODg1YOCwoKyMjIUHPo7e3NjRs3OHv2rNonOTmZiooK9T9xUbcrV67w66+/4ujoCEheq6MoCrNmzeLAgQMkJyfTrl07re31+Z339vbmwoULWm98jh07hoWFBU899dTDGYgOqSun1fniiy8AtF6rktN6aOorUoUQ9ZOQkKAYGhoqcXFxyqVLl5QZM2YoLVq00LrqXdRswYIFSmpqqvL9998r6enpiq+vr9KyZUvl6tWriqIoSkREhNKmTRslOTlZOXPmjOLt7a14e3s3cdS65datW8r58+eV8+fPK4DyxhtvKOfPn1d++OEHRVEUZe3atUqLFi2UDz/8UPnqq6+U559/XmnXrp3y+++/q8fw9/dXevbsqWRkZCiffvqp4urqqgQFBTXVkHRCbXm9deuWsnDhQuX06dPK999/rxw/flzx9PRUXF1dlT/++EM9huRV28yZMxVLS0slNTVVycvLUx/FxcVqn7p+58vKypSuXbsqw4YNU7744gvl448/VmxtbZWlS5c2xZCaXF05zc7OVlatWqWcOXNG+f7775UPP/xQad++vTJgwAD1GJLT+pHiXIhHyObNm5U2bdoozZs3V/r06aN89tlnTR3SI2PixImKo6Oj0rx5c8XJyUmZOHGikp2drW7//ffflZdeekmxsrJSTExMlMDAQCUvL68JI9Y9KSkpClDlMXXqVEVR7txO8W9/+5tib2+vGBoaKkOGDFGysrK0jvHrr78qQUFBipmZmWJhYaG8+OKLyq1bt5pgNLqjtrwWFxcrw4YNU2xtbRUDAwPFxcVFmT59epU35ZJXbdXlE1B27Nih9qnP7/zly5eV4cOHK8bGxkrLli2VBQsWKKWlpQ95NLqhrpzm5uYqAwYMUKytrRVDQ0OlY8eOSlRUlHLz5k2t40hO66ZRFEV5ePP0QgghhBBCiJrImnMhhBBCCCF0hBTnQgghhBBC6AgpzoUQQgghhNARUpwLIYQQQgihI6Q4F0IIIYQQQkdIcS6EEEIIIYSOkOJcCCGEEEIIHSHFuRBCCCGEEDpCinMhhBCinkJDQ9FoNFUe2dnZTR2aEOIx0aypAxBCCCEeJf7+/uzYsUOrzdbWtomi0VZaWoqBgUFThyGE+BNk5lwIIYS4D4aGhjg4OGg99PX1q+37ww8/MGrUKKysrDA1NcXd3Z3ExER1+9dff81zzz2HhYUF5ubmPPvss+Tk5ABQUVHBqlWraN26NYaGhvTo0YOPP/5Y3ffy5ctoNBr27NnDwIEDMTIyYvfu3QBs374dNzc3jIyM6NKlC1u3bm3EjAghGpLMnAshhBCNJDIyktu3b5OWloapqSmXLl3CzMwMgJ9++okBAwbg4+NDcnIyFhYWpKenU1ZWBsCmTZtYv349//znP+nZsyfvvPMOo0eP5uuvv8bV1VU9x5IlS1i/fj09e/ZUC/Tly5ezZcsWevbsyfnz55k+fTqmpqZMnTq1SfIghKg/jaIoSlMHIYQQQjwKQkND2bVrF0ZGRmrb8OHD2bt3b7X9u3XrxtixY1mxYkWVbcuWLSMhIYGsrKxql6I4OTkRGRnJsmXL1LY+ffrQu3dv/vGPf3D58mXatWvHxo0befnll9U+HTt2ZPXq1QQFBalta9asITExkVOnTj3QuIUQD4/MnAshhBD3YdCgQbz11lvqc1NT0xr7zpkzh5kzZ3L06FF8fX0ZO3Ys3bp1A+CLL77g2WefrbYwLygo4Oeff6Z///5a7f379+fLL7/UauvVq5f676KiInJycggLC2P69Olqe1lZGZaWlvc3UCFEk5DiXAghhLgPpqamdOzYsV59w8PD8fPz4/Dhwxw9epSYmBjWr1/P7NmzMTY2brB4KhUWFgKwbds2+vbtq9WvpnXxQgjdIheECiGEEI3I2dmZiIgIPvjgAxYsWMC2bduAO0teTp48SWlpaZV9LCwsaNWqFenp6Vrt6enpPPXUUzWey97enlatWvHdd9/RsWNHrUe7du0admBCiEYhM+dCCCFEI5k7dy7Dhw+nU6dOXL9+nZSUFNzc3ACYNWsWmzdvZtKkSSxduhRLS0s+++wz+vTpQ+fOnYmKimLFihV06NCBHj16sGPHDr744gv1jiw1iY6OZs6cOVhaWuLv709JSQlnzpzh+vXrzJ8//2EMWwjxJ0hxLoQQQjSS8vJyIiMjuXLlChYWFvj7+7NhwwYAbGxsSE5OJioqioEDB6Kvr0+PHj3UdeZz5szh5s2bLFiwgKtXr/LUU0/x0Ucfad2ppTrh4eGYmJjw+uuvExUVhampKR4eHsydO7exhyuEaABytxYhhBBCCCF0hKw5F0IIIYQQQkdIcS6EEEIIIYSOkOJcCCGEEEIIHSHFuRBCCCGEEDpCinMhhBBCCCF0hBTnQgghhBBC6AgpzoUQQgghhNARUpwLIYQQQgihI6Q4F0IIIYQQQkdIcS6EEEIIIYSOkOJcCCGEEEIIHSHFuRBCCCGEEDri/wNi+XocW3mppgAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import joblib"
],
"metadata": {
"id": "oLthUqWZ03hx"
},
"execution_count": 29,
"outputs": []
},
{
"cell_type": "code",
"source": [
"joblib.dump(estm_xg, 'xgb_model.pkl')\n",
"# To load the model later\n",
"# loaded_model = joblib.load('xgboost_model.pkl')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "uNgh-JRx1F7N",
"outputId": "2d656360-1689-41cf-8fa2-5cc570f13e34"
},
"execution_count": 30,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['xgb_model.pkl']"
]
},
"metadata": {},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"source": [
"import pickle\n",
"\n",
"# Save the model to a file using pickle\n",
"with open('xgboost_model.pkl', 'wb') as file:\n",
" pickle.dump(estm_xg, file)\n"
],
"metadata": {
"id": "EUR23YUTIIIs"
},
"execution_count": 31,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import pickle\n",
"\n",
"# Load the model from the file\n",
"# with open('xgboost_model.pkl', 'rb') as file:\n",
"# loaded_model = pickle.load(file)\n",
"\n",
"# You can now use the loaded_model for predictions\n",
"# y_pred = loaded_model.predict(X_test_df)"
],
"metadata": {
"id": "RFxEdU8zMhnp"
},
"execution_count": 32,
"outputs": []
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "rU1-1ApYMyg2"
},
"execution_count": null,
"outputs": []
}
]
}