From 9135e7794252a08f79b0ed321dd482ca07f1bb78 Mon Sep 17 00:00:00 2001 From: wuhanstudio Date: Mon, 3 Jan 2022 09:49:45 +0000 Subject: [PATCH] Initial Commit --- .gitignore | 1 + 2_type_with_ct_score.ipynb | 2724 +++++++++++++++++++++++++++++++++ 2_type_without_ct_score.ipynb | 2712 ++++++++++++++++++++++++++++++++ 4_type_with_ct_score.ipynb | 1183 ++++++++++++++ 4_type_without_ct_score.ipynb | 1200 +++++++++++++++ dataset/2-type-dataset-ct.pkl | Bin 0 -> 28653 bytes dataset/2-type-dataset.pkl | Bin 0 -> 27933 bytes dataset/4-type-dataset-ct.pkl | Bin 0 -> 45138 bytes dataset/4-type-dataset.pkl | Bin 0 -> 43716 bytes dataset/covid.csv | 93 ++ lime.png | Bin 0 -> 13524 bytes model/2-type-model-4-ct.pkl | Bin 0 -> 217106 bytes model/2-type-model-4.pkl | Bin 0 -> 235707 bytes model/4-type-model-4-ct.pkl | Bin 0 -> 598452 bytes model/4-type-model-4.pkl | Bin 0 -> 697252 bytes 15 files changed, 7913 insertions(+) create mode 100644 .gitignore create mode 100644 2_type_with_ct_score.ipynb create mode 100644 2_type_without_ct_score.ipynb create mode 100644 4_type_with_ct_score.ipynb create mode 100644 4_type_without_ct_score.ipynb create mode 100644 dataset/2-type-dataset-ct.pkl create mode 100644 dataset/2-type-dataset.pkl create mode 100644 dataset/4-type-dataset-ct.pkl create mode 100644 dataset/4-type-dataset.pkl create mode 100644 dataset/covid.csv create mode 100644 lime.png create mode 100644 model/2-type-model-4-ct.pkl create mode 100644 model/2-type-model-4.pkl create mode 100644 model/4-type-model-4-ct.pkl create mode 100644 model/4-type-model-4.pkl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..87620ac --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.ipynb_checkpoints/ diff --git a/2_type_with_ct_score.ipynb b/2_type_with_ct_score.ipynb new file mode 100644 index 0000000..70fc1f7 --- /dev/null +++ b/2_type_with_ct_score.ipynb @@ -0,0 +1,2724 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interpretable ML - COVID19\n", + "> Interpretable ML Research for COVID19\n", + "- toc:true\n", + "- branch: master\n", + "- badges: true\n", + "- comments: true\n", + "- author: Han Wu\n", + "- categories: [jupyter]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 0. Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "np.set_printoptions(suppress=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "covid = pd.read_csv(\"dataset/covid.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AVG age for severity 0: 36.833333333333336\n", + "AVG age for severity 1: 47.45283018867924\n", + "AVG age for severity 2: 54.3125\n", + "AVG age for severity 3: 69.4\n" + ] + } + ], + "source": [ + "print(\"AVG age for severity 0:\", np.mean(covid[covid.Severity03 == 0].Age.to_numpy()))\n", + "print(\"AVG age for severity 1:\", np.mean(covid[covid.Severity03 == 1].Age.to_numpy()))\n", + "print(\"AVG age for severity 2:\", np.mean(covid[covid.Severity03 == 2].Age.to_numpy()))\n", + "print(\"AVG age for severity 3:\", np.mean(covid[covid.Severity03 == 3].Age.to_numpy()))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(92, 74)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "covid.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Data Wash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that has NULL value" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "remove_columns = ['MedNum', 'LVEF', 'SO2', 'PO2', 'YHZS', 'RML', 'RUL', 'RLL', 'LUL', 'LLL']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that records time rather than biomarkers" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "remove_columns = ['Onset2Admi', 'Onset2CT1', 'Onset2CTPositive1', 'Onset2CTPeak']" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Patients that have no records" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.Weight != \" \"]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.cTnI != \" \"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "String to Float" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "covid['Weight'] = covid['Weight'].astype(np.float64)\n", + "covid['Height'] = covid['Height'].astype(np.float64)\n", + "covid['cTnITimes'] = covid['cTnITimes'].astype(np.float64)\n", + "covid['cTnI'] = covid['cTnI'].astype(np.float64)\n", + "covid['NTproBNP'] = covid['NTproBNP'].astype(np.float64)\n", + "covid['Cr'] = covid['Cr'].astype(np.float64)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Train Test Split" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import preprocessing\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "y = covid.Severity01.to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# Use Both\n", + "covid = covid.drop([\"Severity01\", \"Severity03\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# Use None\n", + "# covid = covid.drop([\"Severity01\", \"Severity03\", \"CTScore\", \"AIVolumeP\"], axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Patient No. is irrrelevant" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop([\"No\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "X = covid\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.9, random_state = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 57), (9, 57))" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Height', 'Weight', 'BMI', 'Temp', 'CTScore',\n", + " 'AIVolumeP', 'cTnITimes', 'cTnI', 'cTnICKMBOrdinal1',\n", + " 'cTnICKMBOrdinal2', 'AST', 'LDH', 'CK', 'CKMB', 'HBDH', 'HiCKMB',\n", + " 'NTproBNP', 'Cr', 'PCT1', 'WBC1', 'NEU1', 'LYM1', 'N2L1', 'CRP1',\n", + " 'ALB1', 'PCT2', 'WBC2', 'NEU2', 'LYM2', 'N2L2', 'CRP2', 'ALB2',\n", + " 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis', 'SoreThroat',\n", + " 'Catarrh', 'Headache', 'ChestPain', 'Fatigue', 'SoreMuscle',\n", + " 'Stomachache', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Arrythmia',\n", + " 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 0, 0, 1, 1, 0, 1, 0], dtype=int64)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Feature Selection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Basic Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.1.1 Drop constant and Quasi-constant features" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import VarianceThreshold" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "def drop_features(X_train, X_test, threshhold):\n", + " sel = VarianceThreshold(threshold=threshhold)\n", + " sel.fit(X_train)\n", + " print(\"No. of constant features:\",\n", + " len([\n", + " x for x in X_train.columns\n", + " if x not in X_train.columns[sel.get_support()]\n", + " ])\n", + " )\n", + " constant_features = [x for x in X_train.columns if x not in X_train.columns[sel.get_support()]]\n", + "\n", + " print(constant_features)\n", + " X_train.drop(labels=constant_features, axis=1, inplace=True)\n", + " X_test.drop(labels=constant_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Drop constant and quasi-constant features" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No. of constant features: 2\n", + "['PCT2', 'Stomachache']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "drop_features(X_train, X_test, 0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 55), (9, 55))" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.1.2 Drop Duplicated Features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Maybe some symptoms are correlated" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No. of Duplicated Features: 1\n", + "['Arrythmia']\n" + ] + } + ], + "source": [ + "covid_t = covid.T\n", + "print(\"No. of Duplicated Features:\", covid_t.duplicated().sum())\n", + "print(covid_t[covid_t.duplicated()].index.values)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print out duplicated features" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CAD\n", + "Arrythmia\n" + ] + } + ], + "source": [ + "duplicated_feat = []\n", + "for i in range(0, len(X_train.columns)):\n", + " col_1 = X_train.columns[i]\n", + " for col_2 in X_train.columns[i + 1 : ]:\n", + " if X_train[col_1].equals(X_train[col_2]):\n", + " print(col_1)\n", + " print(col_2) \n", + " duplicated_feat.append(col_2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Drop duplicated features" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "# covid_unique = covid_t.drop_duplicates(keep='first').T" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "X_train.drop(labels=covid_t[covid_t.duplicated()].index.values, axis=1, inplace=True)\n", + "X_test.drop(labels=covid_t[covid_t.duplicated()].index.values, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 54), (9, 54))" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Correlations" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "categorical_features = ['Sex', 'AgeG1', \n", + " 'Fever', 'Cough', 'Phlegm', 'Hemoptysis', 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue', 'SoreMuscle', # 'Stomachache', \n", + " 'Diarrhea', 'PoorAppetite', 'NauseaNVomit', \n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', #'CAD', 'Arrythmia', \n", + " 'Cancer']" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "numerical_features = ['Age', 'Height', 'Weight', 'BMI', 'Temp', 'cTnITimes', 'cTnI', 'cTnICKMBOrdinal1', 'cTnICKMBOrdinal2', 'AST',\n", + " 'LDH', 'CK', 'CKMB', 'HBDH', 'HiCKMB', 'NTproBNP', 'Cr', 'PCT1', 'WBC1',\n", + " 'NEU1', 'LYM1', 'N2L1', 'CRP1', 'ALB1', 'WBC2', 'NEU2', 'LYM2', 'N2L2',\n", + " 'CRP2', 'ALB2']" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "# numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']\n", + "# numerical_vars = list(covid.select_dtypes(include=numerics).columns)\n", + "# data = covid[numerical_vars]" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "corrmat = X_train.corr()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "fig.set_size_inches(11, 11)\n", + "sns.heatmap(corrmat)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature1feature2corr
0LDHHBDH0.958191
1HBDHLDH0.958191
2HeightPoorAppetite0.911704
3PoorAppetiteHeight0.911704
4WBC2NEU20.911419
5NEU2WBC20.911419
6WBC1NEU10.903520
7NEU1WBC10.903520
8AgeG1Age0.893413
9AgeAgeG10.893413
10AIVolumePCTScore0.874107
11CTScoreAIVolumeP0.874107
12cTnICKMBOrdinal1cTnICKMBOrdinal20.853741
13cTnICKMBOrdinal2cTnICKMBOrdinal10.853741
14LYM1LYM20.842688
15LYM2LYM10.842688
16BMIWeight0.842409
17WeightBMI0.842409
18NTproBNPN2L20.808767
19N2L2NTproBNP0.808767
\n", + "
" + ], + "text/plain": [ + " feature1 feature2 corr\n", + "0 LDH HBDH 0.958191\n", + "1 HBDH LDH 0.958191\n", + "2 Height PoorAppetite 0.911704\n", + "3 PoorAppetite Height 0.911704\n", + "4 WBC2 NEU2 0.911419\n", + "5 NEU2 WBC2 0.911419\n", + "6 WBC1 NEU1 0.903520\n", + "7 NEU1 WBC1 0.903520\n", + "8 AgeG1 Age 0.893413\n", + "9 Age AgeG1 0.893413\n", + "10 AIVolumeP CTScore 0.874107\n", + "11 CTScore AIVolumeP 0.874107\n", + "12 cTnICKMBOrdinal1 cTnICKMBOrdinal2 0.853741\n", + "13 cTnICKMBOrdinal2 cTnICKMBOrdinal1 0.853741\n", + "14 LYM1 LYM2 0.842688\n", + "15 LYM2 LYM1 0.842688\n", + "16 BMI Weight 0.842409\n", + "17 Weight BMI 0.842409\n", + "18 NTproBNP N2L2 0.808767\n", + "19 N2L2 NTproBNP 0.808767" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corrmat = X_train.corr()\n", + "corrmat = corrmat.abs().unstack()\n", + "corrmat = corrmat.sort_values(ascending=False)\n", + "corrmat = corrmat[corrmat >= 0.8]\n", + "corrmat = corrmat[corrmat < 1]\n", + "corrmat = pd.DataFrame(corrmat).reset_index()\n", + "corrmat.columns = ['feature1', 'feature2', 'corr']\n", + "corrmat" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "found 10 correlated groups\n", + "out of 54 total features\n" + ] + } + ], + "source": [ + "# find groups of correlated features\n", + "\n", + "grouped_feature_ls = []\n", + "correlated_groups = []\n", + "\n", + "for feature in corrmat.feature1.unique():\n", + " if feature not in grouped_feature_ls:\n", + "\n", + " # find all features correlated to a single feature\n", + " correlated_block = corrmat[corrmat.feature1 == feature]\n", + " grouped_feature_ls = grouped_feature_ls + list(\n", + " correlated_block.feature2.unique()) + [feature]\n", + "\n", + " # append the block of features to the list\n", + " correlated_groups.append(correlated_block)\n", + "\n", + "print('found {} correlated groups'.format(len(correlated_groups)))\n", + "print('out of {} total features'.format(X_train.shape[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " feature1 feature2 corr\n", + "0 LDH HBDH 0.958191\n", + "\n", + " feature1 feature2 corr\n", + "2 Height PoorAppetite 0.911704\n", + "\n", + " feature1 feature2 corr\n", + "4 WBC2 NEU2 0.911419\n", + "\n", + " feature1 feature2 corr\n", + "6 WBC1 NEU1 0.90352\n", + "\n", + " feature1 feature2 corr\n", + "8 AgeG1 Age 0.893413\n", + "\n", + " feature1 feature2 corr\n", + "10 AIVolumeP CTScore 0.874107\n", + "\n", + " feature1 feature2 corr\n", + "12 cTnICKMBOrdinal1 cTnICKMBOrdinal2 0.853741\n", + "\n", + " feature1 feature2 corr\n", + "14 LYM1 LYM2 0.842688\n", + "\n", + " feature1 feature2 corr\n", + "16 BMI Weight 0.842409\n", + "\n", + " feature1 feature2 corr\n", + "18 NTproBNP N2L2 0.808767\n", + "\n" + ] + } + ], + "source": [ + "# now we can visualise each group. We see that some groups contain\n", + "# only 2 correlated features, some other groups present several features \n", + "# that are correlated among themselves.\n", + "\n", + "for group in correlated_groups:\n", + " print(group)\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "def correlation(dataset, threshold):\n", + " col_corr = set()\n", + " corr_matrix = dataset.corr()\n", + " for i in range(len(corr_matrix.columns)):\n", + " for j in range(i):\n", + " if abs(corr_matrix.iloc[i, j] >= threshold):\n", + " colname = corr_matrix.columns[i]\n", + " col_corr.add(colname)\n", + " return col_corr" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['LYM2', 'NEU1', 'NEU2', 'BMI', 'N2L2', 'AgeG1', 'AIVolumeP', 'cTnICKMBOrdinal2', 'HBDH']\n" + ] + } + ], + "source": [ + "corr_features = list((correlation(X_train, 0.8)))\n", + "print(corr_features)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "for i in corr_features:\n", + " if i in categorical_features:\n", + " corr_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "for i in corr_features:\n", + " if i in numerical_features:\n", + " numerical_features.remove(i)\n", + "\n", + "for i in corr_features:\n", + " if i in categorical_features:\n", + " categorical_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['LYM2',\n", + " 'NEU1',\n", + " 'NEU2',\n", + " 'BMI',\n", + " 'N2L2',\n", + " 'AIVolumeP',\n", + " 'cTnICKMBOrdinal2',\n", + " 'HBDH']" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corr_features" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "X_train.drop(labels=corr_features, axis=1, inplace=True)\n", + "X_test.drop(labels=corr_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 46), (9, 46))" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.3 Statistical Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.1 Mutual Information" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import mutual_info_classif, mutual_info_regression\n", + "from sklearn.feature_selection import SelectKBest, SelectPercentile" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "mi = mutual_info_classif(X_train, y_train)\n", + "mi = pd.Series(mi)\n", + "mi.index = X_train.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Features on the left side have more mutual information with y" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mi.sort_values(ascending=False).plot.bar(figsize=(20, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "sel_ = SelectKBest(mutual_info_classif, k = 40).fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "mi_features = list(X_train.columns[ ~ sel_.get_support()].values)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "for i in mi_features:\n", + " if i in categorical_features:\n", + " mi_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "for i in mi_features:\n", + " if i in numerical_features:\n", + " numerical_features.remove(i)\n", + "\n", + "for i in mi_features:\n", + " if i in categorical_features:\n", + " categorical_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Height', 'CK', 'HiCKMB', 'Cr', 'PCT1']" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mi_features" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "X_train.drop(labels=mi_features, axis=1, inplace=True)\n", + "X_test.drop(labels=mi_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 41), (9, 41))" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.2 Fisher Score" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import chi2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "categorical features" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "f_score = chi2(X_train[categorical_features], y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The smaller ones have more correlations" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Cancer 0.887949\n", + "SoreThroat 0.842057\n", + "Cough 0.703238\n", + "Headache 0.638344\n", + "Hemoptysis 0.594525\n", + "NauseaNVomit 0.356552\n", + "ChestPain 0.356552\n", + "Diarrhea 0.333947\n", + "Sex 0.302537\n", + "Fever 0.202574\n", + "Catarrh 0.159040\n", + "Hypertention 0.154388\n", + "SoreMuscle 0.105717\n", + "Hyperlipedia 0.099153\n", + "Lung 0.062605\n", + "PoorAppetite 0.060289\n", + "Phlegm 0.046410\n", + "AgeG1 0.037459\n", + "DM 0.008457\n", + "Fatigue 0.000049\n", + "dtype: float64" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_values = pd.Series(f_score[1])\n", + "p_values.index = X_train[categorical_features].columns\n", + "p_values.sort_values(ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['AgeG1', 'Phlegm', 'Fatigue', 'DM'], dtype=object)" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_values[p_values<0.05].index.values" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "# for c in categorical_features:\n", + "# if c not in p_values[p_values<0.05].index.values:\n", + "# categorical_features.remove(c)\n", + "# print(c)\n", + "# X_train.drop(labels=c, axis=1, inplace=True)\n", + "# X_test.drop(labels=c, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 41), (9, 41))" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.3 Univariate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Non-categorical features" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import f_classif, f_regression" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "univariate = f_classif(X_train[numerical_features], y_train)\n", + "univariate = pd.Series(univariate[1])\n", + "univariate.index = X_train[numerical_features].columns\n", + "univariate.sort_values(ascending=False, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "univariate.sort_values(ascending=False).plot.bar(figsize=(20, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Temp 0.437049\n", + "WBC1 0.430778\n", + "AST 0.376614\n", + "CKMB 0.351257\n", + "WBC2 0.207957\n", + "Weight 0.191531\n", + "dtype: float64" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "univariate[univariate > 0.05]" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weight\n", + "AST\n", + "CKMB\n", + "WBC1\n", + "WBC2\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "for n in numerical_features:\n", + " if n in univariate[univariate > 0.05].index.values:\n", + " numerical_features.remove(n)\n", + " print(n)\n", + " X_train.drop(labels=n, axis=1, inplace=True)\n", + " X_test.drop(labels=n, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(77, 36)" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.4 ROC-AUC" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor\n", + "from sklearn.metrics import roc_auc_score, mean_squared_error" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "# loop to build a tree, make predictions and get the roc-auc\n", + "# for each feature of the train set\n", + "\n", + "roc_values = []\n", + "for feature in X_train.columns:\n", + " clf = DecisionTreeClassifier()\n", + " clf.fit(X_train[feature].fillna(0).to_frame(), y_train)\n", + " y_scored = clf.predict_proba(X_test[feature].fillna(0).to_frame())\n", + " roc_values.append(roc_auc_score(y_test, y_scored[:, 1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "cTnITimes 0.775\n", + "Fever 0.675\n", + "CRP2 0.675\n", + "SoreThroat 0.650\n", + "NTproBNP 0.650\n", + "ALB2 0.625\n", + "Headache 0.625\n", + "LYM1 0.625\n", + "N2L1 0.625\n", + "CTScore 0.600\n", + "AgeG1 0.550\n", + "ChestPain 0.500\n", + "Diarrhea 0.500\n", + "Hemoptysis 0.500\n", + "Phlegm 0.500\n", + "Age 0.500\n", + "NauseaNVomit 0.500\n", + "Lung 0.500\n", + "PoorAppetite 0.500\n", + "SoreMuscle 0.500\n", + "CRP1 0.500\n", + "cTnICKMBOrdinal1 0.500\n", + "cTnI 0.500\n", + "CAD 0.500\n", + "Fatigue 0.500\n", + "LDH 0.500\n", + "Sex 0.450\n", + "ALB1 0.450\n", + "Hypertention 0.425\n", + "DM 0.400\n", + "Hyperlipedia 0.400\n", + "Cancer 0.400\n", + "Catarrh 0.375\n", + "Sympton 0.375\n", + "Cough 0.325\n", + "Temp 0.175\n", + "dtype: float64" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# let's add the variable names and order it for clearer visualisation\n", + "roc_values = pd.Series(roc_values)\n", + "roc_values.index = X_train.columns\n", + "roc_values.sort_values(ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# and now let's plot\n", + "roc_values.sort_values(ascending=False).plot.bar(figsize=(20, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# a roc auc value of 0.5 indicates random decision\n", + "# let's check how many features show a roc-auc value\n", + "# higher than random\n", + "\n", + "len(roc_values[roc_values > 0.5])" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Sex 0.450\n", + "Temp 0.175\n", + "LDH 0.500\n", + "ALB1 0.450\n", + "Sympton 0.375\n", + "Cough 0.325\n", + "Catarrh 0.375\n", + "Hypertention 0.425\n", + "Hyperlipedia 0.400\n", + "DM 0.400\n", + "Cancer 0.400\n", + "dtype: float64" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roc_values[roc_values < 0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "roc_features = roc_values[roc_values < 0.5].index.values" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "for i in roc_features:\n", + " if i in numerical_features:\n", + " numerical_features.remove(i)\n", + "\n", + "for i in roc_features:\n", + " if i in categorical_features:\n", + " categorical_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Sex', 'Temp', 'LDH', 'ALB1', 'Sympton', 'Cough', 'Catarrh',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Cancer'], dtype=object)" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roc_features" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [], + "source": [ + "# X_train.drop(labels=roc_features, axis=1, inplace=True)\n", + "# X_test.drop(labels=roc_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 36), (9, 36))" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Temp', 'CTScore', 'cTnITimes', 'cTnI',\n", + " 'cTnICKMBOrdinal1', 'LDH', 'NTproBNP', 'LYM1', 'N2L1', 'CRP1', 'ALB1',\n", + " 'CRP2', 'ALB2', 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis',\n", + " 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue',\n", + " 'SoreMuscle', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "import sklearn.ensemble\n", + "import sklearn.metrics\n", + "import xgboost as xgb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Cross Validation**" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import cross_val_score" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "def cv_score(classifier, X, y, scoring):\n", + " return cross_val_score(classifier, X, y, cv=5, scoring=scoring)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Decision Tree**" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dt = sklearn.tree.DecisionTreeClassifier()\n", + "\n", + "dt_f1 = cv_score(dt, X_train, y_train, 'f1')\n", + "\n", + "dt.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5642857142857143\n" + ] + } + ], + "source": [ + "print(np.mean(dt_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Random Forest**" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestClassifier()" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rf = sklearn.ensemble.RandomForestClassifier(n_estimators=100)\n", + "\n", + "rf_f1 = cv_score(rf, X_train, y_train, 'f1')\n", + "\n", + "rf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.66\n" + ] + } + ], + "source": [ + "print(np.mean(rf_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**SVM**" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.svm import SVC" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "SVC(probability=True)" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svc = SVC(probability=True)\n", + "\n", + "svc_f1 = cv_score(svc, X_train, y_train, 'f1')\n", + "\n", + "svc.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6733333333333333\n" + ] + } + ], + "source": [ + "print(np.mean(svc_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**XGBoost**" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[21:07:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[21:07:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "[21:07:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[21:07:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "[21:07:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "[21:07:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n" + ] + }, + { + "data": { + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n", + " colsample_bynode=1, colsample_bytree=0.7, gamma=0, gpu_id=-1,\n", + " importance_type='gain', interaction_constraints='',\n", + " learning_rate=0.300000012, max_delta_step=0, max_depth=4,\n", + " min_child_weight=0, missing=nan, monotone_constraints='()',\n", + " n_estimators=100, n_jobs=8, num_parallel_tree=1, random_state=0,\n", + " reg_alpha=4, reg_lambda=1, scale_pos_weight=9, subsample=0.8,\n", + " tree_method='exact', validate_parameters=1, verbosity=None)" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a model\n", + "# Params from: https://www.kaggle.com/aharless/swetha-s-xgboost-revised\n", + "xgbc = xgb.XGBClassifier(\n", + " max_depth = 4,\n", + " subsample = 0.8,\n", + " colsample_bytree = 0.7,\n", + " colsample_bylevel = 0.7,\n", + " scale_pos_weight = 9,\n", + " min_child_weight = 0,\n", + " reg_alpha = 4,\n", + " objective = 'binary:logistic'\n", + ")\n", + "\n", + "xgbc_f1 = cv_score(xgbc, X_train, y_train, 'f1')\n", + "\n", + "# Fit the models\n", + "xgbc.fit(np.array(X_train), np.array(y_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6714285714285715\n" + ] + } + ], + "source": [ + "print(np.mean(xgbc_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Save Models" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"2-type-model-4-ct.pkl\", 'wb') as f:\n", + " pickle.dump([dt, rf, svc, xgbc], f)\n", + "with open(\"dataset/2-type-dataset-ct.pkl\", 'wb') as f:\n", + " pickle.dump([X_train, X_test, y_train, y_test], f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Models" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"2-type-model-4-ct.pkl\", 'rb') as f:\n", + " [dt, rf, svc, xgbc] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"dataset/2-type-dataset-ct.pkl\", 'rb') as f:\n", + " [X_train, X_test, y_train, y_test] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Prediction**" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "dt_pred = dt.predict(X_test)\n", + "rf_pred = rf.predict(X_test)\n", + "svc_pred = svc.predict(X_test)\n", + "xgbc_pred = xgbc.predict(np.array(X_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision Tree\n", + "Precision: 0.7777777777777778\n", + "Recal: 0.75\n", + "F1: 0.75\n", + "CI: 0.27161661029914536\n", + "\n", + "Random Forest\n", + "Precision: 0.6666666666666666\n", + "Recal: 0.5\n", + "F1: 0.5714285714285715\n", + "CI: 0.3079842869168074\n", + "\n", + "SVC\n", + "Precision: 0.6666666666666666\n", + "Recal: 0.25\n", + "F1: 0.4\n", + "CI: 0.3079842869168074\n", + "\n", + "XGBoost\n", + "Precision: 0.7777777777777778\n", + "Recal: 1.0\n", + "F1: 0.8\n", + "CI: 0.27161661029914536\n" + ] + } + ], + "source": [ + "print(\"Decision Tree\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, dt_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, dt_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, dt_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, dt_pred)) * (sklearn.metrics.accuracy_score(y_test, dt_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"Random Forest\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, rf_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, rf_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, rf_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, rf_pred)) * (sklearn.metrics.accuracy_score(y_test, rf_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"SVC\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, svc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, svc_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, svc_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, svc_pred)) * (sklearn.metrics.accuracy_score(y_test, svc_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"XGBoost\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, xgbc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, xgbc_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, xgbc_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, xgbc_pred)) * (sklearn.metrics.accuracy_score(y_test, xgbc_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7 Interpreatation" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [], + "source": [ + "class_names = ['normal', 'severe']" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[27]" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Patient No. 21 --> 27 after shuffuling\n", + "[i for i, x in enumerate(X_train['LDH']==254) if x]" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[59]" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Patient No. 36 --> 59 after shuffuling\n", + "[i for i, x in enumerate(X_train['NTproBNP']==384) if x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Patient No. 21 (27) & 36 (59)**" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [], + "source": [ + "from lime import lime_tabular\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Temp', 'CTScore', 'cTnITimes', 'cTnI',\n", + " 'cTnICKMBOrdinal1', 'LDH', 'NTproBNP', 'LYM1', 'N2L1', 'CRP1', 'ALB1',\n", + " 'CRP2', 'ALB2', 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis',\n", + " 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue',\n", + " 'SoreMuscle', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "categorical_features = [0, 2, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]\n", + "categorical_names = {}\n", + "for c in categorical_features:\n", + " categorical_names[c] = [\"False\", \"True\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Decision Tree**" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.0\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "class_names = ['normal', 'severe']\n", + "\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', dt.predict_proba(np.array(X_train)[idx, :].reshape(1, -1))[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = class_names, \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = dt.predict_proba, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Random Forest**" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.26\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "class_names = ['normal', 'severe']\n", + "\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', rf.predict_proba(np.array(X_train)[idx, :].reshape(1, -1))[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = class_names, \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = rf.predict_proba, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**SVM**" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.8825628851481154\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "class_names = ['normal', 'severe']\n", + "\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', svc.predict_proba(np.array(X_train)[idx, :].reshape(1, -1))[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = class_names, \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = svc.predict_proba, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Gradient Boosted Trees**" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [], + "source": [ + "def predict_fn_xbg(X):\n", + " X_data = pd.DataFrame(data=X, columns=xgbc.get_booster().feature_names)\n", + " return xgbc.predict_proba(X_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.047768414\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', xgbc.predict_proba(X_train[idx:idx+1])[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = ['normal', 'severe'], \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = predict_fn_xbg, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/2_type_without_ct_score.ipynb b/2_type_without_ct_score.ipynb new file mode 100644 index 0000000..92b659f --- /dev/null +++ b/2_type_without_ct_score.ipynb @@ -0,0 +1,2712 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interpretable ML - COVID19\n", + "> Interpretable ML Research for COVID19\n", + "- toc:true\n", + "- branch: master\n", + "- badges: true\n", + "- comments: true\n", + "- author: Han Wu\n", + "- categories: [jupyter]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 0. Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": {}, + "outputs": [], + "source": [ + "np.set_printoptions(suppress=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 213, + "metadata": {}, + "outputs": [], + "source": [ + "covid = pd.read_csv(\"dataset/covid.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AVG age for severity 0: 36.833333333333336\n", + "AVG age for severity 1: 47.45283018867924\n", + "AVG age for severity 2: 54.3125\n", + "AVG age for severity 3: 69.4\n" + ] + } + ], + "source": [ + "print(\"AVG age for severity 0:\", np.mean(covid[covid.Severity03 == 0].Age.to_numpy()))\n", + "print(\"AVG age for severity 1:\", np.mean(covid[covid.Severity03 == 1].Age.to_numpy()))\n", + "print(\"AVG age for severity 2:\", np.mean(covid[covid.Severity03 == 2].Age.to_numpy()))\n", + "print(\"AVG age for severity 3:\", np.mean(covid[covid.Severity03 == 3].Age.to_numpy()))" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(92, 74)" + ] + }, + "execution_count": 215, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "covid.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Data Wash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that has NULL value" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "remove_columns = ['MedNum', 'LVEF', 'SO2', 'PO2', 'YHZS', 'RML', 'RUL', 'RLL', 'LUL', 'LLL']" + ] + }, + { + "cell_type": "code", + "execution_count": 217, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that records time rather than biomarkers" + ] + }, + { + "cell_type": "code", + "execution_count": 218, + "metadata": {}, + "outputs": [], + "source": [ + "remove_columns = ['Onset2Admi', 'Onset2CT1', 'Onset2CTPositive1', 'Onset2CTPeak']" + ] + }, + { + "cell_type": "code", + "execution_count": 219, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Patients that have no records" + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.Weight != \" \"]" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.cTnI != \" \"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "String to Float" + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [], + "source": [ + "covid['Weight'] = covid['Weight'].astype(np.float64)\n", + "covid['Height'] = covid['Height'].astype(np.float64)\n", + "covid['cTnITimes'] = covid['cTnITimes'].astype(np.float64)\n", + "covid['cTnI'] = covid['cTnI'].astype(np.float64)\n", + "covid['NTproBNP'] = covid['NTproBNP'].astype(np.float64)\n", + "covid['Cr'] = covid['Cr'].astype(np.float64)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Train Test Split" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import preprocessing\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 224, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 3\n", + "2 1\n", + "3 1\n", + "5 2\n", + "7 0\n", + " ..\n", + "87 2\n", + "88 1\n", + "89 2\n", + "90 1\n", + "91 0\n", + "Name: Severity03, Length: 86, dtype: int64" + ] + }, + "execution_count": 224, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "covid.Severity03" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "y = covid.Severity01.to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Use Both\n", + "# covid = covid.drop([\"Severity01\", \"Severity03\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Use None\n", + "covid = covid.drop([\"Severity01\", \"Severity03\", \"CTScore\", \"AIVolumeP\"], axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Patient No. is irrrelevant" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop([\"No\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "X = covid\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.9, random_state = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 55), (9, 55))" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Height', 'Weight', 'BMI', 'Temp', 'cTnITimes',\n", + " 'cTnI', 'cTnICKMBOrdinal1', 'cTnICKMBOrdinal2', 'AST', 'LDH', 'CK',\n", + " 'CKMB', 'HBDH', 'HiCKMB', 'NTproBNP', 'Cr', 'PCT1', 'WBC1', 'NEU1',\n", + " 'LYM1', 'N2L1', 'CRP1', 'ALB1', 'PCT2', 'WBC2', 'NEU2', 'LYM2', 'N2L2',\n", + " 'CRP2', 'ALB2', 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis',\n", + " 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue',\n", + " 'SoreMuscle', 'Stomachache', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Arrythmia',\n", + " 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 0, 0, 1, 1, 0, 1, 0], dtype=int64)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Feature Selection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Basic Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.1.1 Drop constant and Quasi-constant features" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import VarianceThreshold" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def drop_features(X_train, X_test, threshhold):\n", + " sel = VarianceThreshold(threshold=threshhold)\n", + " sel.fit(X_train)\n", + " print(\"No. of constant features:\",\n", + " len([\n", + " x for x in X_train.columns\n", + " if x not in X_train.columns[sel.get_support()]\n", + " ])\n", + " )\n", + " constant_features = [x for x in X_train.columns if x not in X_train.columns[sel.get_support()]]\n", + "\n", + " print(constant_features)\n", + " X_train.drop(labels=constant_features, axis=1, inplace=True)\n", + " X_test.drop(labels=constant_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Drop constant and quasi-constant features" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No. of constant features: 2\n", + "['PCT2', 'Stomachache']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "drop_features(X_train, X_test, 0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 53), (9, 53))" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.1.2 Drop Duplicated Features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Maybe some symptoms are correlated" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No. of Duplicated Features: 1\n", + "['Arrythmia']\n" + ] + } + ], + "source": [ + "covid_t = covid.T\n", + "print(\"No. of Duplicated Features:\", covid_t.duplicated().sum())\n", + "print(covid_t[covid_t.duplicated()].index.values)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print out duplicated features" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CAD\n", + "Arrythmia\n" + ] + } + ], + "source": [ + "duplicated_feat = []\n", + "for i in range(0, len(X_train.columns)):\n", + " col_1 = X_train.columns[i]\n", + " for col_2 in X_train.columns[i + 1 : ]:\n", + " if X_train[col_1].equals(X_train[col_2]):\n", + " print(col_1)\n", + " print(col_2) \n", + " duplicated_feat.append(col_2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Drop duplicated features" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# covid_unique = covid_t.drop_duplicates(keep='first').T" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "X_train.drop(labels=covid_t[covid_t.duplicated()].index.values, axis=1, inplace=True)\n", + "X_test.drop(labels=covid_t[covid_t.duplicated()].index.values, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 52), (9, 52))" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Correlations" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "categorical_features = ['Sex', 'AgeG1', \n", + " 'Fever', 'Cough', 'Phlegm', 'Hemoptysis', 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue', 'SoreMuscle', # 'Stomachache', \n", + " 'Diarrhea', 'PoorAppetite', 'NauseaNVomit', \n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', #'CAD', 'Arrythmia', \n", + " 'Cancer']" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "numerical_features = ['Age', 'Height', 'Weight', 'BMI', 'Temp', 'cTnITimes', 'cTnI', 'cTnICKMBOrdinal1', 'cTnICKMBOrdinal2', 'AST',\n", + " 'LDH', 'CK', 'CKMB', 'HBDH', 'HiCKMB', 'NTproBNP', 'Cr', 'PCT1', 'WBC1',\n", + " 'NEU1', 'LYM1', 'N2L1', 'CRP1', 'ALB1', 'WBC2', 'NEU2', 'LYM2', 'N2L2',\n", + " 'CRP2', 'ALB2']" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']\n", + "# numerical_vars = list(covid.select_dtypes(include=numerics).columns)\n", + "# data = covid[numerical_vars]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "corrmat = X_train.corr()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "fig.set_size_inches(11, 11)\n", + "sns.heatmap(corrmat)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature1feature2corr
0LDHHBDH0.958191
1HBDHLDH0.958191
2HeightPoorAppetite0.911704
3PoorAppetiteHeight0.911704
4WBC2NEU20.911419
5NEU2WBC20.911419
6WBC1NEU10.903520
7NEU1WBC10.903520
8AgeG1Age0.893413
9AgeAgeG10.893413
10cTnICKMBOrdinal2cTnICKMBOrdinal10.853741
11cTnICKMBOrdinal1cTnICKMBOrdinal20.853741
12LYM1LYM20.842688
13LYM2LYM10.842688
14WeightBMI0.842409
15BMIWeight0.842409
16N2L2NTproBNP0.808767
17NTproBNPN2L20.808767
\n", + "
" + ], + "text/plain": [ + " feature1 feature2 corr\n", + "0 LDH HBDH 0.958191\n", + "1 HBDH LDH 0.958191\n", + "2 Height PoorAppetite 0.911704\n", + "3 PoorAppetite Height 0.911704\n", + "4 WBC2 NEU2 0.911419\n", + "5 NEU2 WBC2 0.911419\n", + "6 WBC1 NEU1 0.903520\n", + "7 NEU1 WBC1 0.903520\n", + "8 AgeG1 Age 0.893413\n", + "9 Age AgeG1 0.893413\n", + "10 cTnICKMBOrdinal2 cTnICKMBOrdinal1 0.853741\n", + "11 cTnICKMBOrdinal1 cTnICKMBOrdinal2 0.853741\n", + "12 LYM1 LYM2 0.842688\n", + "13 LYM2 LYM1 0.842688\n", + "14 Weight BMI 0.842409\n", + "15 BMI Weight 0.842409\n", + "16 N2L2 NTproBNP 0.808767\n", + "17 NTproBNP N2L2 0.808767" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corrmat = X_train.corr()\n", + "corrmat = corrmat.abs().unstack()\n", + "corrmat = corrmat.sort_values(ascending=False)\n", + "corrmat = corrmat[corrmat >= 0.8]\n", + "corrmat = corrmat[corrmat < 1]\n", + "corrmat = pd.DataFrame(corrmat).reset_index()\n", + "corrmat.columns = ['feature1', 'feature2', 'corr']\n", + "corrmat" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "found 9 correlated groups\n", + "out of 52 total features\n" + ] + } + ], + "source": [ + "# find groups of correlated features\n", + "\n", + "grouped_feature_ls = []\n", + "correlated_groups = []\n", + "\n", + "for feature in corrmat.feature1.unique():\n", + " if feature not in grouped_feature_ls:\n", + "\n", + " # find all features correlated to a single feature\n", + " correlated_block = corrmat[corrmat.feature1 == feature]\n", + " grouped_feature_ls = grouped_feature_ls + list(\n", + " correlated_block.feature2.unique()) + [feature]\n", + "\n", + " # append the block of features to the list\n", + " correlated_groups.append(correlated_block)\n", + "\n", + "print('found {} correlated groups'.format(len(correlated_groups)))\n", + "print('out of {} total features'.format(X_train.shape[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " feature1 feature2 corr\n", + "0 LDH HBDH 0.958191\n", + "\n", + " feature1 feature2 corr\n", + "2 Height PoorAppetite 0.911704\n", + "\n", + " feature1 feature2 corr\n", + "4 WBC2 NEU2 0.911419\n", + "\n", + " feature1 feature2 corr\n", + "6 WBC1 NEU1 0.90352\n", + "\n", + " feature1 feature2 corr\n", + "8 AgeG1 Age 0.893413\n", + "\n", + " feature1 feature2 corr\n", + "10 cTnICKMBOrdinal2 cTnICKMBOrdinal1 0.853741\n", + "\n", + " feature1 feature2 corr\n", + "12 LYM1 LYM2 0.842688\n", + "\n", + " feature1 feature2 corr\n", + "14 Weight BMI 0.842409\n", + "\n", + " feature1 feature2 corr\n", + "16 N2L2 NTproBNP 0.808767\n", + "\n" + ] + } + ], + "source": [ + "# now we can visualise each group. We see that some groups contain\n", + "# only 2 correlated features, some other groups present several features \n", + "# that are correlated among themselves.\n", + "\n", + "for group in correlated_groups:\n", + " print(group)\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "def correlation(dataset, threshold):\n", + " col_corr = set()\n", + " corr_matrix = dataset.corr()\n", + " for i in range(len(corr_matrix.columns)):\n", + " for j in range(i):\n", + " if abs(corr_matrix.iloc[i, j] >= threshold):\n", + " colname = corr_matrix.columns[i]\n", + " col_corr.add(colname)\n", + " return col_corr" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['BMI', 'cTnICKMBOrdinal2', 'NEU2', 'N2L2', 'NEU1', 'AgeG1', 'LYM2', 'HBDH']\n" + ] + } + ], + "source": [ + "corr_features = list((correlation(X_train, 0.8)))\n", + "print(corr_features)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "for i in corr_features:\n", + " if i in categorical_features:\n", + " corr_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "for i in corr_features:\n", + " if i in numerical_features:\n", + " numerical_features.remove(i)\n", + "\n", + "for i in corr_features:\n", + " if i in categorical_features:\n", + " categorical_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['BMI', 'cTnICKMBOrdinal2', 'NEU2', 'N2L2', 'NEU1', 'LYM2', 'HBDH']" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corr_features" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "X_train.drop(labels=corr_features, axis=1, inplace=True)\n", + "X_test.drop(labels=corr_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 45), (9, 45))" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.3 Statistical Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.1 Mutual Information" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import mutual_info_classif, mutual_info_regression\n", + "from sklearn.feature_selection import SelectKBest, SelectPercentile" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "mi = mutual_info_classif(X_train, y_train)\n", + "mi = pd.Series(mi)\n", + "mi.index = X_train.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Features on the left side have more mutual information with y" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAAIkCAYAAACEKUvhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABkoElEQVR4nO3dd5gkVbnH8d8PliQ5mUhLMqBIWoKIigFEkXBRBBQjigkFUa9ruKBgwHQFEb2ggAgSBXElCChBBdFd4rIguiyrgAEEFEQFFt77xzm9W9PbMzuzfap7eur7eZ55drp6+pzTWzPVVW+95z2OCAEAAAAAAKCZluj3AAAAAAAAANA/BIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBJvV7AO3WWGONmDx5cr+HAQAAAAAAMGFcd911f4uINTs9N+6CQ5MnT9aMGTP6PQwAAAAAAIAJw/YfhnuOaWUAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEm9XsAYzF56oVj+vm5R+1a00gAAAAAAAAmBjKHAAAAAAAAGmxUwSHbu9i+3fZs21M7PH+o7Vtt32z7Z7bXqzz3hO0b89e0koMHAAAAAABAdxY5rcz2kpKOk7STpLslTbc9LSJurfzYDZKmRMS/bL9X0pck7ZOf+3dEbF522AAAAAAAAChhNJlD20iaHRFzIuIxSWdK2qP6AxFxRUT8Kz+8VtLaZYcJAAAAAACAOowmOLSWpLsqj+/O24ZzgKSLK4+XtT3D9rW29+z0AtsH5p+Zcd99941iSAAAAAAAACih6GpltveXNEXSSyub14uIe2xvIOly2zMj4o7q6yLiBEknSNKUKVOi5JgAAAAAAAAwvNFkDt0jaZ3K47XztiFsv1LSJyXtHhGPtrZHxD353zmSrpS0RRfjBQAAAAAAQEGjCQ5Nl7Sx7fVtLy1pX0lDVh2zvYWk45UCQ/dWtq9qe5n8/RqSXiSpWsgaAAAAAAAAfbTIaWURMc/2QZIukbSkpJMiYpbtIyTNiIhpkr4saQVJ59iWpD9GxO6SnivpeNtPKgWijmpb5QwAAAAAAAB9NKqaQxFxkaSL2rYdVvn+lcO87hpJm3YzQAAAAAAAANRnNNPKAAAAAAAAMEERHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgk/o9gPFk8tQLx/yauUftWsNIAAAAAAAAeoPMIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGG1VwyPYutm+3Pdv21A7PH2r7Vts32/6Z7fUqz73V9u/z11tLDh4AAAAAAADdWWRwyPaSko6T9GpJm0jaz/YmbT92g6QpEfECST+Q9KX82tUkHS5pW0nbSDrc9qrlhg8AAAAAAIBujCZzaBtJsyNiTkQ8JulMSXtUfyAiroiIf+WH10paO3//KkmXRcQDEfGgpMsk7VJm6AAAAAAAAOjWaIJDa0m6q/L47rxtOAdIungsr7V9oO0Ztmfcd999oxgSAAAAAAAASihakNr2/pKmSPryWF4XESdExJSImLLmmmuWHBIAAAAAAABGMJrg0D2S1qk8XjtvG8L2KyV9UtLuEfHoWF4LAAAAAACA/hhNcGi6pI1tr297aUn7SppW/QHbW0g6XikwdG/lqUsk7Wx71VyIeue8DQAAAAAAAOPApEX9QETMs32QUlBnSUknRcQs20dImhER05Smka0g6RzbkvTHiNg9Ih6wfaRSgEmSjoiIB2p5JwAAAAAAABizRQaHJCkiLpJ0Udu2wyrfv3KE154k6aTFHSAAAAAAAADqU7QgNQAAAAAAAAYLwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADTYqIJDtnexfbvt2bandnj+Jbavtz3P9uvbnnvC9o35a1qpgQMAAAAAAKB7kxb1A7aXlHScpJ0k3S1puu1pEXFr5cf+KOltkj7SoYl/R8Tm3Q8VAAAAAAAApS0yOCRpG0mzI2KOJNk+U9IekuYHhyJibn7uyRrGCAAAAAAAgJqMZlrZWpLuqjy+O28brWVtz7B9re09O/2A7QPzz8y47777xtA0AAAAAAAAutGLgtTrRcQUSW+UdLTtDdt/ICJOiIgpETFlzTXX7MGQAAAAAAAAII0uOHSPpHUqj9fO20YlIu7J/86RdKWkLcYwPgAAAAAAANRoNMGh6ZI2tr2+7aUl7StpVKuO2V7V9jL5+zUkvUiVWkUAAAAAAADor0UGhyJinqSDJF0i6TZJZ0fELNtH2N5dkmxvbftuSXtLOt72rPzy50qaYfsmSVdIOqptlTMAAAAAAAD00WhWK1NEXCTporZth1W+n6403az9dddI2rTLMQIAAAAAAKAmvShIDQAAAAAAgHGK4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADTaqgtQoZ/LUC8f8mrlH7VrDSAAAAAAAAMgcAgAAAAAAaDSCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABpsUr8HgPImT71wTD8/96hdaxoJAAAAAAAY78gcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwSb1ewAYTJOnXjimn5971K41jQQAAAAAAHSDzCEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwSb1ewDAcCZPvXBMPz/3qF1rGgkAAAAAABMXmUMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAg40qOGR7F9u3255te2qH519i+3rb82y/vu25t9r+ff56a6mBAwAAAAAAoHuTFvUDtpeUdJyknSTdLWm67WkRcWvlx/4o6W2SPtL22tUkHS5piqSQdF1+7YNlhg8svslTLxzza+YetWsNIwEAAAAAoH9Gkzm0jaTZETEnIh6TdKakPao/EBFzI+JmSU+2vfZVki6LiAdyQOgySbsUGDcAAAAAAAAKGE1waC1Jd1Ue3523jUY3rwUAAAAAAEDNxkVBatsH2p5he8Z9993X7+EAAAAAAAA0xmiCQ/dIWqfyeO28bTRG9dqIOCEipkTElDXXXHOUTQMAAAAAAKBbowkOTZe0se31bS8taV9J00bZ/iWSdra9qu1VJe2ctwEAAAAAAGAcWGRwKCLmSTpIKahzm6SzI2KW7SNs7y5Jtre2fbekvSUdb3tWfu0Dko5UCjBNl3RE3gYAAAAAAIBxYJFL2UtSRFwk6aK2bYdVvp+uNGWs02tPknRSF2MEAAAAAABATcZFQWoAAAAAAAD0B8EhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGm9TvAQAT2eSpF475NXOP2rWGkQAAAAAA0BmZQwAAAAAAAA1GcAgAAAAAAKDBmFYGDLixTl1j2hoAAAAAoIrMIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDTer3AACMf5OnXjimn5971K41jQQAAAAAUBqZQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEm9XsAACBJk6deOKafn3vUrjWNBAAAAACahcwhAAAAAACABiM4BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADcZS9gAaYfLUC8f8mrlH7VrDSAAAAABgfCFzCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANNikfg8AACaKyVMvHPNr5h61aw0jAQAAAIDRIzgEAANkrAEogk8AAAAAFoVpZQAAAAAAAA1GcAgAAAAAAKDBmFYGABiCqWsAAABAs5A5BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADcZqZQCAnmNFNAAAAGD8IDgEAJhwxhp8kghAAQAAoLmYVgYAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBRhUcsr2L7dttz7Y9tcPzy9g+Kz//a9uT8/bJtv9t+8b89X+Fxw8AAAAAAIAuTFrUD9heUtJxknaSdLek6banRcStlR87QNKDEbGR7X0lfVHSPvm5OyJi87LDBgAAAAAAQAmLDA5J2kbS7IiYI0m2z5S0h6RqcGgPSZ/O3/9A0jdsu+A4AQAYVyZPvXDMr5l71K41jAQAAADozmimla0l6a7K47vzto4/ExHzJP1D0ur5ufVt32D7Ktsv7nK8AAAAAAAAKGg0mUPd+LOkdSPifttbSTrf9vMi4qHqD9k+UNKBkrTuuuvWPCQAAAAAAAC0jCZz6B5J61Qer523dfwZ25MkrSzp/oh4NCLul6SIuE7SHZKe1d5BRJwQEVMiYsqaa6459ncBAAAAAACAxTKa4NB0SRvbXt/20pL2lTSt7WemSXpr/v71ki6PiLC9Zi5oLdsbSNpY0pwyQwcAAAAAAEC3FjmtLCLm2T5I0iWSlpR0UkTMsn2EpBkRMU3SiZJOtT1b0gNKASRJeomkI2w/LulJSe+JiAfqeCMAAAAAAAAYu1HVHIqIiyRd1LbtsMr3/5G0d4fXnSvp3C7HCABAI411RTRWQwMAAMDiGM20MgAAAAAAAExQBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA02qtXKAADAxMSKaAAAACBzCAAAAAAAoMEIDgEAAAAAADQY08oAAECtmLoGAAAwvpE5BAAAAAAA0GAEhwAAAAAAABqM4BAAAAAAAECDUXMIAAAMtLHWNJKoawQAAFBF5hAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMEoSA0AALAIFL0GAAATGZlDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYKxWBgAAMA6MdUU0VkMDAAClkDkEAAAAAADQYGQOAQAANATZSQAAoBMyhwAAAAAAABqM4BAAAAAAAECDERwCAAAAAABoMIJDAAAAAAAADUZwCAAAAAAAoMFYrQwAAADFsCIaAACDh8whAAAAAACABiNzCAAAAANjrJlJEtlJAAAsCplDAAAAAAAADUZwCAAAAAAAoMEIDgEAAAAAADQYwSEAAAAAAIAGIzgEAAAAAADQYKxWBgAAAFSwIhoAoGnIHAIAAAAAAGgwgkMAAAAAAAANxrQyAAAAoMfGOnWNaWsAgDqROQQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaDCCQwAAAAAAAA1GcAgAAAAAAKDBCA4BAAAAAAA0GMEhAAAAAACABiM4BAAAAAAA0GCT+j0AAAAAAOVNnnrhmH5+7lG71jQSAMB4R+YQAAAAAABAg5E5BAAAAGCxkJ0EABMDmUMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAajOAQAAAAAABAgxEcAgAAAAAAaLBJ/R4AAAAAAHQyeeqFY37N3KN2rWEkADCxkTkEAAAAAADQYASHAAAAAAAAGozgEAAAAAAAQIMRHAIAAAAAAGgwgkMAAAAAAAANRnAIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAab1O8BAAAAAEC/TJ564ZhfM/eoXWsYCQD0z6gyh2zvYvt227NtT+3w/DK2z8rP/9r25MpzH8/bb7f9qoJjBwAAAAAAQJcWGRyyvaSk4yS9WtImkvazvUnbjx0g6cGI2EjS1yR9Mb92E0n7SnqepF0kfTO3BwAAAAAAgHFgNJlD20iaHRFzIuIxSWdK2qPtZ/aQdEr+/geSXmHbefuZEfFoRNwpaXZuDwAAAAAAAOPAaIJDa0m6q/L47ryt489ExDxJ/5C0+ihfCwAAAAAAgD5xRIz8A/brJe0SEe/Mj98saduIOKjyM7fkn7k7P75D0raSPi3p2og4LW8/UdLFEfGDtj4OlHRgfvhsSbeP8X2sIelvY3zNWNXdx0R4D/Qxftqnj/HVx0R4D/Qxftqnj/HVx0R4D/Qxftqnj/HVx0R4D/Qxftqnj/HVx0R4D4vTx3oRsWanJ0azWtk9ktapPF47b+v0M3fbniRpZUn3j/K1iogTJJ0wirF0ZHtGRExZ3NePhz4mwnugj/HTPn2Mrz4mwnugj/HTPn2Mrz4mwnugj/HTPn2Mrz4mwnugj/HTPn2Mrz4mwnso3cdoppVNl7Sx7fVtL61UYHpa289Mk/TW/P3rJV0eKSVpmqR982pm60vaWNJvSgwcAAAAAAAA3Vtk5lBEzLN9kKRLJC0p6aSImGX7CEkzImKapBMlnWp7tqQHlAJIyj93tqRbJc2T9P6IeKKm9wIAAAAAAIAxGs20MkXERZIuatt2WOX7/0jae5jXfk7S57oY42gs9pS0cdTHRHgP9DF+2qeP8dXHRHgP9DF+2qeP8dXHRHgP9DF+2qeP8dXHRHgP9DF+2qeP8dXHRHgPRftYZEFqAAAAAAAATFyjqTkEAAAAAACACYrgEAAAAAAAQIMRHAIAAADQFdvL2j7U9nm2z7X9IdvL9ntcAMY32yuP8FyRJdptr1uinfHAyTq1tD1oNYfyh8x7JG0kaaakEyNiXg39LBURj7dtWyMi/la6rzrZPljSyZIelvQdSVtImhoRl/Z1YF2y/ZyI+G2/xzEWtg+IiBMrj5eU9KmI+EzBPp4i6cOS1o2Id9neWNKzI+KCUn1U+4qIf5Vud4T+iu5z26tIeoukyaoU54+ID5bqo0OfO0XEZXW13ysl34ftZSS9TgvvhyNKtD/R2N5V0vMkzb/gKvF/ZfvQkZ6PiP/tto8Ofa4h6f4ofCJi+4sR8bFFbRsEtrfXwn8b3yvcxw6SNo6Ik22vKWmFiLizZB+VvpbI7T9UQ9u1vQ/bT5P0eUnPjIhX295E0gurn+kF+hj4Y2FeofhhSaflTW+UtEpEdFy0ZjH7eFFEXL2obeNdr/Z3Ptd8WlsffyzY9gcj4msl2ltEX7V89vVK3b+3eV/MiojnlGhvmD7Wk/RIRPzN9naSdpB0R0T8sEDb0yXtHBEPtm3fWelav+tAiO3rI2LLbtsZZV8/i4hXLGpbl33MjIhNS7XXMoiZQ6dImqIUGHq1pK+WbNz2y2zfLenPti+1PbnydJGAiu0lbb/b9pG2X9T23KdK9FHxjnwStrOkVSW9WdJRJRq2PdP2zR2+Ztq+uUQfI+hJcMv2xQWbe4Xti2w/w/bzJF0racWC7UspEPiopBfmx/dI+mzJDmxvb/tWSb/Njzez/c2SfQyj9D6/SOmkbKak6ypfdSp2IdGJ7V6siCCVfR8/krSHpHmSHql8FWX76x2+jrS9R5ft9uw4aPv/JO0j6QOSrLRK6HqFmv+KpP0lrS5pBaVjU/WrK7a3s31lzijYwvYtkm6R9Ffbu3TbfpudOmx7danG83nCebZn5a8f2N6xVPuVfk5V2i87SNo6fxW5g1rp43BJH5P08bxpKS24sC/Vx+m2V7K9vNI+v9X2Rwv3Uff7+K6kSyQ9Mz/+naRDCrYv9ehYWGX7sEX/1Jg8PyIOiIgr8te7lC7oSzp2lNvGzPY6ts+0/Qvbn7C9VOW580v0UVH7/rb9AUl/lXSZpAvzV7GbhRHxhKT9SrU3nJo/+4brc2bhJmv7vZXm74vb68qOsf0/ki6XdK3tz0o6WtIakj5o++gCXZwg6Yoc2G/1+UZJx0vatUD7UvrdqZVT9uRqktawvart1fLXZElrFe7uettbF25zdEvZjzObtKJktk+U9JvC7X9J0qsiYpbt10u6zPabI+JalfulOl7SU5TG/nXbV0VE667tXip7Md8a82sknZrfV6n38dpC7XRk++vDPSVplYL9DBdFtqTNS/UTEW+0vY9SMOIRSW+s4U7XhhGxj+39cp//Kri/W74m6VWSpuU+brL9khIN92qfZ8tW/u6KsT1tuKeULry7bX+1Edp/TbftV/qp9X1UrB0RpYMDnSwr6TmSzsmPXyfpTkmb2X5ZRByymO22joNWOvEutg862D4iXmD75oj4jO2vSioVwN5C6SR/V6Ug6RmSflYwq+cbkj4haWWlE8xXR8S1tp+T+/pJtx3Yfq+k90naoC0wt6KkUndnd1V6L0dI+ozSft9S0km2D4qIi0r0k01ROuepM8X7v5T2/fWSFBF/sl36psUmEfGQ7Tcp/b5OVfod+3LBPup+H2tExNm2P57bn2f7iYLtS707Fla9U+l3uZTrbW+Xz5lle1tJM0o0bPuFkraXtKaHZjquJGnJEn1IOknSuUo37w6QdJXt3SLifpUPRvRifx+slD1+f419XG37G5LOUiW4FRHXF+yjls8+23sN95Skp3fbfu6jF7+3LatKmmX7Nxq6L3Yv0PZ+kp6rdP36R0lPz9cYkyTd2G3jEfFt2/+RdLlTttA+SjOFXhYRc7ttP1trhOuMUjMH3q104+CZSp9zrWuwh5TOHUraVtKbbP9BaX9bUkTEC7ppdBCDQ/OneuUP59LtLx0Rs3L7P7B9m6TzbH9MUqkTtG1aOy4fUL9p+zylP7zSb+g625dKWl/Sx/PJ0pMlGo6IP5RoZwRvV5oi9WiH50reqZgu6Sp1/r9fpVQnTlO8DlY68XiupDfbvqHw1KzHbC+n/Ltqe0N1/v/rSkTc1fa3V+okuVf7XJJOtf0upbto8/uLiAe6bPfFShkY/2zbbknbdNm2JN0n6Q8a+vsa+fFTC7TfUvf7aLnG9qYRUfouXbsXSHpRvrsm29+S9AulrIzF7rt6HLT9aM3HxX/nf/9l+5mS7pf0jBINR8RNkm6SNNVpKtN+ko61/bGIGC5QOBaTWtOZbR/RuniMiN8W/Bw/XemC4QtKAYiWhwv8Xbd8VNKe+f+r5UbbM5TuApcMDt2idIHy54JttnssIsJ26zNj+Rr6WCpnYOwp6RsR8Xirv4Lqfh+P2F5dCz5bt5P0j8J91HIstD3cFD5LWq5kX5K2UnofrWlL6yplM8xU9xctSytlNU7S0GzGhyS9vot2q9aMiP/L33/A9v6Sfm57d5W7BmjpxWffXSr/e9pu8/xvNcgYkl5esI+6PvvOkvR9dd63pWpl1f57a3sjpamD/9P21ItV7vPjPxHxmNJ1xh2ta5d8Lf5YiQ4i4tQcILpBKQC1Q5Qt5/Jv1TxDICKOkXSM7Q9ERLHMsGG8qo5GBzE4tFnlg86SlsuPW9Gylbps/3HbT4+Ivyg1OMv2K5QuIDfssu2WpVvfRKqXdGBO7b1c6QBS0gFKB+45OcK7utIFeDE58v5FpQtTq9y+mC7ploi4pkOfn+6y7arbJL07In7foZ+7CvbzY0kHRcRPczbPoUrvsWTK9eFKd+DXsf19SS+S9LaC7UvSXfniMfIJ/8FK/4cl9GqfS9JjSneuP6kFJwYhaYMu271W0r8i4qr2J2zf3mXbkjRH0is61Qwo/Pta6/toXSwofQ693fYcpSBdkTsfHayqdHxtnSgvL2m1iHjCdvEAak0ucKqV9WWlDIlQqiVXTE7p3kLSppLulnRvoaarNyX+3fZckYuuiPiH0v7dz0PrbKxge4VCdTae3hYYavV9s1NdmpLWUJqC9RsNDWCXuAvccrbt4yWtkoPl75D07YLtSylbeq5S8PHnTnUrStcc6vQ+Sv5tHKqULbuh7aslralyAYmWHSS9zfadKnss/LukrSPir+1PFP7MkKTaMmHyZ9FVtr9bYxB+KdvLRsR/cp+n2f6L0pTC0gHHuvZ3tYbcHElX2r5QQ48hxWrIRcTLSrU1gro++26W9JWIuKX9CduvLNB+r35vj5b08fZAo+0HlGqllSgFsEq+3rOklSpZV1bKCO5K5ZzQStlJqytlEUmSCp0T3h8RpxRoZ5Ei4ljXXDMwIv7gDrX2um134ApS1y0fDO5rP/lzqqJ+UER8rkAfp0k6LSJ+0rb9nZK+FRFLdX7lYvVlSW+StEFEHOE0F/XpEVFsOp7t2ZJ2i4hSAYJWu6spRaprLXrsNH1wZkQsdMFre8+IOL9QPytFWxFO28+KiN+VaL/S5uqStlM6wF5bOOreKiJ7jKRX5j4ulXRwibTlXu3z3NccpSy+QSsy/35Jv+x0gdqjOxVF5AvEJSSto5QJNUTpkyjbB0j6lKQrlX5vX6J00nSGpE9HxGLVQPHQaanfVyrAOj8VpnBqfbXfZZSmRha5K2z7HZLeoHS39AeSzo6IUoEhOU3BaaU9Lyep9TdupfdR8nPvIEmfVqq10QpKlbroui4ithrrc4vZ10s7be8UsO2yn52U6hJa0iXRg6L5tidF4cVE6n4fTtMnnp3bvz3aFi0p0H7HaUvdHgud6oNM63Te5xoKtdteVem4Xr0gKnYczBdA/62FixN3nali+0OSrm//G7O9haQvRUSnemaL21ct+zu3ffhIz0fZhVBqL9be1l+xzz7bL5b0h2Futk2JiK6nRNo+OiIOsf1jdbgRUiLYb3t6RHSsPeNCRYttnzzS8xHRVeKB0+yKpyllu1WtI+kvETG7m/ZzH9dGxHbdtjPKvk5VSiq5UQtmV0QUXPQm/51PUZo6+qycVXdORLxoES8duV2CQwuzvbnSamizSgc8es1p6sSTkl4eEc/NH9qXDncQWcw+ru72F3GEtjdXH/eF7ddFxLmF2mp9gK4VEbvU9QFqey2lufHVE7Ofl+xjInCabrlnLwJRg8j2pRGxcw/6qWW1hWH6eoYWTImbHhF/KtDmFSM8HYUuWF4eEZd7mPoIEXFegT6eVJrG1LowGXJyUDhbpVb5hsW2JQLWHdr+u6ROx1MrpcCvWri/pykVopak35QM2NXN9v4586JjbbeS2QudghwlAx/D/O39Q+nGUskg6mZKU0Ek6RedbgKMZ7aPVMpWvkOVjNwSx8FKH5cqTQf6iFJNkrcq3dQdiNUIWzcKPUz9wCg3BbYnnBZuOVnSJyNisxxEvaHk57p7uBJvaba3iojr6gz22/59RGw8zHOzI2Kjbvuom+0L1Dn7aVNJn4+I3Qr0MVnSg63Aou2XKU13/oPSlOci0+Ny27ep5pqBtm9UrrUXEVvkbTd3eyNs4KaV2X5YC9LOWlpTE5aOiK7ek9P0rv2V5iR+yfYXIqJ0inXrjkEtywG22TYitrR9gyRFxIO2l17Ui8Zohu2zJJ2voWmrXV2w9GpfLMLXlGoElfBd5Q/Q/Ph3Sic4JZfC/aJSEbdZqtwxV+eLmcXt42R1vvvxjgJtD7e6Ux1TjR5RqhVyhYb+3nYV1a8coxZ6SmWmW/bq+LHmon+kiOttbx0R03vQ1xJKNZsmSdrI9kbdBk6jNyn1L1Wadtzp5CgkdR0cklTr+xjuQqil8AVRnXU2Rlrd7islO7L9BqVpFFcqHT+Otf3RiPhBgbar51LV41Wx45QWTMMpXeC6k52UViurenWHbYvrAKVVQFvB4B2Vzk3Wd6qhdWq3Hdg+WNK7tODv+TTbJ3SbDeo0xXK5iPhnfrydFpQ3uCEiHu6m/TZvUFoYo9hFVgerR8SJtg+OBVN2inx+2P6ypNkRcXzb9ndLWj8ipnZ+5ZicrrSQwXXqfD3T7dT2+YbJVvmHUpHw4yNPn+tSL4q1n6z0/1VdifccdbnyWi/2d0Rcl/8tmvHZZobtd7VfIznNSClSY2e4IH9LgWD/09oDQ7ndmR66cng3zlJavOAfOfngHKUahZtJ+qZSgf5SBrZm4MAFhyJiyEmG7RUkvV+pOniJC6N9JG0eC+rz/ESF59/noMdblWq2nKk0PedKSbva3jEiDi7Y3eP5xKD1i7OmChWkrlhJaYpANcugxAVL7ftiFEoWCO/FB+ieSndT6qyhUv0wXlbpQNt1Bkb2pNLvzulKNZraa5OUdH7+Kqr9GFXaIo4fL43FX3Wr3crDZapIZbJVslpWW2hXZ+A0H5/eqLQampRqcJ1eKuAREYfnf4vWi2vrY/6Ja/6cUETcV7CLvynVMGpNJSp+QeQe1NkY7gTf9jqS9lVa3KCUTyrVirk397GmpJ8qTfvrSt3HqdzH8fnfYlNY2rkHK9RlkyQ9N3LdnpzR9T2l49fPJXUdHFIKQG0bEY/kPr4o6VfqfrnrLyrVDvtSfnyG0oXLskr1W0pm3NyitJBHnRlurel8f3ZaPfBPkkYMPo/By5WmrLX7tlJ9mhLBgtfmf9fvtq1RmKN0o+eM/HgfSQ9LepbSe3pzgT56Uay9rpV4a9/fLbZfK+lILcjsLxmIP0TSD51WhGwFg6YoBYH/q0D7Urr5caPSog+tGlklrTLCc6UK5y9XyRjfX9JJEfFV20uowIpr0pCA7Ioa0JqBAxccanEqTHaIpLcoXUhuXSiF/NFYUIH9/vwLU9q+qnE5wDZfVwqaPdX255QKKH6qRMNOy/Z+o8YLll7si0UpmQ7Yiw/QOZKWUg0rlLVE2zQ722dI+mWhtjd3Wtp6P6W/61vzv5dG4foU0aOidLafqqF1Ebotitur48fKSnc3O50AFMlWySd3B6pDzaEa7KkaAqe2n6uU1XOJ0gobVpoG9Amn6WC/LdBH3XfsWvvicEkHKWVY2fY8ScdGRImlrr+ulJ10tdKFyi9rSLduBTz+mL+WVmUBiNJysGZvpePVM1XmBlXVEm1Tlu5X2jfF5M+hWa3sEacVTTeJiF8X7ONLkj6rFOz/idLKgR+KiNMKNN+LFeokaZ0YWtD53rztAdulag9ZQ1f+fEJlLsBeoQVTEyXp7xGxW/6b/0WB9qu+IOkG27eovguizzrVAf2wUuBsJUkfKtT2Mp2OSxHxZKFgxBBOpR421tBzhJJlALaPoWUkfuxcn8b2rEJ9fFj1F2uvayXeXu7voyXtpTQVtehnXz42be80Ter5efOFEXF5wW62UPqs21UpAHWGpJ8VfC+1Zz9p6PH05ZJaN+tL7u+iGcQjiYivONXae0ipHt5hUaDW3sAFh5yK4X5YKfp9kqQtolBBzmwD261le610sJu/jG+hD7jalwNsiYjv275O6eTASjVWStXueYekbxRqq5Ne7At5QYX8hZ5SKo5WSm2rndg+Vuk9/EtpqtTPVHCq1CJsrIJLqOeL6cMlHW57H6W7s19Uml5RzDD7vZVu/dlug81OS99+Vemi8V6lu0W3qfvV6Xp1/PhDFJgqOJKcDntc9KbmUF2B0yOVCrKfXd1o+3WSPifpdQX6aAU9nq10kdc6Du4mqdTiAh9SWt1w64i4U5JsbyDpW7Y/FBFf66bxSAU5rTQd581KU6QuVVqE4c7uhj6/j9oyVFpy8GQvpUyxZykFSdePiLVr6O4nti/R0Lv+Fxfu41uSqkXVH+mwrVs7R8R/2/4vpVXL9lLKtikRHIqImOtUqH8I26sVDBBd6VQT45z8+HV52/JKq4GVcLKkX9tuBRn3VJlp50u03Vz5mDT/+Ft6hdxTlD6vZ6p8lrokKRbUmfmHyk+H/bftjaNt9VqnGjdFM5nzRe/BktZWurGznVKmWMkl4FewvW7rppTTojStfV5q+fFWPZ3airWrvpV4e7a/laY731LDTZH5IuIKLZj6Wrrtm5RWnJzqtArXfkqf4x+LiGkjv3pUDlH92U+X2z5baarXqko39lr1KEtMsax7+uAQttdXqk13WX68nO3JETG3m3YHLjikdIf5PqUP0X9JOqAa7CtwB7W9nkAdEcBVXONygB38Venu0CRJy9neMmpaQaewXuwLKWVH1Mb21pLuiojr8wfou5VOLC9VmmZRQmtFheu04MKxFl64VsVfVDAt3amg9r5KHwYPKl20lr4jL6WLrCeU7jwr9/kUpffzXXWu7zIWRyqd7P00IrbId3T277JNqXfHj+J3SYfRq5pDdQVON42IhYK8EXGu7c932Xarrc9Iku2fS9qykuXxaUkXluhDKWCzU1RW74uIObb3VzpWdRUcyu2FpCucauDtq/Q38nuVn7pdZ52Ne5UCcp9Szn7KQY/iIuKj+e97h7zphChfl9DVi5V8B7X0uWGrvV2VVlL5R8Gb8r2q3/J+paBWa1/MUKqR8YgKBSgi4n9tX1np4+0RcUOBppe2vWLruBERl0pSzr5ZdsRXjt2/IuLrhdscwvbaShlDOyjt418oBehLnE8dJulipxXeqheoH1e6eC3pYKVg/7UR8bKcNV3kM6Piw5J+afsOpb+N9SW9Lwc1i2RPO03nPFPSWRFxR4k220XEZbav14KVeA+OMivN9nJ//7eki2xfpcLTnXspZ8xuIWlTpWuYIlNIe5T9dIjSTZZnKC0g0QpibqRyU1MlDVt/tHUe8uGImFOgm3MkbV95/ETe1tWiUwO3Wlk+GR520HXeObT9oojoeg67a14OsK2v2laOyFMOOq30VHIe7XB9F9kXvZA/0F6Z089fovQh+gFJmyvVMCiWfps/8P8TEU/kx0sqpc0OxIpc+UNzRUlnKxUCH5K9U3KagO3rI2LLTttcYAUt2zMiYortm5QyHJ+0fVNEbNZluz05fth+gaQV2//ObL9IaVnRIieBtn+r9MFcd82ht3baHl1OL+z0ezSa5xazr9slvSDy1DinJX1vjohnF2j7loh4/lifG0P7yysF/PdRypo8T9LZ0f00y059HaOF62w8pPQZuFJELHadDduHKAW2ls/tnyXpsogoVkS20letK3Dl9s5Tqln2rbzpfZJeFhF7FuzjKKUsmH8rrRa4iqQLImLbUn30gtNy5m9Umkp4p6RzI6Lr7GnXvHqV07TUV0p6TyWDZD2lfX55RBS78Wb7f5UufKdp6AVwyaXsL1MKCrbqPO0v6U1RaJl528+X9FEtuECdJenL0aFYbpf9tKZ33ahUa+pR27Miotvs4vZ+ltGCeni3dxkc79T+ekrH2H2UssXOUg3Hdte0Em8P9/elkv6ptqy6XmS8lmD7HUoF55dVqnt3dgzQ6pntOhzPz4sui/+3tX+kUvDsdKXz2n2Vlra/XtJ7I2LHAn3cGBGbt23r/jpj0IJDdcsX02+QtJakn0TELU5FxD6hVMhqi5r7L7Z0em7vdqU728VXjrB9Q53/H73aF06FRL+c+7lY6UPh8fzc+d2eJFf/UG0fp7Tk6qfz44X+sLvs61qlQFRrVZIVlOr1bD/yK8fUR6eL3X8oTUPqqi6Q7bmqBDGrTykFDEqu4nGTpHdFxG/y460lfSfSUqxd/27b/qnSBdEXJK2hdHdl65L7okOfxY4f7sGyorm99Tptj4he1CHqmu27JXW682dJh0TEOgX7+qTSMbE67eTsiOj6bnPdQS7bjyhlCZ2Z/x1y8hHlCpzPv+jqtK3UxZfTlLt9lVLrN1a6A31+RPyu27YrfXQKYHe9TG1be09Vqgf1cqV98jOl39uiJ/058PGPiHgiBwpXjIi/FGz/ZxHxikVtW4x2n6W0j/dTKqp+lqSPRETH49Zi9nFBRLzW9p2q6XPP9nuUzp2Wz+0+LOmoiPjWiC8cez+dprQUuSFZ6aPTBVHRc6lecJo++HalbIaXK2VKLxURrynYx1s6bY+I75Xqo62/jSX9j1KwbsmC7XZcUCLK1rKqVYmbLP1k+0mlgvOtc7P2z/Bxvy96cTyv9LVQkKZ1nCoRwMntXaZUF3JafryHpA92/bk3aMEh28sqHSAeVFrN6KOSXqKUGXNkdJlmaPu7ktZRShvfVmkVhCmSpkbE+d20Pcr+/xgR6xZs71ylCGXx6G4PgkPfVQ/2Rf7jOlfStUqrhWwlabdIRbBLBAluUVp1bV7Okjiwdbej9IdFL06acgBqS6WVHKyUWnqL0pSm90ZOWV/MtpeMnPVUtxwMOkkL5t8/rLSM5SxJu0ZbDZnFaH95pTnMlvQmpf+f70eZwvnD9Vns+NHpArvyXNeZVR3aLF24u7399guvVj9dXXjZPnyk50vfFczB2Rfnhz+PMtNO5LRy4iOdnpK0bEQs1WX739XwWb8RBetb2b5N0qtiaJ2NSyLiud0e021vpDSd6OrKtk0lHSPppSUuiFxZgUvp3EZK+2EFSVdHRInpqT3jVPfwRElnRMSDhdteVmk68BVK9axa08pWUrqp9JxhXjra9p9UmrZ0QETMztvmlLxR0UtONbMUZZev7ymnqcEna0Fm4H5KU/C6uiDKbW+stErgA0pB/28rHW/vkPTOKDj92fYarWsWp5IDKyv9zha7metUj7JlWaX6o9dHwYz13E81e+gJpSlmXy3Y/pCs2YLt9nJ/f0mpzMBinyP3U/4dHVb0sNbO4url8dz2r5Sm47dWF329pEMjYrtS12VOhdm/r1Tb1Ep1rd7Sem+LLSIG6ktpusn3lZagvkrScZJ2UVoJ44IC7d+iVLxPSgfSv0tavYfv767C7U2RdI/SSjrTWl+F2v5E/vcUSatUtq+qtDzgQOwLSTe2Pd5fKUCwodKHaLftf1JphZ4fKa9mlLdvpHSiX/K9XK1Uk6T1eCtJvyrcx3mSnld5vInSwW+D9v/LxdkXkl5Yeh8vos+VJa3cyz5rfC/Fjh+Sfj/Cc7ML9rO7UibJI0qpvU8qrZ5U+v9m9crXWkp3a4+oeX8cUkObOyhdCElp6tT6db6HguNeeYTnphTu6zVKq5VdoTRl6g9K9W6W73afSLpAKRu3ffsLSpyDtP6vJE1Wuvhdr/K1Wg375UtKgZSllLKG7pO0f+E+NlIqzj5bKXPsVa3PwQJtH5yPG4/mf1tfN0k6qED7e+Yx36V04fgKSXeW3g+5r5+NZlsX7T9NKUh3cX68idJFUsn30Is+1lM6l71PKSP3fEnrFmr7l0oraH5E6dx5b6Xzz50k/bpQH7vlsf9JadrJ9nX8Pg3T9ypKAaiSbf5aaarMxyVtUNO4L5a0Qg3t1r6/K309rHR+85/8/cOSHurVvi8w/p1GeO6L/R7fKN9DL4/nGyglsfwt/73/OH8WLqdU76hkXyuU/Pvo+45ajP+AW/K/k5TqXlSfu6lA+9eP9LgH7++PhdubJemDkl4m6aWtr8J93DCabeN1X+T/o2Xbtr1S6UT2z4X62E6pwPLylW3PUiWQU6ifrZXuePwif+jNlrRV4T5uGW6bug8ObauUKfZtSavWsb8rfdV6EqtUvPT3SlPuHurFiUDJ44fShem7Omx/p9JdwVL93KQUsLkhP36ZpBPr/H+q9H3doOyP3N7h+QTjd/nxM1U4wFzj/8X0Tn/TSifhRW+K5HaXkbRZ/lq2YLvTR3huZg3vY8v8Gf6B0p8Xuf0b87//lY+HK5c4lxqmryWUgsH3KAXvPqNCAS9JH6hjzJX2l1eqT/FjLVjRbedCbS+rVAz1JqWba6vlr8mSflvwPVysNC31pvx4Uunf2br7kLSkUgZuXfv5xsr3s4d7rss+bpb0nPz9tpKuquv9dOh7KaW6QyXbfHaN4z1WadrruUrns8fnx1+X9PVB2N8T5UvS75Sy6qvbllBawKVowLEH76W243mP38cy+X18Qmlq+2FKy9l31e4grlb2mDR/2eY/tT1XYjrKc5wq70uav3x667GiwFx/927pdKkHK0dIWsL2qpHTxXNtgRK/W7Xvi+w7yh/QlbZ/antvpbuqXYuIaztsK1abotLmdKcVL1oFautYUnSW7W8pRd+llEZ8q1PRw676iohf295W0nskzbB9sYYW7ut2Zamq7yqlpn8yP/6d0vzjEksHS+l3Z7eIuK1Qe5J6evw4RPUvKypJj0eawrmE7SUi4grbRxdsX9JCtbKWUHovdX8Gll7x7b+UVgm5XpIi4k+taSID4ASllcp2ioj7JMn2G5UySnYt0YHtl0fE5V6wgl/LhrYVZeoarTLCc8sVaH8+2/+jdKHdGvfJts+JiM8W7KbOlcTmcypw/3alrK5zlTLAd1BaSnjzAl2cZPtTShkkB+bpIs+OBcuedyXSqmSnSzrd9qpKGQYfU1rJr1vvVjrePlPpWNvaAQ9J6rrgdcUaEXG27Y9L88+ji0zjtj0pUs3B2vrI7T1hez3bS0cNtTRVOd9Q+v8f7rluzIuI30rzz3lqO4Z76MqNS0p6rtIMjJL+bvtESc+MiFfb3kQpA7zEudSMyr91rMTbi/09n+3dlUqhSNKVpY5PPfIqpZXdlo6IH9peTmllrIfU/eq+PVXn8dz2f0fEl/KUzoXO1Qtfx/xI6Qb0daosANCtQQwOrW3760ofnq3vlR+vVaD9zZQusO5q276O0hLXJXRaOt25j48X6qPlF7a/oBpXjpD0VUm/sn1Ofry30gl/t3qxLxQRXxtm+w1Kd7UHzbOVsmCWlbRlvigqWXzwbUr1MA7Jj69WSsl9XCqypO9qShlQ9ykd8Ip/QGe1nsRK+mvpwFDWk+NH9GZZUSmdWK4g6eeSvm/7XnWufdOtav2DeUpTT/auoZ+qTkG8bjwWEWE7pPl1rQZCRHzb9n8kXW57Z6Wg8nskvSwi5hbq5qVKwYZOJ6qhBUGWbsyw/a6I+HZ1o+13akEQtZT9JW0WeXUhp1W/blSaRl/KBbkW3r8lvddpmeLSqxldpzQt/ESlmoGtc5FfO61+WMJJSv//rYL/9yhduBS/+Mo3wk7IXyXaO0bSMbY/EAVXy+ngEdurKx+XbG+ndGFRwm+Ustzq7KNljqSrbU9T5bMiyiwJ3rop2X5D0krTREp4qtMKch0fF3ofLdWV6OYpLRxyd8H2pRpvtEXEKU6L0/w0IkqcX7brxf5ODabj99ZKgXFJOthp5eXS1321iIg7bb9S0iW2n6b0+TQ9Ij7U56F1pfTxXFLrvH/GiD9VxtoRsUvpRgexIPVbR3o+ul+WuCcr9FTarWVp1Er7V3TYHFFw5YjczyZKqy1IaWnUWwu02avVkg4b4emIiCNL9NMLTsVxd1QKDl0k6dWSfhmFiw/WxWlFlY8qrR53fFQOULYPiYijC/Z1paTXKS1DvWU+if1iRLy0UPvHSHq6Uj2EamC25KpMtR0/cqHX9yjNkZ6pNNWrq9XohulneaUL0yW0oHD3adHl8s2j7Lvr3ynbD2v4TK7lIqLYTRjbH1FaGWsnpVXw3iHp9JovKIvKGZnHKk0rek10uYhEr+WT4h8qZTEvlFEXZVfguiK3+ff8eBWl5XZLf35XVxJ7iqSVCr+PDSJiTtu29SPizoJ9zIiIKa4UHHehFWF6yfb2StPJqst1F7m5k7Mnj1UK9t+iVLPs9RFx84gvHF3bN0TEFnX2Uenr8E7bo0Dxf9sfUrrh9YA6ZEJHgVU0hxv/gi7iiG77aOvvaUpBCUn6TZRfibC1EmT1b+/GKLsQys8k7RURRQONvdjflb5uVlqc5sn8eEml6fTFVp+sUyX7+plKtWYvU2V2ReGkgwnD9lMi4l81tX2C0mplMxf5w2Npd9CCQ+3yHWdFXrq7QHu1r9DjHi6lN8h6sS9yWx/usPkpSrVVVo+IFTo8Py45TTnaTOkDZ7N8UnBaRHSdAWX77Ih4g4eZ1lTiA872aUrV/Bc6eXH5lfxqPYm1fXKHzRFdrsrUq+OH7bOUTpZ+oRRknBsRh5TsI/fzxYj42KK21aH071Qv2N5J0s754aURcVk/xzNaleOGlQrK3qehd/1LLs/+NEmfVz3THFp9VDPqZtWQUSfb5ytd1F2m9H+3k1KGxt1SmfR092Cpa9vXR8SWbduui4itCvZxjVJx0atzsH9DpdXRtinVR91sn6q0EMaNWlAmIUpOQ7A9SSm72Co47dz23UqrPUkp0L9M7uNRSU8Uzoapje2vKGWfPUfppsjVkq6RdE3pGxY5a+TqRW3rso83KN1su1Jpf7xY0kcj4gcjvW6MfVypGm+05T5+pDSl+jIN/dzo6m+jx/v7Zkk7ttrNQfkrByg41CnZoKV40sGgs/1Cpey5FSJiXdubSXp3RLyvYB+3Kt3AvVPpWGulfdHV79TABodsP1/SqUpTUKx0ovmWiJjVZbu/j4iNh3ludkRs1E37uZ3al9KzvX9EnNaWujrfIHxQ92JfdGh3RaXVTw5Qmpf91dJ3Wepk+zcRsY1TGv/LlIog3xZdLueb235GRPzZacnShZS8wzJM/3dFxDqF26zlRLlOvTh+5DbnB2Dz/9Nv2i/wCvXT6cLx5l6cMNXxO1U320+XtI1SsGB6yQyPOjnVgBl2mnB0u/Tq0L4uVp7mkIPkk5QC5kVuKPRK3ZnSuY/alrp2qn/3PKW7yx+tPLWS0gXq87rto9LXTpI+pZQ1e6mkF0l6W0RcWaqPutm+TdImUdOJuReuxSWlKV8zuz3Psf1npaKuHQtWlcjqqfT1LKWp7JM1NMOq2MWp7aWVMgK3l/TC/PX3iNikYB+dPvsW2tZlHzcprTJ1b368ptIUrWIZdT3KFut4LCxxDMzt92J/7yfpKKVVNK1Ue2hqRJxVqg+MH7Z/rbR8/bRKRt0tEfH8kV85pj5quR4bxJpDLScoZRhcIUm2d1Ra4Wj7EV4zGr2oJ7CXpH2VinP+RKmwb+kKkE/J/w5KsdJOelbbIUfwD1Wa1nKK0qowD5bso0dmOE09+LbS/9E/Jf2qRMMR8ef87fs6ZXooFXOrU5ET5mFOkCXpWS5QtNb1F6PrxfFDqqRYR6rHVLRx2+9Vql21gSuF5pWOWcXunC7CQN0dyce+w5Tq6ljSsbaPiIiT+juyUfma0jThIScttlfKz5Wcsl13PbGeKHXhs4g+PlB9nD8/zuz802P2bKUaaato6P59WNK7CvUhSYqIy2xfr7QyqCUdHAM2ZVHpwvrpkv68qB9cTAcoXfS2MgB2VDpPWD8fR07tou0/R+HpUCM4R9L/KS0mUtff9XJKQcyV89eflDJLupYzCraXtGbbDdyVlIpGl7REW+DvfqXMrq7ZXjci/hgR19t+qWq60eY0/eptUU/NoZY69/dxStO/z8hZVq0ZER8blJs7Uko6UEoqObVt+5uVsgNP78/Ixq+IuKvt3Lno8ap1PmX7qUo3d4oY5ODQ8q3AkCRFxJUuU5zzENW8Qk9EnC/p/DzePXKfT3VaAeqHEVFi9YvtJZ1Q8m5NHxyiHqyWZPvLShfcJ0jaNApNUeyHSrri/+XAwUol795kO2nhQNCrO2wbMy+ifku37WcjXYSWKFpbazG6Hh0/JGkz263VOyxpufy4lba6Upftn6607PEXJE2tbH+4ZDp3j36neuWjkraIiPslyanw6zVKxXjHu6dFh3nxETHT9uTCffWiKG7tbL9W0pFK0/Amqdzf3kgekbR+iYYi4keSfmT7hRFR5CbFIrxUaQW0UFqy+4c96LOkNZRW/vyNhtap271Q+5MkPTfSYgOt6ZffU1qt9edK2fiLq44bFMOZFxHfqqNhpxoez1MKYP5a6fj6v4VvFi4taQWl/VG9gfuQUqZBST+xfYmkM/LjfZTqUZZwvlIRckk6KyJeV6jdISLVQnvS9spRvuZQL/b37yR9xfYzlGYknBFpwZtB8wGlzNJ25ykdPwgODXWXUw25sL2U0qyU0qsX76602MozJd2rdK5wm9Lv9OK3O8DTyn6otJxv68Nsf0lbRUSRoIF7UE+grb/WUnr7RESnP76xtlc0NbWf6t4XeZrOo0orOVT/IHpxIl6Ehy7TvZAoUCiumukh6Y7KUysq1XnYv9s+sHhKHz/6of3OR0T8sY/DGZec6qrsGHkJ55wKf2VEdJsxW7seTdk+ROnkXkr1T54vaZbSNIe9I+KmbvvoJduzlW5czKxxqlF1qesllKZlnR0RU4d/1Zj72EDSMUpZPaGUzfqhaCtS3WUf31SqvVC9CL4jIt5fqo+65eyLhUTEVYXav7U6TcbplvasiNjElWLCi9n2aiWD+sP1kb/9oNKF0A81NIjWdf/5ptoaSllc1yj9rt5Sx9+f7fUqd/6XUKpN0r6c+uK2vZFSQP7qnC29Q37q75K+HxF3DPvi0fcx/3em29+fUfRVV82hnu5vpazvfZVuTJ2hFCj6Xem+6jDSdaV7VApgkNheQ+lz75VK15OXKmW03l+wj5uUFoP6aaQFAV4maf+IOKCrdgc4OLSqpM9owV2iX0j6zIBOBSrOaWna/TT8/G+qyk8gXlAoblml7KqblPb9CyTNiIgXFuhjZUmrquZMj16xvYxSEcXJGlq3oKvU+LaLrYUUvAs8IdjeTelCfsidjyhYj2SisP09SZtK+pHS79gekm7OX+O6lpztM5RWsuw0TXiniNinQB/V4qK/VVrO/OdKJ+CDNsWodVx/ReTVbWrqoxqQqGWpa9vXSjpOCwI3+0r6QERsW7CP3yplxbSyxZZQCnw8t1QfvZAvIDeOiJ86rRy3ZEQ8XKjtb0paV2lalpQ+/+5Wyki8oOZpO12zfacWFLVvF1Go7l4Omj1P6ViyvVKQ+QFJv4qIkVYaG2s/pyutCPqEpOlK05qOiYgvF2i79tV+q8GCum9Iu8aaQ73a3219bqGU8fuCiCg9lbAWTjXRpkTEI23bV1Sqf9h1bVOMjRes0nmTUlb5ky6wSudABofy/NOfjvcPsn7KUymma/gPUarKT0C2z5N0eOuEwKlw+6ejhqXsBz3TI98x+ofSlMX584Aj4qtdttu62NpLqX7EafnxfpL+GhEf6qb9iaauOx8TkUdeArlo0dfS3Nsl4GsvLtoLtrdWmlZ2lYZmSIzbIGAnne4qlziBbWvvAknvr2RirCfpGyUugnvF9rskHShptYjY0KmI+/+VygbNF8HVLJIHlbJLBiK7qofTE1v9ra1U2Hx7pdpZq0fEKgXbvzEiNncqnbCl0k2360pkYLg3Ky8/oZTF05qi3Vque2Cy7qt6sL8nKZVg2FdpetaVSjcuflSqjzrZ/ojSuN9TOc5OVgr8X1kiqDkReJh6oy3dZru19fVTSXsq3bRfQ+kG69bdZpMPZM2hqHH+6QQymwBQIz27eqcoIm6xXfTO6XCZHupyjmsfrB0Ru5RutDUFwPZXI2JK5akf266lDtGAezwi7re9hO0lIuIK20f3e1Dj0XgO/ixKpDon27dNE74w6pmyXVtx0R77nNKiAssqBdGK8cK1uKwFWRmlL+wutj1VqdB1KNc9aU0TKpR5uqKk25zq9Uip6OsM29NyH4OQsfl+pZUIfy1JEfH7fBOmiIgI23OUpvftrbT88bml2u+B47Sgxk0tbH9QCzJIHlde1lwpy6P0MWQpp1okeyoFMh+3XeqO/SojPFek1l4vM15yoPQLStNeqzclu8oW68X+dlpJcT9Jr5H0G6Xj4IHtGTjjXUR8xfY/Jf3c9gpKnxUPSzoqaqoBNqCq5/mfkVQ8+6w1bVQpe/zfkj6ktKDSekq1oboykMGh7J+SZtouOv8UGHA32/6OFmSrvEl5yklBn1U6uRyS6VG4j164xvam7WnXBS1ve4PIdTVsry+pRNH8iebv+UTj55K+b/teVY7pkGwfHRGHDDdlcUAufCVJkRaSuGKRP7gY3Jvior30zCi47G2bnyllNp4n6cyaMz/fkP99d9v2fZV+n0tMBzqsQBv99mhEPOa8uk3ONOg6WOC09Pt++etvks5SmjkwaNn3vSh6PVlp2t2HYsEKrXU5XtJcpTIAP8/ZbkVqDqmHq/32yMlKF9lfk/QySW9XmVXXJqv+/f1xpSm1Hx7gzyJJUkT8n9KCNyvmx0WmvE4k1amOtg8pMfWxg6OVpo22zpWflHRKa9qoulz9dSCnlUn1zj+dCGzvFBGX9Xsc6C3by0p6r6SX5E0/l/StiPhPwT5qmePaK7ZnKp1wT5K0saQ5SlM2WnfMixTVs/0qSd/O7Vspon9glFtNbKBV7nzcqHTnYwktuPNxYUQM4glsLWxvFRHXueaCtYPOPSwu2gu2v6QUhK/lmOFUR24vpSDNskpBgzMLZfL0nO2nK2XehFINjIFZJlqav7//LuktSnd/3yfp1oj4ZJftPqlUl/OAiJidt80pVaOnV2z/XemcpqNBCpIPx/akiJhXoJ2eTePtBdvXRcRW1SlxrW39HltT2N4/Ik6zfWin5wdtunMv1FWLq+5powObORQRp+S6As9ROhG4PfIKLpAk/e8w6alFL4AxvuQg0NfyV10GPdPjtXV34FQMdWWl4FOrSN9vI+LR4V/VOEerxjsfE0krUEYQaGQRsUtbcdEPS3q+7VqLi9bovZI+YvtRpSkPRad85Wn5J9s+RSlA9HWlIFHRk/w8daZ60+JKScdHxOMF+3inUvbQ5Ur/T8faPiIiTirVRw9MlXSA0nSWd0u6qD3zYzG1AoBX5ADqmepNFk5p9ykt2zwh5ADO55UyBF9texOl+mgndtt2j6fx9sKj+bzq97YPUlpsYIU+j2lU2qbwtv7uWjcol46IQbkWb2W+r9jXUUCqedroIGcOvUYpJfMOpT+29SW9OyIu7uvAxomcnjqsVjExTCx1zcvOba8bEX+0vbyGZnqsrLQ0arHlGeuUs6veo7Ts8UxJJ5a4U9ehnxltNYdQ0YuCmRNFJdutI4L9C6u7uOhEYHt7palGL5b0S0lnRcQvaujnO5KWktTK7H6zpCci4p0F+7hd0vatzyHbq0u6JiKeXaqPutk+OCKOWdS2LtpfXqlGxX5KiwB8T9IPByWbta678P1i+2Kl6VKfjIjN8jTCG/jsW5hTcf7blC6Kj1Q67/xSRFzbz3Etjnxz9f1KAeAfRsSH+zwkFNQWDHyKaijU7ppXfx3k4NBvJb22kiK7oVJUnKX00Fi2f6kF87J3U56XHRFd12Pw0GVLz42I13XbZj/YPkvpLvwvlFaO+ENEHFxDP0dpQX2Hal20gZyyUZrt30fExsM8NzsiNur1mMYrgv2jM0Jx0WskzYwal4Svg+1zlbIIflJ67LbnKk1hOlMp22ZIgDwiri/Y10LTjktPRbZ9jaQdWxnkObP8yuhy1ZZe6hT8sH1DRGxRQ1+rKhWl3icKrYZWN9vnRcRe/R5HKa0bJNV97LyCWZ+HhhrYXkXSIUrTRk+X9LVBuakqSba/PtLzQc3fnql72uigpLJ18nArMJTNUSpCiQrbe0n6oqSnKkUtB3KJSYzachHxM9vOF4yftn2dyhTrrKahD1StgjabVOasn6i0ekQdWpH76jLBpYqvTgQTrWBmbSLiD7aXVKo/M2hFZHtpsnpXTLYXvqUU4D/W9jmSTo6I2wu1PVfpePSq/FUVSpklpTxhe8OIuEOSbG8g6YmC7UvSbEm/tv0jpfHvobRAw6HS+K6HYXs/SW+UtIHz6mrZipJquZkQqTDuCflrILQCQ7afojRldN2IeFfOmH52RFzQ1wGO3SM5wy0kyfZ2kliBucITYDEG22so/b7uo7QK2hYxmCttV8/LalmFC6NT97TRQQ4OzbB9kaSzlQ4Ye0uanoMhiojz+jm4ceRLknaLiNv6PRD0RJ3zsmOY7wfN/DoXETHPrqf0QkSsX0vDE8chkn5o+03qcOejX4MaryLiCdtP2l55QE8saxcRHQtlDqqI+Kmkn+bC0fvl7+9SKnR/Wjc1eyJixzKjHJWPKtW7qRbnf3vhPu7IXy0/yv8OQn2MayT9WamYerWmzsMqv9roRHCy0mfGC/Pje5SCwoMWHDpU0jRJG9q+WtKakl7f3yGNO6fmf7/S11F05w9K9bJOVppidED1vHM8B66rojercGEMoqbVXwd5WtnJIzwdEfGOng1mHLN9dUS8qN/jQG90mJe9kqQvl5iXbfsJpelRVip4VnwebS9U3oc09L2UnA/8VKWMoeflTbMkHRcR93bb9kTTdudj1gAXzKxdzorYQtJlGjpVkXTuCSpnFuyvVKfnT5K+L2kHSZuWCPDkLIxDlbIwDqwrC8P2MpJa9X9uj5qL8+facrtFxDl19lMKmYGj5wUrplanYw3MiqlVuc7Qs5XOP27vJuA70dleU5Ii4r5+j2UsbH9aI9cM/EzvRlPGRKv/haEGLjhk+6CI+Ea/xzEobB8j6emSzldarlsSmVUTne2nRMS/Fv2TKM32i5Tmk39XCzJitpL0Vklvioir+zQ0DDjbb+20nTt4E5PtHypdOJ6qNKXsL5XnihS8zzXYrpP0loh4fg4WXVOy7kkOfOyqNO1vfsZ66TvmuZ9XKWVZ7STplxExMJkYtn8maS8yA0eW60u9QtLVEbFlrjl6RkRs0+ehjVkuCj9ZQ/8uvte3AY1DObhykNIiKFaqj3ZsRBzRz3E1GcGhiW0Qg0P8Qo7BMBlWZFZNULZby6CuEBHr2t5MaRW/9/V5aI1h+1pJ742IG9q2b660fPO2fRkYJgTbyylleZSqPYNxJmeA3iXpuRFxRQ4K7qU0PeHTJYva9yILI5cA+I/S6pDzC2uXumNu+6VKNXteo1RD7kWSNhi0GyRkBo6O7Z0kfUppVdZLlfb32yLiyn6Oa6xsnyppQ0k3akENrmB/L5Brhr1a0oERcWfetoFSPbafRMTX+jm+scjZjAcoZZRXVxMeiOuxXqzChfFhkGsOYQStDKuIKD2vH+Pb0Up3TqdJUkTcZPslfR1R86zUHhiSpIi40fYg1L/AOGV7N6XaC0tLWj8HHI8YhKKcGJPjJb0yB4ZeIukLkj4gaXOlAsIls2EeywHHVlHcDVXJMi5k7Yh4QeE2JUm275b0R6WLxY9ExMO27xy0wFB2Xv7CMHJNxVWVgqXbKV2YHhwRf+vrwBbPFKUFMgbrLn1vvVlpae75+zci5tjeXykwODDBIaUM0N8qnaMfIelNSmUgBkJEcP7aEIMYHHqB7Yc6bCdyOdQ7JDH9roEi4q62IsulV4XByGx71bwaTHXjakpp0cDi+rSkbSRdKc0POLL63cSzZCU7aB9JJ0TEuZLOtX1j4b4Ol/QTSevY/r5yFkbhPi62vXNEXFq4XUn6gaQ9lf6fnqisVjZwIuIUMgNHFhFP2v7viDhb0oX9Hk+XblEq+zARVlasy1KdAn8RcZ/tpfoxoC5sFBF7294j/62fLukX/R4U0G4QL1RmRsRKHb5WJDAE6K48hz1sL2X7IxqgOxMTxNckXWr7pbZXzF87SrpYg3WXC+PP4x3qkTzZ8ScxyJbMhWqlVFulWqS92E29tiyMt0k6Q9KUGqbnXKu0MuG/bT9k++FhbvKNWUQcIml9pVW+dpR0u6Q1bb/BdqmVOnsiZwbeqBSsk+3NPXRpeyQ/tf0R2+vYXq311e9BjZbtH+f9uoakW21fYnta66vf4xtnHlvM58ajVrHxv9t+vqSVJT21j+MBOhrEzCGMDhlWzfQeScdIWktpeddLlVbNQo9ExAm2/6S0Wlx1tbLPRsSP+zcyTACzbL9RKXiwsaQPKi2DjYnlDElX2f6bpH8r3122vZGkYsWKe5iF8b9Ky47PrGMKTW7zCklX5GyCVlHqbypdgA+KT4vMwNHYJ/9bPbcJSYPyfzVN0tO0cNbIi0UWUbvNRriWWbbD9vHsBNurSvofpd+BFSQd1t8hAQsbxILUn4iIz/d7HONdtbgkAGDw5ZWkPilpZ6WT40skHRkR/+nrwFCc7e0kPUPSpRHxSN72LKXFBq4v2M9Rkv4m6SwNLYJcsuj1zyXtGBG1ZLnlVcq+FxFvatu+XET8u44+62D72ojYrq04+M111WtCf9i+QNLHI2Jm2/ZNJX0+Inbrz8gAYDAzh5ayPVykNSLiyJ6OBhgHbB+rEeossPpF79heQ+mO5gOSTpb0JUkvkXSHpA9HxOw+Dg8DLBfZ/aTtL6aH8XC/x4R6RMS1Hbb9roauepGFMUfSlbYvVqXYdaml7CPiCdvr2V46Ih6rbB+YwFBGZuAo5Oyw9yp9rkop0+r4iHh82BeNL09rDwxJUkTMtD25D+NBD9h+mqTPS3pmRLza9iaSXhgRJ/Z5aMAQg1hz6J9Kd7eqX6G0PODH+jiu8eYcSbJ9iu1VWhttr2r7pL6NCnWZIem6/LV75fvWF3rndEnLSHqW0rLKc5VWF7pA0nf6NywMOttb254p6WZJM23fZHurfo8Lgysi1u/wVXp6zp2Sfqa0yt6Kla+S5ki62vb/2D609VW4j7p9QGkq8qNKUwsfknRIPwc0Tn1L0lZK0wa/mb//Vl9HNDarjPDccr0aBHruu0rZvs/Mj38n/r4xDg3ctLKqvCz0wUqBobMlfTUi7u3vqMaXTtPLmHI2sbF/+8v2TRGxmdOScX+IiHUrz90YEZv3b3QYZLZvlvT+iGjVoNlB0jeZdoLF1cssDNtPqWuJeduHd9oeEZ+po7862V5JZAYOq/UZu6ht45XtMyRdHhHfbtv+TqVl2/fp/EoMMtvTI2LrtmmjnBNi3BnEaWWtJaEPlfQmSadI2rJ92WjMt0R1We38fzeQ+x2jNrgR34nhCSmd2eeCslWsLIVuPNEKDElSRPzS9rx+DggD71uSllLKwJCkN+dt7yzVge0XSjpRqQDrurY3k/TuiHhfqT5aQaDWCmUR8c9SbfeK7a0lnaScVWX7H5LeERFk/w71hO0NI+IOScpFu5/o85jG4hCl1fvepAWZ3VOUMuv+q1+DQu0esb268jl6ritXbIEBoJSBCxLY/rLSsqsnSNp0EE8Aeuyrkn5l+5z8eG9Jn+vjeICJboO8HK0r3ys/Xr9/w8IEcJXt45WmnIRSvZgrbW8pSSULFaMxtm7LuLjc9k2F+zhaaQWxaZIUETfZfsmIrxijvDT0qZJWy4//JuktETGrZD81O1HS+9oyA0+WRGbgUB9VWpluTn48WdLb+zecsYmIv0ra3vbLJD0/b74wIi7v47BQv0OVjoEb2r5a0ppKJQeAcWXgppXZflJpPvY8Dc2QYIn2YeSiZy/PDy+PiFv7OR6UZ/thLfh7eIqkVuo+fxc9ZvulIz0fEVf1aiyYWGxfMcLTEREvH+F5YCG2r5e0d1sWxg8iYsuCffw6IrZtm05RdBqQ7WskfTIirsiPd1Ra+Wn7Un3UbZgyANeX3BeDLGdW3RURf7G9jKR3S9pT0mxJU0uusAfUwfYkSc9WOje/fYCKqKNBBi5zKCIGsYh2X+VgEAGhCSwiShf3xGIi+IMavTIiBmn6BMa/XmRh3GV7e0mRaxwdLOm2wn0s3woMSVJEXGl7+cJ91I3MwJEdL+mV+fttJU1VKuK9udJsArIwMG7Z3lvSTyJilu1PSdrS9mf5u8Z4M3CZQwAwnuWiwcOieDAWV76AP1fSSRFR+uIaDdLLLAzba0g6RunC3pIulXRwRNxfsI8fSrpeaWqZJO0vaauIGJgaLmQGjqyabWb7OEn3RcSn82MK+2Jcs31zRLwgTxc9UtJXJB0WEdv2eWjAEAOXOQQA49yTSnd9T5f0Y0n/7u9wMIFsJmlfSSfaXkKpeO2ZEfFQf4eFAdSzLIyI+JvSAiJ1eoekz0g6Lz/+Rd42SMgMHNmStidFxDxJr5B0YOU5rmcw3rX+tneV9O2IuND2Z/s5IKATMocAoDDbz5G0n6TdlKZ0ni7p0nxSC3Qt17Y6XdIqkn4g6ciImN3XQWFg9CILw/axGmH1zIj4YLd9dOhzxdT04C1WQmbgyGx/UtJrJP1N0rpKKxWH7Y0knRIRL+rrAIER2L5A0j2SdpK0pdKNw9+UrL0GlED9HgAoLCJ+GxGH50KiP5b0PUkf6vOwMOBsL2l79zyF5mil1Sg3UPodu6ifY8PAWTIXR5VSFkZ1paRSWRgzlJbqvk7S7pXvW1/F2N7U9g2SbpE0y/Z1eQWzQbKZpN8pZQZea/tA2ywmkUXE5yR9WNJ3Je0QC+5uL6GU9QaMZ2+QdImkV0XE35VWVvxoX0cEdEDmEAAUZnstpek//yXpQUlnS/rhIN7NxviRMwuukHRiRFzT9tzX68jEwMTU6yyMTitxFW5/4FcrqyIzEJhYbK/baXtE/LHXYwFGQnAIAAqyfZWkFZUCQudKGlJ0leV2sbhsr0CAEaXY3k7SM5SmvD6Stz1L0gqlV9Cpe0n26jS5kbaNZ7aXVKpH8nalVeNOlfR9SS9WCnQ9q3+jA9AN2zOVptla0rKS1ldazv55fR0Y0IbgEAAUZHuuFtTZqB5grVQLY4OeDwoDrR+1W4CSehAcmgirlZEZCDSE7S0lvS8i3tnvsQBVBIcAoEdsr0bmEMbK9lsrDz8j6fDq8xFxSm9HBCya7Ye1IKj5FEn/aj2lFCgvVk/H9qpKfxs75D5/IekzEfFgqT7qRmYg0Cy2Z0bEpv0eB1BFcAgACrL9nU53gmyvLeknETFoRVIxjtRduwUYJLaXlfQeSRtJmqm00tfj/R3V2JAZCEx8tg+tPFxCacWy1SPiVX0aEtBRqRUpAADJUrZPk/SWiHhSkmxvIukCSUf0dWSYCLijAyxwiqTHlTKFXi3puZIO6eeAFsOMyvcLZQYCmBBWrHw/T9KFSnUpgXGFzCEAKMi2JR0vaVWlFcu2lXSWpPdGxAX9HBsGX921W4BBUp2WYXuSpN8M8t8HmYEAgH4icwgACooUcT/Q9tclXSlpPUl7R8S1fR0YBlZ77RbbD7WeUuHaLcCAmT+FLCLmpdj8QOOOLTAB2V5T0n9Lep7SamWSpIh4ed8GBXRAcAgACqrUj7CkTZRW0Hmj7TdK1I/A2EXEiov+KaCRNmsLli6XHxM4BTCefF8pi/y1SnXS3irpvr6OCOiAaWUAUFDbylILYWUpAEBLL1d1A9Aftq+LiK1s3xwRL8jbpkfE1v0eG1BF5hAAlHWWpBUjYsgdoZxS/HB/hgQAGI/IDAQaoTUF9s+2d5X0J0mr9XE8QEdL9HsAADDBfF3Sizts30HS13o8FgAAAPTXZ22vLOnDkj4i6TuSPtTfIQELY1oZABTUSh0e5rlZEfG8Xo8JAAAAAEbCtDIAKOspIzxHtiYAAEAD2D5shKcjIo7s2WCAUeBCBQDKutf2Nu0bbW8tVqYAAABoikc6fEnSAZI+1q9BAcNhWhkAFJQDQ2dL+q6k6/LmKZLeImnfiPh1n4YGAACAPrC9oqSDlQJDZ0v6akTc299RAUMRHAKAwmw/TdL7JD0/b5ol6RucBAAAADSH7dUkHSrpTZJOkXRMRDzY31EBnREcAgAAAACgINtflrSXpBMkHRcR/+zzkIARERwCgIJsz5TU6cBqpeKDL+jxkAAAANBjtp+U9KikeRp6btg6J1ypLwMDhkFwCAAKsr3eSM9HxB96NRYAAAAAGA2CQwAAAAAAAA3GUvYAUAPbe9n+ve1/2H7I9sO2H+r3uAAAAACgHZlDAFAD27Ml7RYRt/V7LAAAAAAwEjKHAKAefyUwBAAAAGAQkDkEADWwfYykp0s6X2mlCklSRJzXrzEBAAAAQCeT+j0AAJigVpL0L0k7V7aFJIJDAAAAAMYVMocAoCDbB0XEN/o9DgAAAAAYLWoOAUBZ7+j3AAAAAABgLAgOAQAAAAAANBjTygCgINvzlGoNLfSUpIiIlXo8JAAAAAAYEQWpAaCsmRGxRb8HAQAAAACjxbQyAAAAAACABiM4BABlnSNJtk+xvUpro+1VbZ/Ut1EBAAAAwDCoOQQANbB9Q/v0sk7bAAAAAKDfyBwCgHosYXvV1gPbq4k6bwAAAADGIS5UAKAeX5X0K9vn5Md7S/pcH8cDAAAAAB0xrQwAamJ7E0kvzw8vj4hb+zkeAAAAAOiE4BAAAAAAAECDUXMIAAAAAACgwQgOAQAAAAAANBjBIQAAAAAAgAYjOAQAAAAAANBgBIcAAAAAAAAa7P8BZcTiibWYARIAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mi.sort_values(ascending=False).plot.bar(figsize=(20, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "sel_ = SelectKBest(mutual_info_classif, k = 40).fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "mi_features = list(X_train.columns[ ~ sel_.get_support()].values)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "for i in mi_features:\n", + " if i in categorical_features:\n", + " mi_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "for i in mi_features:\n", + " if i in numerical_features:\n", + " numerical_features.remove(i)\n", + "\n", + "for i in mi_features:\n", + " if i in categorical_features:\n", + " categorical_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Height', 'Temp', 'CK', 'HiCKMB']" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mi_features" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "X_train.drop(labels=mi_features, axis=1, inplace=True)\n", + "X_test.drop(labels=mi_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 41), (9, 41))" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.2 Fisher Score" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import chi2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "categorical features" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "f_score = chi2(X_train[categorical_features], y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The smaller ones have more correlations" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Cancer 0.887949\n", + "SoreThroat 0.842057\n", + "Cough 0.703238\n", + "Headache 0.638344\n", + "Hemoptysis 0.594525\n", + "NauseaNVomit 0.356552\n", + "ChestPain 0.356552\n", + "Diarrhea 0.333947\n", + "Sex 0.302537\n", + "Fever 0.202574\n", + "Catarrh 0.159040\n", + "Hypertention 0.154388\n", + "SoreMuscle 0.105717\n", + "Hyperlipedia 0.099153\n", + "Lung 0.062605\n", + "PoorAppetite 0.060289\n", + "Phlegm 0.046410\n", + "AgeG1 0.037459\n", + "DM 0.008457\n", + "Fatigue 0.000049\n", + "dtype: float64" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_values = pd.Series(f_score[1])\n", + "p_values.index = X_train[categorical_features].columns\n", + "p_values.sort_values(ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['AgeG1', 'Phlegm', 'Fatigue', 'DM'], dtype=object)" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_values[p_values<0.05].index.values" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "# for c in categorical_features:\n", + "# if c not in p_values[p_values<0.05].index.values:\n", + "# categorical_features.remove(c)\n", + "# print(c)\n", + "# X_train.drop(labels=c, axis=1, inplace=True)\n", + "# X_test.drop(labels=c, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 41), (9, 41))" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.3 Univariate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Non-categorical features" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_selection import f_classif, f_regression" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "univariate = f_classif(X_train[numerical_features], y_train)\n", + "univariate = pd.Series(univariate[1])\n", + "univariate.index = X_train[numerical_features].columns\n", + "univariate.sort_values(ascending=False, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIEAAAIkCAYAAACJNzumAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2nklEQVR4nO3de5hlZ1kn7N9DYgQhETANOEkgQeJgBAQM4IBHBCcIBEGQxEFlhEEdIyCMGtQPFdThIDiDZByiIgwOhCCHL5hgkA9Eh4OmOYYkZGhigKBCcxBQ5BB4vj/2rlApqruru3fVqtrvfV9XXb3XIb2fldq99tq//a7nre4OAAAAAMvtBlMXAAAAAMDmEwIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAM4MipnvjYY4/tE088caqnBwAAAFg6b3vb2z7W3bvW2zZZCHTiiSdm9+7dUz09AAAAwNKpqg/sa5vbwQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAWwoBKqq06rqyqraU1Vnr7P91lX1hqp6R1W9u6p+cPGlAgAAAHCoDhgCVdURSc5Jcr8kpyQ5s6pOWbPbryY5v7vvkuSMJP9j0YUCAAAAcOiO3MA+d0+yp7uvSpKqOi/Jg5JcvmqfTnLM/PHXJ/n7RRa51olnX7iZf/26rn7a/bf8OQEAAAAWZSMh0HFJPrRq+Zok91izz68neW1V/VySGye5z0KqAwAAAGAhFtUY+swkL+ju45P8YJIXVdVX/d1V9Ziq2l1Vu/fu3bugpwYAAADgQDYSAn04yQmrlo+fr1vtUUnOT5LufkuSGyY5du1f1N3ndvep3X3qrl27Dq1iAAAAAA7aRkKgS5KcXFUnVdVRmTV+vmDNPh9M8v1JUlXfklkIZKgPAAAAwDZxwBCou69NclaSi5NckdksYJdV1VOq6vT5bk9M8p+q6l1JXpLkkd3dm1U0AAAAAAdnI42h090XJblozbonr3p8eZJ7LbY0AAAAABZlUY2hAQAAANjGhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADGBDIVBVnVZVV1bVnqo6e53tv1tV75z//N+q+qeFVwoAAADAITvyQDtU1RFJzkly3yTXJLmkqi7o7stX9unun1+1/88lucsm1AoAAADAIdrISKC7J9nT3Vd19xeSnJfkQfvZ/8wkL1lEcQAAAAAsxkZCoOOSfGjV8jXzdV+lqm6T5KQkr9/H9sdU1e6q2r13796DrRUAAACAQ7ToxtBnJPnT7v7Sehu7+9zuPrW7T921a9eCnxoAAACAfdlICPThJCesWj5+vm49Z8StYAAAAADbzkZCoEuSnFxVJ1XVUZkFPRes3amqbp/kZknestgSAQAAADhcBwyBuvvaJGcluTjJFUnO7+7LquopVXX6ql3PSHJed/fmlAoAAADAoTrgFPFJ0t0XJblozbonr1n+9cWVBQAAAMAiLboxNAAAAADbkBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgABsKgarqtKq6sqr2VNXZ+9jnR6rq8qq6rKpevNgyAQAAADgcRx5oh6o6Isk5Se6b5Jokl1TVBd19+ap9Tk7ypCT36u5PVtUtNqtgAAAAAA7eRkYC3T3Jnu6+qru/kOS8JA9as89/SnJOd38ySbr7o4stEwAAAIDDsZEQ6LgkH1q1fM183WrfnOSbq+pNVfXWqjptUQUCAAAAcPgOeDvYQfw9Jyf53iTHJ/mrqrpjd//T6p2q6jFJHpMkt771rRf01AAAAAAcyEZGAn04yQmrlo+fr1vtmiQXdPcXu/vvkvzfzEKh6+nuc7v71O4+ddeuXYdaMwAAAAAHaSMh0CVJTq6qk6rqqCRnJLlgzT6vymwUUKrq2MxuD7tqcWUCAAAAcDgOGAJ197VJzkpycZIrkpzf3ZdV1VOq6vT5bhcn+XhVXZ7kDUl+obs/vllFAwAAAHBwNtQTqLsvSnLRmnVPXvW4kzxh/gMAAADANrOR28EAAAAA2OGEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMYEMhUFWdVlVXVtWeqjp7ne2PrKq9VfXO+c+jF18qAAAAAIfqyAPtUFVHJDknyX2TXJPkkqq6oLsvX7PrS7v7rE2oEQAAAIDDtJGRQHdPsqe7r+ruLyQ5L8mDNrcsAAAAABZpIyHQcUk+tGr5mvm6tX64qt5dVX9aVScspDoAAAAAFmJRjaFfneTE7r5Tkr9I8sL1dqqqx1TV7qravXfv3gU9NQAAAAAHspEQ6MNJVo/sOX6+7jrd/fHu/vx88Q+TfPt6f1F3n9vdp3b3qbt27TqUegEAAAA4BBsJgS5JcnJVnVRVRyU5I8kFq3eoqm9ctXh6kisWVyIAAAAAh+uAs4N197VVdVaSi5MckeT53X1ZVT0lye7uviDJY6vq9CTXJvlEkkduYs0AAAAAHKQDhkBJ0t0XJblozbonr3r8pCRPWmxpAAAAACzKohpDAwAAALCNCYEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGcOTUBbBvJ5594STPe/XT7j/J8wIAAACbx0ggAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgABsKgarqtKq6sqr2VNXZ+9nvh6uqq+rUxZUIAAAAwOE6YAhUVUckOSfJ/ZKckuTMqjplnf2OTvK4JH+z6CIBAAAAODwbGQl09yR7uvuq7v5CkvOSPGid/Z6a5OlJPrfA+gAAAABYgI2EQMcl+dCq5Wvm665TVXdNckJ3X7i/v6iqHlNVu6tq9969ew+6WAAAAAAOzWE3hq6qGyR5dpInHmjf7j63u0/t7lN37dp1uE8NAAAAwAZtJAT6cJITVi0fP1+34ugkd0jyl1V1dZLvSHKB5tAAAAAA28dGQqBLkpxcVSdV1VFJzkhywcrG7v5Udx/b3Sd294lJ3prk9O7evSkVAwAAAHDQDhgCdfe1Sc5KcnGSK5Kc392XVdVTqur0zS4QAAAAgMN35EZ26u6Lkly0Zt2T97Hv9x5+WQAAAAAs0mE3hgYAAABg+xMCAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADGBDU8TDZjvx7Asned6rn3b/SZ4XAAAAtpqRQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACOnLoAGM2JZ1+45c959dPuv+XPCQAAwPZiJBAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAAD2FAIVFWnVdWVVbWnqs5eZ/tPV9WlVfXOqvo/VXXK4ksFAAAA4FAdMASqqiOSnJPkfklOSXLmOiHPi7v7jt195yTPSPLsRRcKAAAAwKHbyEiguyfZ091XdfcXkpyX5EGrd+juT69avHGSXlyJAAAAAByuIzewz3FJPrRq+Zok91i7U1X9bJInJDkqyb0XUh0AAAAAC7GwxtDdfU53f1OSX0ryq+vtU1WPqardVbV77969i3pqAAAAAA5gIyHQh5OcsGr5+Pm6fTkvyQ+tt6G7z+3uU7v71F27dm24SAAAAAAOz0ZCoEuSnFxVJ1XVUUnOSHLB6h2q6uRVi/dP8r7FlQgAAADA4TpgT6DuvraqzkpycZIjkjy/uy+rqqck2d3dFyQ5q6ruk+SLST6Z5Cc2s2gAAAAADs5GGkOnuy9KctGadU9e9fhxC64LAAAAgAVaWGNoAAAAALYvIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAjpy6AGB5nXj2hVv+nFc/7f5b/pwAAAA7wYZGAlXVaVV1ZVXtqaqz19n+hKq6vKreXVX/X1XdZvGlAgAAAHCoDhgCVdURSc5Jcr8kpyQ5s6pOWbPbO5Kc2t13SvKnSZ6x6EIBAAAAOHQbGQl09yR7uvuq7v5CkvOSPGj1Dt39hu7+7HzxrUmOX2yZAAAAAByOjYRAxyX50Krla+br9uVRSV6z3oaqekxV7a6q3Xv37t14lQAAAAAcloXODlZVj0hyapJnrre9u8/t7lO7+9Rdu3Yt8qkBAAAA2I+NzA724SQnrFo+fr7ueqrqPkl+Jcn3dPfnF1MeAAAAAIuwkZFAlyQ5uapOqqqjkpyR5ILVO1TVXZI8L8np3f3RxZcJAAAAwOE4YAjU3dcmOSvJxUmuSHJ+d19WVU+pqtPnuz0zyU2SvKyq3llVF+zjrwMAAABgAhu5HSzdfVGSi9ase/Kqx/dZcF0AO8aJZ184yfNe/bT7T/K8AADAzrTQxtAAAAAAbE9CIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAEIgQAAAAAGIAQCAAAAGIAQCAAAAGAAQiAAAACAAQiBAAAAAAYgBAIAAAAYgBAIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAEIgAAAAgAFsKASqqtOq6sqq2lNVZ6+z/bur6u1VdW1VPXTxZQIAAABwOA4YAlXVEUnOSXK/JKckObOqTlmz2weTPDLJixddIAAAAACH78gN7HP3JHu6+6okqarzkjwoyeUrO3T31fNtX96EGgEAAAA4TBu5Hey4JB9atXzNfB0AAAAAO8SWNoauqsdU1e6q2r13796tfGoAAACAoW0kBPpwkhNWLR8/X3fQuvvc7j61u0/dtWvXofwVAAAAAByCjYRAlyQ5uapOqqqjkpyR5ILNLQsAAACARTpgCNTd1yY5K8nFSa5Icn53X1ZVT6mq05Okqu5WVdckeViS51XVZZtZNAAAAAAHZyOzg6W7L0py0Zp1T171+JLMbhMDAAAAYBva0sbQAAAAAExDCAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwgCOnLgCAnePEsy+c5Hmvftr9J3leAABYJkYCAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAI6cugAA2I5OPPvCLX/Oq592/y1/TgAAxmEkEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADAAIRAAAADAAIRAAAAAAAMQAgEAAAAMQAgEAAAAMAAhEAAAAMAAhEAAAAAAAxACAQAAAAxACAQAAAAwACEQAAAAwACEQAAAAAADEAIBAAAADEAIBAAAADCADYVAVXVaVV1ZVXuq6ux1tn9tVb10vv1vqurEhVcKAAAAwCE7YAhUVUckOSfJ/ZKckuTMqjplzW6PSvLJ7r5dkt9N8vRFFwoAAADAoTtyA/vcPcme7r4qSarqvCQPSnL5qn0elOTX54//NMlzq6q6uxdYKwCwCU48+8Itf86rn3b/LX9OAIDRbSQEOi7Jh1YtX5PkHvvap7uvrapPJfmGJB9bRJEAAIdrirArmSbwGinYc6yba5TXbyKcBsZQBxqsU1UPTXJadz96vvxjSe7R3Wet2uc9832umS+/f77Px9b8XY9J8pj54r9NcuWiDmSDjs04wZRjXU6jHOsox5k41mU1yrGOcpyJY11WoxzrKMeZONZlNMpxJo51WU1xrLfp7l3rbdjISKAPJzlh1fLx83Xr7XNNVR2Z5OuTfHztX9Td5yY5dyMVb4aq2t3dp071/FvJsS6nUY51lONMHOuyGuVYRznOxLEuq1GOdZTjTBzrMhrlOBPHuqy227FuZHawS5KcXFUnVdVRSc5IcsGafS5I8hPzxw9N8nr9gAAAAAC2jwOOBJr3+DkrycVJjkjy/O6+rKqekmR3d1+Q5I+SvKiq9iT5RGZBEQAAAADbxEZuB0t3X5TkojXrnrzq8eeSPGyxpW2KyW5Fm4BjXU6jHOsox5k41mU1yrGOcpyJY11WoxzrKMeZONZlNMpxJo51WW2rYz1gY2gAAAAAdr6N9AQCAAAAYIcTAgEAAAAMQAjEjlFVt566BgAAANiphgyBquq+U9fAIXnV1AVMqaqOraqaug4OT1U9fSPrdrqqOqKq3jt1HWyNqrr91DVslZGOlZ2rqm5ZVX9UVa+ZL59SVY+auq6t5HqfnaKqHldVx9TMH1XV26vqB6aua9Gq6mvWWXfsFLVspqq6YVU9vqqeW1U/VVUbmoxrKw0ZAmU2pf0QqurSqWtYoGECkKr6jqr6y6p6RVXdparek+Q9ST5SVadNXd8iVdUJVXVeVf11Vf3y6jeIqnrVhKVtlvUuSu+35VVssu7+UpIrl30EX1VdWlXvXufn0qp699T1baHXTl3AFhriWKtqW81kstlWwpIl8oIkFyf5N/Pl/5vk8VMVM5Glut4f5f1m/iXST1XVU6vqXmu2/epUdW2yn+zuTyf5gSQ3S/JjSZ42bUmLU1XfV1XXJPmHqnptVZ24avMyvqe+MMmpSS7N7Br/WdOW89W2XSq1KFV1wb42JfmGraxls1XVQ/a1KcmttrKWTXZcVT1nXxu7+7FbWcwme26SX07y9Ulen+R+3f3W+TfQL0ny51MWt2DPT/LyJG9N8qgkb6yqB3b3x5PcZtLKFqiqfibJf05y2zUXa0cnedM0VW26myW5rKr+Nsm/rKzs7tOnK2nhHjB1AVtlP+ffSnLTLSxl041yrFV1831tSvKDW1nLVqiqu+5rU5I7b2EpW+HY7j6/qp6UJN19bVV9aeqiFm2k6/185f2mklyYJfw3Ove8JF+X5G+TPKeq3tjdT5hve0iS35ysss2z8kX3DyZ5UXdftmSj/5+R5N/Pj+uhSf6iqn6su9+a5fyS/5TuvmOSVNUfZfZa3laWNgRK8l1JHpHkn9esryR33/pyNtVLk/zvJL3OthtucS2b6V+TvG3qIrbIkd392iSpqqfMT5Lp7vcu13tCkmRXd//P+eOfq6pHJPmrqjo967+md6oXJ3lNkv+a5OxV6z/T3Z+YpqTNUVW3S3LLJP/Pmk3fleQftr6izdPdH5i6hi30H5M8Mcnn19l25hbXstlGOda9ST6Q61+E93z5FpNUtLkuSfLGrP+h46ZbW8qm+5eq+obM30er6juSfGrakjbFMNf7q99vqurzS/z+c/fuvlOSVNVzk/yPqnpFZufepbsInntbVb02yUlJnlRVRyf58sQ1LdJR3X1ZknT3n1bVFUleUVW/lOW61l/xxZUH8wB+ylrWtcwh0FuTfLa737h2Q1VdOUE9m+ndSX6nu9+zdkNV3WeCejbLx7v7hVMXsUVWn/j/dc22ZTtZfk1V3bC7P5ck3f0nVfWPmQ1jv/G0pS1Od38qswvwM6vqiMxCkiOT3KSqbtLdH5y0wMX6b0me1N3Xux21qj6R5LezZEP0k+tGZD49sw/ONf/p7j5m0sIW65Ik7+nuN6/dUFW/vvXlbKpRjvWqJN+/3vmnqj40QT2b7YokP9Xd71u7YQmP9wlJLkjyTVX1piS7kjx02pI2xUjX+6M4auVBd1+b5DFV9eTMRsbfZLKqNtejMhuNeFV3f3Ye4P7HaUtaqC9W1a26+x+TZD4i6PuT/FmSb5q2tE3xbVX16fnjSnKj+fK2uTZc2hCou/fZY6O7v3sra9kCj0/y6X1se/AW1rHZvjB1AVvo21adLG605kSyTKO7kuQPk9wjs29nkyTd/bqqelhmw0eXSlWdleTXk3wkXwn7OsmdpqppE9xybQCUJN196Zr7wJfJM5I8sLuvmLqQTfTQJJ9bb0N3n7TFtWy2UY71v2V22+Z6IfTSnX8zO/fuqx/mz21hHZuuu99eVd+T5N9mdu1wZXd/8QD/2Y4z0vX+mtsZb1RVd8mqkTHd/fatr2pT7K6q07r7utYH3f2Uqvr7JL8/YV2bqZOcktktf0/J7EvQZbrePzuzLz//cWVFd18zP0edNVlVm6S7j5i6hgOp7mUbVDBTVa/t7qXrqj6y+YfHT85HVKSqvi/JD2U2lP253T1SSMQOVVV7ktxj3vNoKVXV+7r75H1s29Pdt9vqmjZbVb2pu+914D13tqq6c5LbJblsyQMvBlNVP9zdL5+6jkXZR7/ITyW5tLs/utX1cPiq6g372dzdfe8tK4aFqqrfz+yLwXt397dU1c2SvLa77zZxaQvj+mF7WeYQ6B3dfZep69gKVfXMJHu6+3lr1v9UkpO6++z1/8udpar+JsmDu/vv5yeS12XWX+VOSb7Y3Y+esr5F2k+zziTJMvWQGeX1u2J+EXff+RDnpVRVL0ny+u7+gzXrH53ZsT98mso2T1X998wa8b8qq/rIdPcrpqpp0ebD8R+RWW+2eyT5r2t/x8tiPzPtrAzlXpqRe1V1myT/0t0fm/eN+c4k7+/uV05c2paqqg9299LMZlhVFyb5d0lWgoPvzezf7klJntLdL5qotIWqqs9k/dvkt81tFxy80c5LVfX27r7r6s+vVfWu7v62qWtbhJGuH5LrnZfW9ts7MrP+SJPfjbXMIdBVSf7LvrYv2YX525Kc2mt+mVV1gyTv7u47TFPZYlXVu1c1ivudJF/u7l+cH+c7l+yi/MtJrkmyEhRc7yTS3bfd+qo2x0Cv35WZLb41s+H5F+b6YcGzp6hrM1TVLZO8MrNbOFeauZ+a2X3+D165J3yZVNUfr7O6u/snt7yYTVJVlyW526p+BX++TN9SrlZV78zsgu3FSV6dNb3ZlqUh6/zC/CcyO9bzktwnyV9mdpH+ru5+/GTFbbGq+lB3nzB1HYtSVRcn+fHu/sh8+ZZJ/ldmzXX/alneW0czP/f+aJLbz1ddkeTFS/bl4P7OS+/u7sdNV93mmH/Rfc8kl8zDoF2ZjQRaigENI10/rKeqbpLkZ5P8VJJXdvcTJy5peXsCZTa19gOyfhf5TrI0IVCSr137ATpJuvvLSza94OpjuXeSlWlPl+04k+Q5Sb4vs6nDX5Lk/6z3O14So7x+j57/+cH5z1FZ1fxwmcw/dNxzfsvmygeNC7v79ROWtSmq6qzufm53L1MDx335fHd/Nkm6++PzoHYpdfedq+r2mX1gfnGSy+d/vnbJRvGdkeRbMpuO+YNJbjW/SD8yyTunLGwCy/Yee8JKADT30fm6T1TV0vUGWlFVt8iqXirrNT3fqarqWzJrjnxxkndkdl18tyS/XFX37u73TlnfAo14XnpOZl+e3aKqfiuzvnS/Om1JCzXM9cNqVXXTzHr3/nhm1xB32y7tIJY5BPrAMn0DewD/WlUn95rZLqrq5Hz1zFI72eur6vzMppi+WWZvhKmqb8w+GnjuVN39+HkA8r1JfizJ782njvz97v67SYtbvCFev939G1PXsNW6+w35yq0Iy+onkzx36iK2yG2r6oL548ps1qGV5XT36dOUtTnmH6h+LcmvVdXDMxtF8fQkz5y0sMX63Lyf3heq6v2rLtKvraql67NXVZdm37cO3XKLy9lsf1lVf5bkZfPlH56vu3GSf5qsqk1SVacneVaSf5NZ4HWbzEbJfOuUdS3YU5M8rrvPX72yqn44yW9l9jteBkOdl5Kku//3fGT892d2PvqhJeubM9T1Q1Udm+SJSR6e5PlJ7rLS03a7WOYQaJlGEBzIk5O8pqp+M9e/9eJJmaWPy+Lxmf1j+sYk39lfmeXidkn220NnJ5qPjnlDVb0js29FnprkfUmW7R7aUV6/SZKqenW++kPIp5LsTvK87l6qQJOl8qA1y78zSRVbpKqOy+zc++Akn0zy85l9U7tMbjpvIFxJjlnVTLgyG1G9bB4wdQFb6GeTPCSzXirJ7D3mlt39L5mNNF42T03yHUle1913mY9EfcTENS3aHbv7oWtXdvfLq+q3pyhok4x2XlrxkSR/ndnn8xtV1V17eWZ8G+r6IbNJi/Ym+eMkn03yqNU3N2yHFhDL3BPoTkmO7u43rVl/ryT/2N3vn6ayzVFVd0jyC/nKrReXJXlmrzNN8zKo2bSYP5rkYUn+Lskruvv3pq1qcebf1D0os9BrV2a3L56/TMOaVxvp9TtvILwrs9v8ktnv+NOZBUPHdPePTVUbB6+qrs3sDf6rNmWgpqRVda+177c7WVW9MbNbOM9P8vIk1xu+vSz9N/bRy+o6g9zmuLTWuVZ6eXcv5cjFqtrd3adW1bsy+9b9y8vUWDf5SvPgg92204x4XqqqpyZ5ZJL35ytfFHYPMOPbsl0/JElV/Xr2c4vxdrg7YJlDoD9L8qS1HyKr6o5Jfru7HzhNZRyqqvrmzPoznJnkY0lemuS/dPdtJi1sE1TVv2Q26ue8+Z/X+4e6TI3NR1NVl6xthreyrqou6+5lGrq+9GqsmSiPSPIjSY7LrKnje6rqAUl+OcmNlun/Q1VdnVUX4qs3Zcma8+9LLdmU6UlSVSdkdjvfcUlek9mXDV+cb3tVd//QhOUtxEjXSqtV1euS/FBms8Yem9ktYXfr7ntOWdciVdU1SdYbQVBJHr9Mjc33ZRnPS0lSVVdmNtJrKW93G+n6YadY5hDoqz5ordp2aXffcatr2izz3im/kuQTmb05/EGS78osTX50d18yYXkLM58x66+TPKq798zXXbWMF+NV9YLsO0FethmHhnj9rqiqK5L8+5VRXVV16yQXd/e3jBQoLIuRfmfz89IJSf42s1la/j6zWzfP7u5XTVfZ4lXVEd39panrmFIt2ZTpSVJVf5HZyK63JnlUkm9P8sB5o9Kl+Lc80rXSavMR1J/LLBD5D5ndNvS/t0sT1kWoql/b3/btMLpgsy3jeSlJqurlSX6muz86dS2bYaTrhySpqhtmNtL/k5nNMPoLSb47s882T+3uj01YXpLl7gl00/1su9FWFbFF/jizhpXHJPmbzPqoPDizD9LPzewf2zJ4SGb9Gd5QVX+e2SiZZe399Lh9NRCrqlO3uphNNsrrd8UTk/yfqnp/Zq/fk5L85/kF7AsnrYxD8bIkqaoXZvbv9p/myzdL8qxlCmwzu2C70/w2ixsm+cck37RMH7JWeVtV/Ux3v2XqQia0jO+vu7r7f84f/1xVPSLJX82bCi/Lt6IjXStdZ97raMVSvpfuL+SpqsdvYSlTWtbX8n9N8o6qek+Sz6+sXKKGySNdPySzzzVfTHLjzK7735PZZ5rvTPKCbIP+dMs8EuglSV7f3X+wZv2jk9y3ux8+TWWLV1Xv7O47zx/v6e7brbdtWazql3NmZlPF/68kr+zu105a2AJV1SVJfqC7P7lm/X2TPH+ZhvyO9vpNkqr62iS3ny9eqRn0zrfeKIJlGVmwYm3PiWXqQbFWVd0jye8leVeSX1x7Lh7BMn7jXlWXJfn21efcqrpPkv+Z5Mbd/Y2TFbdgI1wrrTZvHvz0JLfILCgYrS/b0v17Xc+yHuf83PS8JJcm+fLK+u5+42RFLdBI1w9JUlXv6e47VNWRSa7p7lut2rYtepUt80igxyd5ZVX9h1x/xqGjMhtlsEy+vOrxp/ezbSnMv+15cZIXz79tf1iSX0qyTBc252b2Ld59u3tvklTVj2Y2Bej9J61s8YZ4/VbVvbv79atmuVjxTVWlz9POd4OqutlKWFBVN8/yvcfevqrePX+8MsXrynK6+07TlLV43f038yDop5PsrqrX5PoX5o+drLgFqrGmTE+SP8xsdOl1H6y6+3VV9bAkz5isqk0wyLXSas/I7Na+ZZpW+2AszQiZAc9LSfLZ7n7O1EVsomGuH+a+kCTdfW1V/f2abdviVvOlHQm0omZTRF4341B3v37KejZDVX02yZ7M/1HNH2e+fNvuvvFUtXHoqurHkvxikh/I7L7Sn05yWndfPWVdizbK67eqfqO7f20fs14sVZ+nEVXVj2fW4PBl81UPS/Jb3f2i6aparHn/rlsm+dCaTSdkNuvmnq/+r3auqvqGzJoIn5LZN7SrQ6CluN2kqtZrFlyZ/U6f1N0/uMUlwSGpqjd1972mrmMqyzRCZsTzUlU9O7PbwC7I9W8HW4op4ge8fvhovnIr7sPnjzNf/pHunjzMXLZvKa8zv9/wp5PcLrOhdX/U3ddOW9Wm+ZUkb8qsse4XJ66FBenuF1XV55K8I8kHk3zndmgktgmGeP1296/N/1y6qU1Juvt/VdXuzG67SJKHdPflU9a0CX43swvwD6xeWVXHzLctzaybVfXTmTVyfGZmDXZ71bbHT1XXoq3+XdY604lPVddmqaon72dzd/dTt6wYFm13Vb00yaty/Q/RSzPKtqo+k32PkFmafqejnZfmVm4d/45V6zpfuabY6Ya5fpj7hVWPd6/ZtnZ5Eks7Emj+RvDFzGZIuF+Sq7v78ZMWtUmq6neS3DOzHiOXZvaB+s1J3tzdn5iyNg7NqqGwleQ2SfYmua7p4TINmxzt9VtVt0zy20n+TXffr6pOSfLvuvuPJi4N9muwWTf/JMkT1pupZcm+cR9qOvGqeuI6q78uyaOTfEN332SLS2JBjLJdHqOdl0Yw0vXDeqrqJknS3f88dS0rljkEuu4FNW/K9LfL3IAqSarqqMz6Ht0zyb+b//xTd58yaWEctNGGTSbjvH7nvUX+OMmvdPe3zc9P71j2N0B2vqp6X3efvI9t12vqvsyq6kPL0px/1OnEk6Sqjk7yuMymij8/s9n8lnJ6ZthJRjovVdUjuvtPquoJ623v7mdvdU2bYdTrh6q6Q5IXJbl5Zl/s703y49192aSFJbnB1AVsoutuK1ni28DWulFm02x//fzn7zObcpud53eTfKq7P7D6J8mn5tuW0Siv32O7+/zM+4vMz0/bokkcHMDuqvpPa1fOZ9182zr7L6tl+vbsIUn+IbOJCP6gqr4/S9Rgdj1VdfOq+s0k786sLcJdu/uXBEA7U1X94vzP36uq56z9mbo+DslI56Wvm/959D5+lsWo1w/nZjaq+DbzEcRPTPIHB/hvtsQyjwT6Ur5y+8zKvbKfzRJOGVlV5yb51iSfyexD81uTvHXEKW2XxUjDJkd7/VbVXyb54SR/0d13rarvSPL07v6eaSuD/ZvfyvjKzGa9+KpZN7v7H6eqbdEO1Huju5eqp+Io04lX1TMz+4B5bpJzttPQfA5NVT2wu19dVT+x3vZlaeI+ohHOS1X1gu5+5NR1bLaRrh9WW286+O0yRfzShkAjqao/T3Jskvdk1kvlLUne0365O9ZIwyZHef3Om8m+eb747MxmLbwsya4kD+vud01UGhyUEWbdHNmq6cQf3t3fP3U9izS/zeTzSa7N9UO+pfuCEJbJsp6Xqurty96uZLXRrh+q6pVJ3p7ZLWFJ8ogk397dD56uqhkh0JKoqspsNMU95z93yGy2pbeszErEzlFVL0ny+u7+gzXrH53kvt398Gkq2xwjvH7XNMB+b5IPJ/mrJC9Z0lnfAGBTVdWrs59bNLv79C0sBw5KVb03s5FO697utixTxI9qHl7+RpLvzOw89ddJfmM73O0gBFoyVXV8kntl9mHzAZnNdnHTSYvioA08bHLpX7+jNMAGgM1WVSu3Uj8kya2S/Ml8+cwkH+nun5+kMNiA+a3Hl2T9EKi7e1mmiB9OVR2R5HXd/X1T17KepbqnfVRV9dh8ZQTFFzOfXjvJ8zObcpsdprs/kuSea4ZNXriMwyYHfP2u1wB7GY8TADZVd78xSarqWd196qpNr66q3ROVBRu1R9CznLr7S1X15ar6+u7+1NT1rCUEWg4nJnlZkp/v7n+YuBYWqLvfkOQNU9exyU7MAK/fdRpgvznJs7fDkFAA2OFuXFW37e6rkqSqTkpy44lrAsb2z0kuraq/yFcmrEp3P3a6kmaEQEugu58wdQ1wqAZ6/d46ydcmeV9m/YCuSfJPUxYEAEvi8Un+sqquyuzWmtskecykFcGB/eLUBbCpXjH/2Xb0BALYIiM0wAaArVRVN0jy0CT/b2aTLyTJe7v789NVBQdWVZdm/cbmKzMW3mmLS2LB5r1Ab5/Z7/nK7v7CxCUlEQIBbLkRGmADwFapqt1regLBtldVt9nf9u7+wFbVwuJV1Q8meV6S92cW7J2U5Ke6+zWTFhYhEMCW2E8D7DcnubS7vzxheQCwY1XV05J8LMlLc/3eG5+YrChgaFX13iQP6O498+Vvymyin9vv/7/cfEIggC1QVc9O8qYkb17mBtgAsNWq6u/WWd3dfdstLwYOUlU9JMnTk9wisxEjK7eDHTNpYRyWqrqku++2armS/O3qdVMRAgEAAMAEqmpPkgd29xVT18LiVNXvZ9ak/vzMegI9LMkHk7wuSbp7sqbRQiAAAGBHqqpbJPnZzCZeSJLLkpzT3R+drirYuKp6U3ffa+o6WKyq+uP9bO7u/sktK2YNIRAAALDjVNW9krw4yQuSvG2++tuT/ESS/9Ddb5qoNNiwqvrvSW6V5FVJrpvVbsqRIhy6qjqru587dR37IwQCAAB2nKp6a5Kf6e53rFl/5yTP6+57TFIYHIR9jBiZdKQIh66q3t7dd526jv05cuoCAAAADsExawOgJOnud1bV0VMUBBu1MmKku//j1LUwlhtMXQAAAMAhqKq62Torbx6fc9j+jPRZTneqqk+v8/OZqvr01MUlTo4AAMDO9LtJXltV31NVR89/vjfJa+bbALbapd19zDo/R3f3MVMXl+gJBAAA7FBV9YAkv5jrzw72zO5+9XRVwYFV1bVJPrvepsx6Am2LwICDU1Xv6O67TF3H/ugJBAAA7Ejd/WdJ/mzqOuAQXLrdwwIOycumLuBAhEAAAMCOU1XHJvnZJJ9I8sdJnpHku5O8P8kTu3vPhOUBY/qaqnryPrZ1dz91S6tZh55AAADATvTiJF+b5JuT/G2Sq5M8NLORQX84XVmwIS9Lkqp6YVXddGVlVd2sqp4/WVUcrn9O8i9rfjrJo5L80oR1XUdPIAAAYMepqnd197dVVSX5QHffetW2d3b3naerDjZmvR4yO6GvDAdWVUcneVxmAdD5SZ7V3R+dtiojgQAAgJ3pS8ns/ookH1uz7ctbXw4ckhtU1c1WFqrq5tG2ZUerqptX1W8meXdmv8u7dvcvbYcAKPHiAgAAdqbbVtUFmc2mtPI48+WTpisLDsqzkrylqlYaCj8syW9NWA+HoaqemeQhSc5Ncsfu/ueJS/oqbgcDAAB2nKr6nv1t7+43blUtcDiq6pQk954vvr67L5+yHg5dVX05yeeTXJtZL6DrNmU2cPGYSQpbXYgQCAAAAGD5uR0MAADYcarq3fvb3t132qpaAHYKIRAAALATfTmz2y1enOTVSf512nIAtj+3gwEAADtSVd0+yZlJHpjk8swCodd297WTFgawTQmBAACAHa+qHp7knCRP7+5nTl0PwHYkBAIAAHakqjouyRlJHpzkk0nOT/LK7TgtM8B2IAQCAAB2nKp6Y5KjMwt+Xp7k46u3d/cnpqgLYDsTAgEAADtOVV2dWWPorPozSSpJd/dtt7wogG1OCAQAACyVqrq5kUAAX+0GUxcAAABwsKrqD/ex/vgkf7XF5QDsCEIgAABgJ/qaqvqTqrruM01VnZJZAPQ705UFsH0JgQAAgJ3okUk+m+SlVXVEVd0zycVJHtvdL5iyMIDtSk8gAABgx6qq5yS5S5LbJPmR7n7rxCUBbFtCIAAAYMepqt/LbFawSvKjSd6e5IqV7d392IlKA9i2jpy6AAAAgEOwex+PAdgHI4EAAIAdp6pumOTo7t67Zv2uJJ/p7s9NUxnA9qUxNAAAsBM9J8l3rbP+O5P87hbXArAjGAkEAADsOFX1tu7+9n1su6y7v3WrawLY7owEAgAAdqKv2882n3MA1uHkCAAA7EQfraq7r11ZVXdLsned/QGG53YwAABgx5kHQOcneUGSt81Xn5rkx5Oc0d1/M1FpANuWEAgAANiRquqWSf5zkjvMV12W5Lnd/dHpqgLYvoRAAAAAAAM4cuoCAAAADlZVXZpkvW+0K0l39522uCSAbc9IIAAAYMepqtvsb3t3f2CragHYKYRAAAAAAAMwRTwAALBjVdVDqup9VfWpqvp0VX2mqj49dV0A25GRQAAAwI5VVXuSPLC7r5i6FoDtzkggAABgJ/uIAAhgY4wEAgAAdqyq+u9JbpXkVUk+v7K+u18xVU0A25Up4gEAgJ3smCSfTfIDq9Z1EiEQwBpGAgEAADtOVZ3V3c+dug6AnURPIAAAYCf6yakLANhphEAAAAAAA3A7GAAAsONU1bWZ9QL6qk1JuruP2eKSALY9jaEBAICd6NLuvsvURQDsJG4HAwAAABiAEAgAANiJXpYkVfXCqrrpysqqullVPX+yqgC2MT2BAACAHauq3rH2trD11gFgJBAAALCz3aCqbrayUFU3j96nAOtycgQAAHayZyV5S1W9bL78sCS/NWE9ANuW28EAAIAdrapOSXLv+eLru/vyKesB2K6EQAAAAAAD0BMIAAAAYABCIAAAAIABCIEAAAAABiAEAgAAABiAEAgAAABgAP8/7PXho8k8TIQAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "univariate.sort_values(ascending=False).plot.bar(figsize=(20, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PCT1 0.802511\n", + "WBC1 0.430778\n", + "AST 0.376614\n", + "CKMB 0.351257\n", + "WBC2 0.207957\n", + "Weight 0.191531\n", + "Cr 0.062507\n", + "dtype: float64" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "univariate[univariate > 0.05]" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weight\n", + "AST\n", + "CKMB\n", + "Cr\n", + "WBC1\n", + "WBC2\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "for n in numerical_features:\n", + " if n in univariate[univariate > 0.05].index.values:\n", + " numerical_features.remove(n)\n", + " print(n)\n", + " X_train.drop(labels=n, axis=1, inplace=True)\n", + " X_test.drop(labels=n, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(77, 35)" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.3.4 ROC-AUC" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor\n", + "from sklearn.metrics import roc_auc_score, mean_squared_error" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [], + "source": [ + "# loop to build a tree, make predictions and get the roc-auc\n", + "# for each feature of the train set\n", + "\n", + "roc_values = []\n", + "for feature in X_train.columns:\n", + " clf = DecisionTreeClassifier()\n", + " clf.fit(X_train[feature].fillna(0).to_frame(), y_train)\n", + " y_scored = clf.predict_proba(X_test[feature].fillna(0).to_frame())\n", + " roc_values.append(roc_auc_score(y_test, y_scored[:, 1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "cTnITimes 0.775\n", + "CRP2 0.675\n", + "Fever 0.675\n", + "NTproBNP 0.650\n", + "SoreThroat 0.650\n", + "Headache 0.625\n", + "LYM1 0.625\n", + "N2L1 0.625\n", + "ALB2 0.625\n", + "PCT1 0.550\n", + "AgeG1 0.550\n", + "Fatigue 0.500\n", + "ChestPain 0.500\n", + "Age 0.500\n", + "Lung 0.500\n", + "Hemoptysis 0.500\n", + "Phlegm 0.500\n", + "CAD 0.500\n", + "PoorAppetite 0.500\n", + "Diarrhea 0.500\n", + "NauseaNVomit 0.500\n", + "CRP1 0.500\n", + "cTnICKMBOrdinal1 0.500\n", + "cTnI 0.500\n", + "SoreMuscle 0.500\n", + "LDH 0.500\n", + "Sex 0.450\n", + "ALB1 0.450\n", + "Hypertention 0.425\n", + "DM 0.400\n", + "Cancer 0.400\n", + "Hyperlipedia 0.400\n", + "Catarrh 0.375\n", + "Sympton 0.375\n", + "Cough 0.325\n", + "dtype: float64" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# let's add the variable names and order it for clearer visualisation\n", + "roc_values = pd.Series(roc_values)\n", + "roc_values.index = X_train.columns\n", + "roc_values.sort_values(ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# and now let's plot\n", + "roc_values.sort_values(ascending=False).plot.bar(figsize=(20, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# a roc auc value of 0.5 indicates random decision\n", + "# let's check how many features show a roc-auc value\n", + "# higher than random\n", + "\n", + "len(roc_values[roc_values > 0.5])" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Sex 0.450\n", + "LDH 0.500\n", + "ALB1 0.450\n", + "Sympton 0.375\n", + "Cough 0.325\n", + "Catarrh 0.375\n", + "Hypertention 0.425\n", + "Hyperlipedia 0.400\n", + "DM 0.400\n", + "Cancer 0.400\n", + "dtype: float64" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roc_values[roc_values < 0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "roc_features = roc_values[roc_values < 0.5].index.values" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "for i in roc_features:\n", + " if i in numerical_features:\n", + " numerical_features.remove(i)\n", + "\n", + "for i in roc_features:\n", + " if i in categorical_features:\n", + " categorical_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Sex', 'LDH', 'ALB1', 'Sympton', 'Cough', 'Catarrh',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Cancer'], dtype=object)" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roc_features" + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": {}, + "outputs": [], + "source": [ + "for i in corr_features:\n", + " if i in categorical_features:\n", + " corr_features.remove(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "# X_train.drop(labels=roc_features, axis=1, inplace=True)\n", + "# X_test.drop(labels=roc_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 35), (9, 35))" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "import sklearn.ensemble\n", + "import sklearn.metrics\n", + "import xgboost as xgb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Cross Validation**" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import cross_val_score" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "def cv_score(classifier, X, y, scoring):\n", + " return cross_val_score(classifier, X, y, cv=5, scoring=scoring)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Decision Tree**" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dt = sklearn.tree.DecisionTreeClassifier()\n", + "\n", + "dt_f1 = cv_score(dt, X_train, y_train, 'f1')\n", + "\n", + "dt.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5476190476190477\n" + ] + } + ], + "source": [ + "print(np.mean(dt_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Random Forest**" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestClassifier()" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rf = sklearn.ensemble.RandomForestClassifier(n_estimators=100)\n", + "\n", + "rf_f1 = cv_score(rf, X_train, y_train, 'f1')\n", + "\n", + "rf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6457142857142858\n" + ] + } + ], + "source": [ + "print(np.mean(rf_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**SVM**" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.svm import SVC" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "SVC(probability=True)" + ] + }, + "execution_count": 199, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svc = SVC(probability=True)\n", + "\n", + "svc_f1 = cv_score(svc, X_train, y_train, 'f1')\n", + "\n", + "svc.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6733333333333333\n" + ] + } + ], + "source": [ + "print(np.mean(svc_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**XGBoost**" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[20:15:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "[20:15:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[20:15:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "[20:15:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n", + "[20:15:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[20:15:04] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "data": { + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n", + " colsample_bynode=1, colsample_bytree=0.7, gamma=0, gpu_id=-1,\n", + " importance_type='gain', interaction_constraints='',\n", + " learning_rate=0.300000012, max_delta_step=0, max_depth=4,\n", + " min_child_weight=0, missing=nan, monotone_constraints='()',\n", + " n_estimators=100, n_jobs=8, num_parallel_tree=1, random_state=0,\n", + " reg_alpha=4, reg_lambda=1, scale_pos_weight=9, subsample=0.8,\n", + " tree_method='exact', validate_parameters=1, verbosity=None)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a model\n", + "# Params from: https://www.kaggle.com/aharless/swetha-s-xgboost-revised\n", + "xgbc = xgb.XGBClassifier(\n", + " max_depth = 4,\n", + " subsample = 0.8,\n", + " colsample_bytree = 0.7,\n", + " colsample_bylevel = 0.7,\n", + " scale_pos_weight = 9,\n", + " min_child_weight = 0,\n", + " reg_alpha = 4,\n", + " objective = 'binary:logistic'\n", + ")\n", + "\n", + "xgbc_f1 = cv_score(xgbc, X_train, y_train, 'f1')\n", + "\n", + "# Fit the models\n", + "xgbc.fit(np.array(X_train), np.array(y_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.698095238095238\n" + ] + } + ], + "source": [ + "print(np.mean(xgbc_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Save Models" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 226, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"2-type-model-4.pkl\", 'wb') as f:\n", + " pickle.dump([dt, rf, svc, xgbc], f)\n", + "with open(\"dataset/2-type-dataset.pkl\", 'wb') as f:\n", + " pickle.dump([X_train, X_test, y_train, y_test], f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Models" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"2-type-model-4.pkl\", 'rb') as f:\n", + " [dt, rf, svc, xgbc] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"dataset/2-type-dataset.pkl\", 'rb') as f:\n", + " [X_train, X_test, y_train, y_test] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Prediction**" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "dt_pred = dt.predict(X_test)\n", + "rf_pred = rf.predict(X_test)\n", + "svc_pred = svc.predict(X_test)\n", + "xgbc_pred = xgbc.predict(np.array(X_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision Tree\n", + "Precision: 0.8888888888888888\n", + "Recal: 0.75\n", + "F1: 0.8571428571428571\n", + "CI: 0.20532285794453828\n", + "\n", + "Random Forest\n", + "Precision: 0.7777777777777778\n", + "Recal: 0.75\n", + "F1: 0.75\n", + "CI: 0.27161661029914536\n", + "\n", + "SVC\n", + "Precision: 0.6666666666666666\n", + "Recal: 0.25\n", + "F1: 0.4\n", + "CI: 0.3079842869168074\n", + "\n", + "XGBoost\n", + "Precision: 0.7777777777777778\n", + "Recal: 1.0\n", + "F1: 0.8\n", + "CI: 0.27161661029914536\n" + ] + } + ], + "source": [ + "print(\"Decision Tree\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, dt_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, dt_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, dt_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, dt_pred)) * (sklearn.metrics.accuracy_score(y_test, dt_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"Random Forest\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, rf_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, rf_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, rf_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, rf_pred)) * (sklearn.metrics.accuracy_score(y_test, rf_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"SVC\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, svc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, svc_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, svc_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, svc_pred)) * (sklearn.metrics.accuracy_score(y_test, svc_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"XGBoost\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, xgbc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, xgbc_pred))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, xgbc_pred))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, xgbc_pred)) * (sklearn.metrics.accuracy_score(y_test, xgbc_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7 Interpreatation" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [], + "source": [ + "class_names = ['normal', 'severe']" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[27]" + ] + }, + "execution_count": 184, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Patient No. 21 --> 27 after shuffuling\n", + "[i for i, x in enumerate(X_train['LDH']==254) if x]" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[59]" + ] + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Patient No. 36 --> 59 after shuffuling\n", + "[i for i, x in enumerate(X_train['NTproBNP']==384) if x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Patient No. 21 (27) & 36 (59)**" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [], + "source": [ + "from lime import lime_tabular\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'cTnITimes', 'cTnI', 'cTnICKMBOrdinal1', 'LDH',\n", + " 'NTproBNP', 'PCT1', 'LYM1', 'N2L1', 'CRP1', 'ALB1', 'CRP2', 'ALB2',\n", + " 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis', 'SoreThroat',\n", + " 'Catarrh', 'Headache', 'ChestPain', 'Fatigue', 'SoreMuscle', 'Diarrhea',\n", + " 'PoorAppetite', 'NauseaNVomit', 'Hypertention', 'Hyperlipedia', 'DM',\n", + " 'Lung', 'CAD', 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [], + "source": [ + "categorical_features = [0, 2, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]\n", + "categorical_names = {}\n", + "for c in categorical_features:\n", + " categorical_names[c] = [\"False\", \"True\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Decision Tree**" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.0\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "class_names = ['normal', 'severe']\n", + "\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', dt.predict_proba(np.array(X_train)[idx, :].reshape(1, -1))[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = class_names, \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = dt.predict_proba, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Random Forest**" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.23\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "class_names = ['normal', 'severe']\n", + "\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', rf.predict_proba(np.array(X_train)[idx, :].reshape(1, -1))[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = class_names, \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = rf.predict_proba, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**SVM**" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.8801943355780342\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "class_names = ['normal', 'severe']\n", + "\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', svc.predict_proba(np.array(X_train)[idx, :].reshape(1, -1))[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = class_names, \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = svc.predict_proba, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Gradient Boosted Trees**" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [], + "source": [ + "def predict_fn_xbg(X):\n", + " X_data = pd.DataFrame(data=X, columns=xgbc.get_booster().feature_names)\n", + " return xgbc.predict_proba(X_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Patient id: 59\n", + "Probability(normal) = 0.05998808\n", + "True class: severe\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "idx = 59\n", + "print('Patient id: %d' % idx)\n", + "print('Probability(normal) =', xgbc.predict_proba(X_train[idx:idx+1])[0][0])\n", + "print('True class: %s' % class_names[y_train[idx]])\n", + "explainer = lime_tabular.LimeTabularExplainer(np.array(X_train), \n", + " feature_names= X_train.columns, class_names = ['normal', 'severe'], \n", + " categorical_features = categorical_features, categorical_names = categorical_names,\n", + " discretize_continuous=True)\n", + "exp = explainer.explain_instance(np.array(X_train)[idx, :], predict_fn = predict_fn_xbg, num_features = 10)\n", + "\n", + "%matplotlib inline\n", + "fig = exp.as_pyplot_figure()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/4_type_with_ct_score.ipynb b/4_type_with_ct_score.ipynb new file mode 100644 index 0000000..7b8269a --- /dev/null +++ b/4_type_with_ct_score.ipynb @@ -0,0 +1,1183 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interpretable ML - COVID19\n", + "> Interpretable ML Research for COVID19\n", + "- toc:true\n", + "- branch: master\n", + "- badges: true\n", + "- comments: true\n", + "- author: Han Wu\n", + "- categories: [jupyter]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 0. Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 493, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 494, + "metadata": {}, + "outputs": [], + "source": [ + "np.set_printoptions(suppress=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 495, + "metadata": {}, + "outputs": [], + "source": [ + "covid = pd.read_csv(\"dataset/covid.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 496, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AVG age for severity 0: 36.833333333333336\n", + "AVG age for severity 1: 47.45283018867924\n", + "AVG age for severity 2: 54.3125\n", + "AVG age for severity 3: 69.4\n" + ] + } + ], + "source": [ + "print(\"AVG age for severity 0:\", np.mean(covid[covid.Severity03 == 0].Age.to_numpy()))\n", + "print(\"AVG age for severity 1:\", np.mean(covid[covid.Severity03 == 1].Age.to_numpy()))\n", + "print(\"AVG age for severity 2:\", np.mean(covid[covid.Severity03 == 2].Age.to_numpy()))\n", + "print(\"AVG age for severity 3:\", np.mean(covid[covid.Severity03 == 3].Age.to_numpy()))" + ] + }, + { + "cell_type": "code", + "execution_count": 497, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(92, 74)" + ] + }, + "execution_count": 497, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "covid.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Data Wash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that has NULL value" + ] + }, + { + "cell_type": "code", + "execution_count": 498, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "remove_columns = ['MedNum', 'LVEF', 'SO2', 'PO2', 'YHZS', 'RML', 'RUL', 'RLL', 'LUL', 'LLL']" + ] + }, + { + "cell_type": "code", + "execution_count": 499, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that records time rather than biomarkers" + ] + }, + { + "cell_type": "code", + "execution_count": 500, + "metadata": {}, + "outputs": [], + "source": [ + "remove_columns = ['Onset2Admi', 'Onset2CT1', 'Onset2CTPositive1', 'Onset2CTPeak']" + ] + }, + { + "cell_type": "code", + "execution_count": 501, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Patients that have no records" + ] + }, + { + "cell_type": "code", + "execution_count": 502, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.Weight != \" \"]" + ] + }, + { + "cell_type": "code", + "execution_count": 503, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.cTnI != \" \"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "String to Float" + ] + }, + { + "cell_type": "code", + "execution_count": 504, + "metadata": {}, + "outputs": [], + "source": [ + "covid['Weight'] = covid['Weight'].astype(np.float64)\n", + "covid['Height'] = covid['Height'].astype(np.float64)\n", + "covid['cTnITimes'] = covid['cTnITimes'].astype(np.float64)\n", + "covid['cTnI'] = covid['cTnI'].astype(np.float64)\n", + "covid['NTproBNP'] = covid['NTproBNP'].astype(np.float64)\n", + "covid['Cr'] = covid['Cr'].astype(np.float64)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Train Test Split" + ] + }, + { + "cell_type": "code", + "execution_count": 505, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import preprocessing\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 506, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder" + ] + }, + { + "cell_type": "code", + "execution_count": 507, + "metadata": {}, + "outputs": [], + "source": [ + "ohe = OneHotEncoder(drop='if_binary').fit(covid.Severity03.to_numpy().reshape(-1, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 508, + "metadata": {}, + "outputs": [], + "source": [ + "y = covid.Severity03.to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 509, + "metadata": {}, + "outputs": [], + "source": [ + "y = ohe.transform(y.reshape(-1, 1)).toarray()" + ] + }, + { + "cell_type": "code", + "execution_count": 510, + "metadata": {}, + "outputs": [], + "source": [ + "# Use Both\n", + "covid = covid.drop([\"Severity01\", \"Severity03\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 511, + "metadata": {}, + "outputs": [], + "source": [ + "# Use None\n", + "# covid = covid.drop([\"Severity01\", \"Severity03\", \"CTScore\", \"AIVolumeP\"], axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Patient No. is irrrelevant" + ] + }, + { + "cell_type": "code", + "execution_count": 512, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop([\"No\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 513, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "X = covid\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.9, random_state = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 514, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 57), (9, 57))" + ] + }, + "execution_count": 514, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 515, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Height', 'Weight', 'BMI', 'Temp', 'CTScore',\n", + " 'AIVolumeP', 'cTnITimes', 'cTnI', 'cTnICKMBOrdinal1',\n", + " 'cTnICKMBOrdinal2', 'AST', 'LDH', 'CK', 'CKMB', 'HBDH', 'HiCKMB',\n", + " 'NTproBNP', 'Cr', 'PCT1', 'WBC1', 'NEU1', 'LYM1', 'N2L1', 'CRP1',\n", + " 'ALB1', 'PCT2', 'WBC2', 'NEU2', 'LYM2', 'N2L2', 'CRP2', 'ALB2',\n", + " 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis', 'SoreThroat',\n", + " 'Catarrh', 'Headache', 'ChestPain', 'Fatigue', 'SoreMuscle',\n", + " 'Stomachache', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Arrythmia',\n", + " 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 515, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 384, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 0., 0.],\n", + " [0., 0., 1., 0.],\n", + " [0., 1., 0., 0.],\n", + " [0., 1., 0., 0.],\n", + " [0., 0., 1., 0.],\n", + " [0., 0., 1., 0.],\n", + " [0., 1., 0., 0.],\n", + " [0., 0., 1., 0.],\n", + " [1., 0., 0., 0.]])" + ] + }, + "execution_count": 384, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Feature Selection (Same as 2-type)" + ] + }, + { + "cell_type": "code", + "execution_count": 385, + "metadata": {}, + "outputs": [], + "source": [ + "cor_features = ['PCT2', 'Stomachache', 'Arrythmia', \n", + " 'LYM2',\n", + " 'NEU1',\n", + " 'NEU2',\n", + " 'BMI',\n", + " 'N2L2',\n", + "# 'AIVolumeP',\n", + " 'cTnICKMBOrdinal2',\n", + " 'HBDH',\n", + " 'Height', 'CK', 'HiCKMB', 'Cr', 'PCT1',\n", + " 'Weight', 'AST', 'CKMB', 'WBC1', 'WBC2']" + ] + }, + { + "cell_type": "code", + "execution_count": 386, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\pandas\\core\\frame.py:4305: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\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", + " return super().drop(\n" + ] + } + ], + "source": [ + "# X_train.drop(labels=cor_features, axis=1, inplace=True)\n", + "# X_test.drop(labels=cor_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 387, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 37), (9, 37))" + ] + }, + "execution_count": 387, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 388, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Temp', 'CTScore', 'AIVolumeP', 'cTnITimes',\n", + " 'cTnI', 'cTnICKMBOrdinal1', 'LDH', 'NTproBNP', 'LYM1', 'N2L1', 'CRP1',\n", + " 'ALB1', 'CRP2', 'ALB2', 'Sympton', 'Fever', 'Cough', 'Phlegm',\n", + " 'Hemoptysis', 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain',\n", + " 'Fatigue', 'SoreMuscle', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 388, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 516, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "import sklearn.ensemble\n", + "import sklearn.metrics\n", + "import xgboost as xgb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Cross Validation**" + ] + }, + { + "cell_type": "code", + "execution_count": 517, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import cross_val_score" + ] + }, + { + "cell_type": "code", + "execution_count": 518, + "metadata": {}, + "outputs": [], + "source": [ + "def cv_score(classifier, X, y, scoring):\n", + " return cross_val_score(classifier, X, y, cv=5, scoring=scoring)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Decision Tree**" + ] + }, + { + "cell_type": "code", + "execution_count": 519, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 519, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dt = sklearn.tree.DecisionTreeClassifier()\n", + "\n", + "dt_f1 = cv_score(dt, X_train, y_train, 'f1_micro')\n", + "\n", + "dt.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 520, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7116666666666667\n" + ] + } + ], + "source": [ + "print(np.mean(dt_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Random Forest**" + ] + }, + { + "cell_type": "code", + "execution_count": 573, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 574, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestClassifier()" + ] + }, + "execution_count": 574, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rf = sklearn.ensemble.RandomForestClassifier(n_estimators=100)\n", + "\n", + "rf_f1 = cv_score(rf, X_train, y_train, 'f1_micro')\n", + "\n", + "rf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 575, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7682480737653151\n" + ] + } + ], + "source": [ + "print(np.mean(rf_f1))" + ] + }, + { + "cell_type": "code", + "execution_count": 576, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random Forest\n", + "Precision: 0.5555555555555556\n", + "Recal: 0.5555555555555556\n", + "F1: 0.6666666666666667\n", + "CI: 0.32464394339996944\n" + ] + } + ], + "source": [ + "rf_pred = rf.predict(X_test)\n", + "print(\"Random Forest\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, rf_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, rf_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, rf_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, rf_pred)) * (sklearn.metrics.accuracy_score(y_test, rf_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**SVM**" + ] + }, + { + "cell_type": "code", + "execution_count": 525, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.svm import SVC" + ] + }, + { + "cell_type": "code", + "execution_count": 526, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "data": { + "text/plain": [ + "SVC(decision_function_shape='ovo', probability=True)" + ] + }, + "execution_count": 526, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svc = SVC(probability=True, decision_function_shape='ovo')\n", + "\n", + "svc_f1 = cv_score(svc, X_train, ohe.inverse_transform(y_train), 'f1_micro')\n", + "\n", + "svc.fit(X_train, ohe.inverse_transform(y_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 527, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6375\n" + ] + } + ], + "source": [ + "print(np.mean(svc_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**XGBoost**" + ] + }, + { + "cell_type": "code", + "execution_count": 538, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:29:23] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:29:23] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:29:23] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:29:23] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:29:23] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:29:23] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:29:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:29:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:29:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:29:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:29:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:29:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "data": { + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n", + " colsample_bynode=1, colsample_bytree=0.7, gamma=0, gpu_id=-1,\n", + " importance_type='gain', interaction_constraints='',\n", + " learning_rate=0.300000012, max_delta_step=0, max_depth=4,\n", + " min_child_weight=1, missing=nan, monotone_constraints='()',\n", + " n_estimators=100, n_jobs=8, num_parallel_tree=1,\n", + " objective='multi:softprob', random_state=0, reg_alpha=4,\n", + " reg_lambda=1, scale_pos_weight=9, subsample=0.8,\n", + " tree_method='exact', validate_parameters=1, verbosity=None)" + ] + }, + "execution_count": 538, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a model\n", + "# Params from: https://www.kaggle.com/aharless/swetha-s-xgboost-revised\n", + "xgbc = xgb.XGBClassifier(\n", + "# booster = 'gbtree',\n", + " max_depth = 4,\n", + "# eta = 0.3,\n", + " subsample = 0.8,\n", + " colsample_bytree = 0.7,\n", + " colsample_bylevel = 0.7,\n", + " scale_pos_weight = 9,\n", + " min_child_weight = 1,\n", + " reg_alpha = 4,\n", + " objective = 'multi:softmax'\n", + ")\n", + "\n", + "xgbc_f1 = cv_score(xgbc, X_train, ohe.inverse_transform(y_train), 'f1_micro')\n", + "\n", + "# Fit the models\n", + "xgbc.fit(np.array(X_train), np.array(ohe.inverse_transform(y_train)))" + ] + }, + { + "cell_type": "code", + "execution_count": 539, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8441666666666666\n" + ] + } + ], + "source": [ + "print(np.mean(xgbc_f1))" + ] + }, + { + "cell_type": "code", + "execution_count": 540, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "XGBoost\n", + "Precision: 0.7777777777777778\n", + "Recal: 0.7777777777777778\n", + "F1: 0.7777777777777778\n", + "CI: 0.27161661029914536\n" + ] + } + ], + "source": [ + "xgbc_pred = ohe.transform(xgbc.predict(np.array(X_test)).reshape(-1, 1)).toarray()\n", + "print(\"XGBoost\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, xgbc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, xgbc_pred)) * (sklearn.metrics.accuracy_score(y_test, xgbc_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Save Models" + ] + }, + { + "cell_type": "code", + "execution_count": 485, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 577, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"4-type-model-4-ct.pkl\", 'wb') as f:\n", + " pickle.dump([dt, rf, svc, xgbc], f)\n", + "with open(\"dataset/4-type-dataset-ct.pkl\", 'wb') as f:\n", + " pickle.dump([X_train, X_test, y_train, y_test], f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Models" + ] + }, + { + "cell_type": "code", + "execution_count": 487, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"4-type-model-4-ct.pkl\", 'rb') as f:\n", + " [dt, rf, svc, xgbc] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 488, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"dataset/4-type-dataset-ct.pkl\", 'rb') as f:\n", + " [X_train, X_test, y_train, y_test] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Prediction**" + ] + }, + { + "cell_type": "code", + "execution_count": 531, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 532, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "dt_pred = dt.predict(X_test)\n", + "rf_pred = rf.predict(X_test)\n", + "svc_pred = ohe.transform(svc.predict(X_test).reshape(-1, 1)).toarray()\n", + "xgbc_pred = ohe.transform(xgbc.predict(np.array(X_test)).reshape(-1, 1)).toarray()" + ] + }, + { + "cell_type": "code", + "execution_count": 533, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 534, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision Tree\n", + "Precision: 0.5555555555555556\n", + "Recal: 0.5555555555555556\n", + "F1: 0.5555555555555556\n", + "CI: 0.32464394339996944\n", + "\n", + "Random Forest\n", + "Precision: 0.5555555555555556\n", + "Recal: 0.5555555555555556\n", + "F1: 0.6666666666666667\n", + "CI: 0.32464394339996944\n", + "\n", + "SVC\n", + "Precision: 0.5555555555555556\n", + "Recal: 0.5555555555555556\n", + "F1: 0.5555555555555556\n", + "CI: 0.32464394339996944\n", + "\n", + "XGBoost\n", + "Precision: 0.7777777777777778\n", + "Recal: 0.7777777777777778\n", + "F1: 0.7777777777777778\n", + "CI: 0.27161661029914536\n" + ] + } + ], + "source": [ + "print(\"Decision Tree\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, dt_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, dt_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, dt_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, dt_pred)) * (sklearn.metrics.accuracy_score(y_test, dt_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"Random Forest\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, rf_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, rf_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, rf_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, rf_pred)) * (sklearn.metrics.accuracy_score(y_test, rf_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"SVC\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, svc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, svc_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, svc_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, svc_pred)) * (sklearn.metrics.accuracy_score(y_test, svc_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"XGBoost\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, xgbc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, xgbc_pred)) * (sklearn.metrics.accuracy_score(y_test, xgbc_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/4_type_without_ct_score.ipynb b/4_type_without_ct_score.ipynb new file mode 100644 index 0000000..78cabf0 --- /dev/null +++ b/4_type_without_ct_score.ipynb @@ -0,0 +1,1200 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interpretable ML - COVID19\n", + "> Interpretable ML Research for COVID19\n", + "- toc:true\n", + "- branch: master\n", + "- badges: true\n", + "- comments: true\n", + "- author: Han Wu\n", + "- categories: [jupyter]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 0. Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [], + "source": [ + "np.set_printoptions(suppress=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [], + "source": [ + "covid = pd.read_csv(\"dataset/covid.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AVG age for severity 0: 36.833333333333336\n", + "AVG age for severity 1: 47.45283018867924\n", + "AVG age for severity 2: 54.3125\n", + "AVG age for severity 3: 69.4\n" + ] + } + ], + "source": [ + "print(\"AVG age for severity 0:\", np.mean(covid[covid.Severity03 == 0].Age.to_numpy()))\n", + "print(\"AVG age for severity 1:\", np.mean(covid[covid.Severity03 == 1].Age.to_numpy()))\n", + "print(\"AVG age for severity 2:\", np.mean(covid[covid.Severity03 == 2].Age.to_numpy()))\n", + "print(\"AVG age for severity 3:\", np.mean(covid[covid.Severity03 == 3].Age.to_numpy()))" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(92, 74)" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "covid.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Data Wash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that has NULL value" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "remove_columns = ['MedNum', 'LVEF', 'SO2', 'PO2', 'YHZS', 'RML', 'RUL', 'RLL', 'LUL', 'LLL']" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Features that records time rather than biomarkers" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [], + "source": [ + "remove_columns = ['Onset2Admi', 'Onset2CT1', 'Onset2CTPositive1', 'Onset2CTPeak']" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop(remove_columns, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove Patients that have no records" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.Weight != \" \"]" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid[covid.cTnI != \" \"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "String to Float" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [], + "source": [ + "covid['Weight'] = covid['Weight'].astype(np.float64)\n", + "covid['Height'] = covid['Height'].astype(np.float64)\n", + "covid['cTnITimes'] = covid['cTnITimes'].astype(np.float64)\n", + "covid['cTnI'] = covid['cTnI'].astype(np.float64)\n", + "covid['NTproBNP'] = covid['NTproBNP'].astype(np.float64)\n", + "covid['Cr'] = covid['Cr'].astype(np.float64)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Train Test Split" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import preprocessing\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [], + "source": [ + "ohe = OneHotEncoder(drop='if_binary').fit(covid.Severity03.to_numpy().reshape(-1, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [], + "source": [ + "y = covid.Severity03.to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [], + "source": [ + "y = ohe.transform(y.reshape(-1, 1)).toarray()" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [], + "source": [ + "# Use Both\n", + "# covid = covid.drop([\"Severity01\", \"Severity03\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [], + "source": [ + "# Use None\n", + "covid = covid.drop([\"Severity01\", \"Severity03\", \"CTScore\", \"AIVolumeP\"], axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Patient No. is irrrelevant" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [], + "source": [ + "covid = covid.drop([\"No\"], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "X = covid\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.9, random_state = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((77, 55), (9, 55))" + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Height', 'Weight', 'BMI', 'Temp', 'cTnITimes',\n", + " 'cTnI', 'cTnICKMBOrdinal1', 'cTnICKMBOrdinal2', 'AST', 'LDH', 'CK',\n", + " 'CKMB', 'HBDH', 'HiCKMB', 'NTproBNP', 'Cr', 'PCT1', 'WBC1', 'NEU1',\n", + " 'LYM1', 'N2L1', 'CRP1', 'ALB1', 'PCT2', 'WBC2', 'NEU2', 'LYM2', 'N2L2',\n", + " 'CRP2', 'ALB2', 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis',\n", + " 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue',\n", + " 'SoreMuscle', 'Stomachache', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Arrythmia',\n", + " 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 0., 0.],\n", + " [0., 0., 1., 0.],\n", + " [0., 1., 0., 0.],\n", + " [0., 1., 0., 0.],\n", + " [0., 0., 1., 0.],\n", + " [0., 0., 1., 0.],\n", + " [0., 1., 0., 0.],\n", + " [0., 0., 1., 0.],\n", + " [1., 0., 0., 0.]])" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Feature Selection (Same as 2-type)" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [], + "source": [ + "cor_features = ['PCT2', 'Stomachache', 'Arrythmia', \n", + " 'LYM2',\n", + " 'NEU1',\n", + " 'NEU2',\n", + " 'BMI',\n", + " 'N2L2',\n", + " 'cTnICKMBOrdinal2',\n", + " 'HBDH',\n", + " 'Height', 'CK', 'HiCKMB', 'Cr', 'PCT1',\n", + " 'Weight', 'AST', 'CKMB', 'WBC1', 'WBC2']" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [], + "source": [ + "# X_train.drop(labels=cor_features, axis=1, inplace=True)\n", + "# X_test.drop(labels=cor_features, axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# X_train.shape, X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Sex', 'Age', 'AgeG1', 'Height', 'Weight', 'BMI', 'Temp', 'cTnITimes',\n", + " 'cTnI', 'cTnICKMBOrdinal1', 'cTnICKMBOrdinal2', 'AST', 'LDH', 'CK',\n", + " 'CKMB', 'HBDH', 'HiCKMB', 'NTproBNP', 'Cr', 'PCT1', 'WBC1', 'NEU1',\n", + " 'LYM1', 'N2L1', 'CRP1', 'ALB1', 'PCT2', 'WBC2', 'NEU2', 'LYM2', 'N2L2',\n", + " 'CRP2', 'ALB2', 'Sympton', 'Fever', 'Cough', 'Phlegm', 'Hemoptysis',\n", + " 'SoreThroat', 'Catarrh', 'Headache', 'ChestPain', 'Fatigue',\n", + " 'SoreMuscle', 'Stomachache', 'Diarrhea', 'PoorAppetite', 'NauseaNVomit',\n", + " 'Hypertention', 'Hyperlipedia', 'DM', 'Lung', 'CAD', 'Arrythmia',\n", + " 'Cancer'],\n", + " dtype='object')" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "import sklearn.ensemble\n", + "import sklearn.metrics\n", + "import xgboost as xgb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Cross Validation**" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import cross_val_score" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [], + "source": [ + "def cv_score(classifier, X, y, scoring):\n", + " return cross_val_score(classifier, X, y, cv=5, scoring=scoring)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Decision Tree**" + ] + }, + { + "cell_type": "code", + "execution_count": 213, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 213, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dt = sklearn.tree.DecisionTreeClassifier()\n", + "\n", + "dt_f1 = cv_score(dt, X_train, y_train, 'f1_micro')\n", + "\n", + "dt.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.4525\n" + ] + } + ], + "source": [ + "print(np.mean(dt_f1))" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision Tree\n", + "Precision: 0.3333333333333333\n", + "Recal: 0.3333333333333333\n", + "F1: 0.3333333333333333\n", + "CI: 0.3079842869168074\n" + ] + } + ], + "source": [ + "dt_pred = dt.predict(X_test)\n", + "print(\"Decision Tree\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, dt_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, dt_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, dt_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, dt_pred)) * (sklearn.metrics.accuracy_score(y_test, dt_pred))) / len(X_test)))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Random Forest**" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 217, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestClassifier()" + ] + }, + "execution_count": 217, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rf = sklearn.ensemble.RandomForestClassifier(n_estimators=100)\n", + "\n", + "rf_f1 = cv_score(rf, X_train, y_train, 'f1_micro')\n", + "\n", + "rf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 218, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.526854897337656\n" + ] + } + ], + "source": [ + "print(np.mean(rf_f1))" + ] + }, + { + "cell_type": "code", + "execution_count": 219, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random Forest\n", + "Precision: 0.3333333333333333\n", + "Recal: 0.3333333333333333\n", + "F1: 0.46153846153846156\n", + "CI: 0.3079842869168074\n" + ] + } + ], + "source": [ + "rf_pred = rf.predict(X_test)\n", + "print(\"Random Forest\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, rf_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, rf_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, rf_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, rf_pred)) * (sklearn.metrics.accuracy_score(y_test, rf_pred))) / len(X_test)))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**SVM**" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.svm import SVC" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "data": { + "text/plain": [ + "SVC(decision_function_shape='ovo', probability=True)" + ] + }, + "execution_count": 184, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svc = SVC(probability=True, decision_function_shape='ovo')\n", + "\n", + "svc_f1 = cv_score(svc, X_train, ohe.inverse_transform(y_train), 'f1_micro')\n", + "\n", + "svc.fit(X_train, ohe.inverse_transform(y_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6375\n" + ] + } + ], + "source": [ + "print(np.mean(svc_f1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**XGBoost**" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:31:29] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:31:29] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:31:29] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:31:29] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:31:29] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:31:29] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:31:30] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:31:30] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:31:30] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:31:30] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\xgboost\\sklearn.py:892: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n", + " warnings.warn(label_encoder_deprecation_msg, UserWarning)\n", + "d:\\anaconda3\\envs\\covid-19\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " return f(*args, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[22:31:30] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541: \n", + "Parameters: { scale_pos_weight } might not be used.\n", + "\n", + " This may not be accurate due to some parameters are only used in language bindings but\n", + " passed down to XGBoost core. Or some parameters are not used but slip through this\n", + " verification. Please open an issue if you find above cases.\n", + "\n", + "\n", + "[22:31:30] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" + ] + }, + { + "data": { + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n", + " colsample_bynode=1, colsample_bytree=0.7, eta=0.3, gamma=0,\n", + " gpu_id=-1, 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=8, num_parallel_tree=1,\n", + " objective='multi:softprob', random_state=0, reg_alpha=4,\n", + " reg_lambda=1, scale_pos_weight=9, subsample=0.8,\n", + " tree_method='exact', validate_parameters=1, verbosity=None)" + ] + }, + "execution_count": 186, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a model\n", + "# Params from: https://www.kaggle.com/aharless/swetha-s-xgboost-revised\n", + "xgbc = xgb.XGBClassifier(\n", + " booster = 'gbtree',\n", + " max_depth = 6,\n", + " eta = 0.3,\n", + " subsample = 0.8,\n", + " colsample_bytree = 0.7,\n", + " colsample_bylevel = 0.7,\n", + " scale_pos_weight = 9,\n", + " min_child_weight = 1,\n", + " reg_alpha = 4,\n", + " objective = 'multi:softmax'\n", + ")\n", + "\n", + "xgbc_f1 = cv_score(xgbc, X_train, ohe.inverse_transform(y_train), 'f1_micro')\n", + "\n", + "# Fit the models\n", + "xgbc.fit(np.array(X_train), np.array(ohe.inverse_transform(y_train)))" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6258333333333332\n" + ] + } + ], + "source": [ + "print(np.mean(xgbc_f1))" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "XGBoost\n", + "Precision: 0.6666666666666666\n", + "Recal: 0.6666666666666666\n", + "F1: 0.6666666666666666\n", + "CI: 0.3079842869168074\n" + ] + } + ], + "source": [ + "xgbc_pred = ohe.transform(xgbc.predict(np.array(X_test)).reshape(-1, 1)).toarray()\n", + "print(\"XGBoost\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, xgbc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, xgbc_pred)) * (sklearn.metrics.accuracy_score(y_test, xgbc_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Save Models" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"4-type-model-4.pkl\", 'wb') as f:\n", + " pickle.dump([dt, rf, svc, xgbc], f)\n", + "with open(\"dataset/4-type-dataset.pkl\", 'wb') as f:\n", + " pickle.dump([X_train, X_test, y_train, y_test], f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Models" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"4-type-model-4.pkl\", 'rb') as f:\n", + " [dt, rf, svc, xgbc] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"dataset/4-type-dataset-ct.pkl\", 'rb') as f:\n", + " [X_train, X_test, y_train, y_test] = pickle.load(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Prediction**" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [], + "source": [ + "svc_pred = ohe.transform(svc.predict(X_test).reshape(-1, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "dt_pred = dt.predict(X_test)\n", + "rf_pred = rf.predict(X_test)\n", + "svc_pred = ohe.transform(svc.predict(X_test).reshape(-1, 1)).toarray()\n", + "xgbc_pred = ohe.transform(xgbc.predict(np.array(X_test)).reshape(-1, 1)).toarray()" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision Tree\n", + "Precision: 0.3333333333333333\n", + "Recal: 0.3333333333333333\n", + "F1: 0.3333333333333333\n", + "CI: 0.3079842869168074\n", + "\n", + "Random Forest\n", + "Precision: 0.3333333333333333\n", + "Recal: 0.3333333333333333\n", + "F1: 0.46153846153846156\n", + "CI: 0.3079842869168074\n", + "\n", + "SVC\n", + "Precision: 0.5555555555555556\n", + "Recal: 0.5555555555555556\n", + "F1: 0.5555555555555556\n", + "CI: 0.32464394339996944\n", + "\n", + "XGBoost\n", + "Precision: 0.6666666666666666\n", + "Recal: 0.6666666666666666\n", + "F1: 0.6666666666666666\n", + "CI: 0.3079842869168074\n" + ] + } + ], + "source": [ + "print(\"Decision Tree\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, dt_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, dt_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, dt_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, dt_pred)) * (sklearn.metrics.accuracy_score(y_test, dt_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"Random Forest\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, rf_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, rf_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, rf_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, rf_pred)) * (sklearn.metrics.accuracy_score(y_test, rf_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"SVC\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, svc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, svc_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, svc_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, svc_pred)) * (sklearn.metrics.accuracy_score(y_test, svc_pred))) / len(X_test)))\n", + "\n", + "print()\n", + "\n", + "print(\"XGBoost\")\n", + "print(\"Precision: \", sklearn.metrics.accuracy_score(y_test, xgbc_pred))\n", + "print(\"Recal: \", sklearn.metrics.recall_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"F1: \", sklearn.metrics.f1_score(y_test, xgbc_pred, average='micro'))\n", + "print(\"CI:\", 1.96 * math.sqrt( ((1 - sklearn.metrics.accuracy_score(y_test, xgbc_pred)) * (sklearn.metrics.accuracy_score(y_test, xgbc_pred))) / len(X_test)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/dataset/2-type-dataset-ct.pkl b/dataset/2-type-dataset-ct.pkl new file mode 100644 index 0000000000000000000000000000000000000000..23fdbeffa6c8c5bb2b542a9ff9ff546bb9a0ef2e GIT binary patch literal 28653 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 m{gEbm`S+50@yF|j`hNcWf literal 0 HcmV?d00001 diff --git a/dataset/4-type-dataset-ct.pkl b/dataset/4-type-dataset-ct.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3520dbdc7d8535e1b3e800fe6a76cfbd83e09c94 GIT binary patch literal 45138 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 literal 0 HcmV?d00001 diff --git a/model/2-type-model-4-ct.pkl b/model/2-type-model-4-ct.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8d8be0c2b5a13284188a41fba1fdc33c1ea9f724 GIT binary patch literal 217106 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∨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
  • $V=x=zeGpUFKpMQ#~P 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 L+nCvyX;=O~%pEVI literal 0 HcmV?d00001 diff --git a/model/4-type-model-4-ct.pkl b/model/4-type-model-4-ct.pkl new file mode 100644 index 0000000000000000000000000000000000000000..abd36d32e2554e15ec7c51baf5b61201d47dc1ec GIT binary patch literal 598452 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
    x#{<{ER;=U7)k`G0QobN$D+WU#k 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 z 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

    AGsmRXPb4{F(Sm32@{!Gd_vgsGk< z?+cuG`MOmbH}>?_%Xuuk-X7jR(9-;+)S%1}rj?R|V z?H%ja$b0)XFBwJY(5wE|w5{)LrAlqxNZpS}Cl` zz5%hNYh#bgr_b=<8vSDNA#@>ycZKTh1_VjkQQa9-2Ou^ZC&57hT6ksfa<)hn<8!B#djLE z`&2atw3wGc9)g~=dgF$!*51wihf>EfU2Uo9Lkpw}N%z{-bbD6yPi$G+M#HPSt%vGq zQ)lnyB~A97j}IL=9qVdN`aq5C+HKwD=eoAew(gGAT%U%}*4esheOpW0YD(OW%=4G3NQ|({bYF@orb5c#RrmkjfYsdN)3hU^!4b#F6MS%$lbjV!8YOt=> zb^Q8E;pj91Jr22O<0^yXh`Y15o!;iTMzC%w;KmJhCTbJzp0+jo>I0TTAP@x;J&U z1>scjmqhSTK{{JEm?~Lk^G-rNUG$bzngiFgxailmuJ36pNRAr4Fg;Urq)o$_MqE(% zjkE-=Y3rm3fjB4`TX%}bPA(Ldq15>WrzB;02``w*>}*B!M14b({p3tT7jl>>tAwDb zy&^fO+?F*R-DVoMJ<@h-ic`9d59mD9Cx zeaGr6h_Z&XfcDEedQ5{vOkKo9fjq0yZ`0XBYln%qzA!bj46N!fVzRItnlgI&+eV#@0zQ8#sVtlikXftY(P zZtJDY(z|qtoTyKvxO+6EgD_fxJ2q0NX)As=Zi|^9dfGRxx3fTfiW}2?n}Ttn+GrNo z)XL+ujWmQ_n(R8;dh29;>R4?!u?pJ^w_gBP!Fll*#&lOH*2JQNww62!DaR}OpRv6MRaNyx%D?# z!q#;3SQP|Qycxk}-XJxFVly+@8auQJk%iak@y{s1l}`fouXZq1pg`54TZ$H<(2;TD|0m+|J1@{0?bbR}{HbJ~}$r z(){_pL|w8jMLF9K_t(Szeo!q;d^3 z?bXdq*C(@$xu%T8n(7lx=3mAJ8D0v{Wx>OnB7jD_P%%%gZ(B=x_xpOgH?`FTU#$HXeN*Bcq&g+c#JskbT@~GJn7OibrhxLF zSk0VCJguGUY@(U^WG<1(CNosbRDFudXnr-+ry3iw$)qW-sepn%ih`z1DM%`rY0Tu( z4Vgxohs;c5#$t+Cx=mddW+hdZscUfgpdZA;jYdVbDZ|ZvQxgQ=hfJ<-0LUG*ekNVLK^@RuWnz$ejV3wrB+4uyT zsGNJP*K#l2N#CW+m|mMK)oZCR>AIlf607R9jrCNjrfe!rB{S8KtWPBqjmai%m`p=9 zoyew5oy6?8)XgZxG$mA`<5Dz*eV3R@cU)m zstq@taxD?PA<>Y{Hky{ByzRBVYI|waw3;f_LDOy~qkO8qnXFHz(x!maFVppj1gUg( zo{HHOsnICT65TLUm}ZF{NK;h<&6iY(w&`uhC?6odc z(3>b(Gts3>^&^^EY?G)iMC(suCXq4=kn|dgBx=>Apc1_WF_-Kp>4xkA(}igkHUHdl zLQxfUj;6@z$Z+dU!QCNMZ>GL3J#9i47?E0L*xT8yBDyXE@52>8=f>x@(}tHx_Cys^c21 zA=lJsmOJV+4K(lBYDm?SP2NZftf>=O2dRBCR8geh7ZNFuauKya!Yn0=B1>!~7Rx}r z&lP5~#M+suH_BX!P1H1LIn?FmHkql~tf{7DO-4!Kaz>aCjCn%3ZRx>~tIK5TlC1it z#AcNTo8=<0wm{eYXM-){c#I zeIwa-4P@%cNTKZPwQ*6rq&Jr8_LwY-`guCpK(mw4kflFU=A*hT1(oQkh`L1Iq#4G{ zfW|$NqKT1OHmD&z{YKBcl&tPniFCTr%(SM{G&E+isV39MjD?#@G|{ZP8+ydBmUNjK z8Ef7f>YDu^;c0P{{yF<_r$xxF~64Xv?2GLZN zNRwk?u5r@oPLYdTj!SfkWTqjL$(l~lSf9zH8?D=kCXWP}zBCo?2HS5~eZm+Uxopjv?`|4*<8Xn^~l}RK(l#)f@kIx zYOJU^#Vm!TyHPpsLav_t;j-@8@n^qC^J++?%z{!<$xAkoON-{Z;VF4Jn&8RxY+S6g zf;A=Vibk_dsxgtWHZiI6jkM0u&^JpIEn6vL#O#J1H#{A$k(4vz{I<(J<(1Z`tTiFT zos}Z%CzYlNvtSJ6$qjufQ%Yw17|-QA<~jl=(*51F>ZxmwW@6imbiLLbk^` zUY0!Yq*svwz>P?go&17~BHL4PM z-6=WJkEp+q3Y9jxDr;E@novlk+8rz4@cJHk-ZD8dV&PCFbuW>#Gn=g`#)|MLl^~E1+maWFluNBc_Z-y`Vi!>)?5tdqhbux}9z) zV`{FUip|kKQX=+9k1$&wbLm6}ImHu6jG#vH9Ou&133pX7GQFay$=FFoF*5owXKPK2fudC-i0!Rwxxfz%?$n})QU+kcLsaNgn|UIjz*7r9ze#`-WeW0v&xriLUd zR4E!4O-Y{Daw*zqC;PXS56WNDk(9E(X&wFVw8($Lc6J|bJNXiD@#LT4_l)stMGx9I0wK(xz<(YN8HAu0P|{a}2~t+1QyAj81gXIm77v zAkJJvUAg_B(rz)EG1^oy1z;`3WSxqV$TZQpHEz8UlO8+ElC->*JCL(8t*)UdM?J*2 z&oYhVs;61USf!M(>3+szmdR1)v;JC|m{J+?q!<>eb?TPnMyKD#`(gBC9yFwBkXmJ& z)TB+No9JlIZrM>C-Y$?GC!}^H8xu5_T0MyR0VzesjxqhJo*dF-hTD!%Sm{mVPb3}R z^bZ<^w9`oE91LQ3_WB?y8cFOu(PRvwlA8&IHV(!S2^3k;vcYRMI1 ztAUQjl%>a@P+X{Kdv9 zj@r^3O=BlR#s%$BT9vb~O;g6@ZO(B}?{MZGS?1~1nq^;zCZmY4{$csK!=a$cZSp-(iG`%nx!YRWRzQW zIZI5KHchn5>m>PSb&X+8M~& zAzr@MmhP#DxpJIdb?nlBP)mYBy=Fw9U~(^Q!4rX|wX%dDz%BO|&1sJ9@;h zbdP#_RdWBpEPH|0$m$~r6fJw1rW9!?W`Q6jy0M84VvDjshhylH zwy8u?V;Zw`pT|ypGGk!9i@WAUUKcQHUZ6I*e3s~oq!3zLmDCb@=^5IV(Zh@ zby9&z^TE`^ZA$hGDQ4`$HvLt32WdBh7C+J@ajU>AagMLhs>a#}hET_+ZGE-u9*|aV`ki1W~7-+Ql4oa$+9%knNoXokNl2wtjC;qH*|8w(sAb9;*lS&PMI>t z1*wB@9hxCV)|Wj4zIT_Mf^~-aid|Kr_KZp?8+4qA{J3CD5jgxyES5V3r)XeDjuTL#E~g9o(iMY5*$a+n}x# z^q^8YO35vpU{XcfEA@mdY#P;O%n}1lKXm@qv=7w-UAZNHi}7iNX3m)E2vt#u4j3}O zqq-tBfN`LZTgXnG#z$)AaG7mV4>q3PBGhAk9I9-(KhrP8M8^V z3%DDM>S1k3lJY}`*GK^}t!QhEYL^zt9Jv5Yk1$=^Y`>ESuE8oDq?Oa56kJ)eJ>PuM zt!(4Pvs(V%?ET#53$%%yDDIRmJFP}-FXeW z-u6@)J5Vu9zGxcG(h~%%(&*wVn9C#rOEhyfNM1 z9+)Gy6P;4xVPO;lQZ>i{Z9NWj-i5Sp`QyEd3Vi1BP&5h#@=2sN)MWX<%2qa9VtnUyBf@h( zJ-C8y<4_jJz9wVUn8&7?%poUHj~nRls@>)`_vPt^*j`^JY%TGZQIN@FY`vFM0eel+ zDbYVmZrPzHsHxkW$0mE8?^>7dcai-qN-HT+kjbNEw|z=!9K%zP)48;{>_pv$tR}L< zlC%Js&O&=1bY5?_Y;BE1K_;V(ENwfP(YZ9bT0=%5A5^3*Lki;{J2BcX+A*Oju^q?M z$zJO?J5dS3Zin)lSGMt0$D+lHZm5u(!PG<}t@$*4&=hYDY?AMtTn=_QkRBID2N3^4 z=^i*74VkX{nW>gCV3au0;pI1JF%9I!a*hM>G#KX+-T5P5S%j8MDl)ldMyMrc$?->r z2&fY`(#37M1!8ABIv&+X`Xt{Cp$#eCZlavf35X_hPTh2KI_^mx2l`F=HEoP$&Gr=4 z&Mvy&hNUOd=+4qfd)`W+1%<90CbS7??hn(-!Ph6uWix{*PaSDDv?F8t#NM|O3ue$5 z2O?4>ceLUih%k?`phK3%t!6Yg(gw`ge`-Mt1G?&+Ow$=76HaI0vNTStwu*3q)WVT! zvKb;fRg-Z$sJxnNaz~vq(2(sahiBqgFITYmQOBe+sHRkuJMF#3-64966Fb~S8Sk(B3NpUU+K^1hrJ%U4~j3sH(@0K`*`QrTi!SEB&3gnS9=46~(Mf25xJHqLNH9 znfDP9Cr+H$1L?8jA)PKg$ito%+v+l{5u9Hq5Tmd`; zv<9K>*)N4N27E>?Z2Pm9SjRhaW9RAKG>ImPm<5BCVyF+CH6{DNbuB2@R3U4L=5r-I zx($kXV(ti^nVdg^&EfS(5Xzn8b$uoNVnEV`y#ck!NKQ^CRRjjSW%IFzv8G-)K-49l z0P@7N;`f0uvij^kE#go&kC%$zH|A>5y-{cwXhPLkrd;REK#vy-H_UCa>~k8yy(-#1xH zxC4UosLzEJ8IYJ^01y2sQ`@o0FYqy_jZChB-LPbDHGuilEd)4uNa84nTFrH_3gNl2 zOgPN_0&D3hqt$V-o}sMRaXc%i{~>n?ZliI88rh@CO3#9(*&!sjl@OiC0|P>*R0)DteL%q63tRE?Y0Xg9)nXGiC=3; zi?Ak0s6Zt)e`Yw)!6sEa_9CXJ68uCM%(u9+uw4+-ZbPpsB(^HHF}OP#mCcH1Ai`{x zgo@d~35=Prnc!ROeOr$N_|BirTMjM3_~PFDXF@|DU~|x#Qz~9GmJS?=cs5Apupm_D zDf$t*xa`6KR<9sqo3$WjMMnpaV~#0)R@7}9{~G{f0vMBe+t|s4C+^-9oys4@CMLK6 zblFh%|NK@wIoqb@*j7P@$&D_{u8VfKooW+}&mB#ugE>Pgh(I(<8W2ZhA($Tk967GA zP-{-P5PtbC#F6rVQ5Z&dQw8HvB{O$!bvIydlAKJP#AXTx2^!j#zd?~Aa2#&<%Qvja z>2uOEWzLk!RpvkkVUxnsg6uuysVFoDantt27R*i8WI3SinUi{YYl=)U)n=l%$G$|W z1IUzApY2Q(bK{)y6qz37BuzC16p$2%bfagOdS|(*_zzO%l=kn&s>0Hgbjrpz71-B6 zli*e^it5>n3s7Eox;F)b3t(yszGQ8 zZFZ2;f|?3;Ig4|8zE2`40i>_FnZY^+tOCCzFQKFmMOrFtVQ+N;gs37|xW@4mT1L=| z5yl6B(TNox+NJ)I>cmBy5@ryzV7^e_M(TwN2+I$*mpX58gx;tH!r`=%KN9GCn-|BO zL_YB72Oqe+C^kUeQGBm}gT(rPl<_sDEs8m!+7xKOTod2|DEEtdBli1AG7G!FM2#+q z9aa@GE~5?$m&mYP%KB)nYV7PmwCgezoi~VQg<_dOY8(fiC2qI(uoc4N3$Pn0Od?!iw%W2rm#@;ZovMX~ zes7gVVCUFSPY)~?eKe?3<2lUlL$~EcaSyR8Sn@1IG3T#R(!xrmY*5DFQwW=ZtTpO3 zP|6FMW5D~;3;A$0PeCJy*GJU&w!Xy}-W<3UB7tGZL}e~mF4U9YhshF;=m-cpa(!gp zNK(Ei%P=?+vB{(KgI&kig^o9c8FN5RfK;cw0sk1!Z-A)GUm(RMbd9Tq?I&}6a?coA z&wWpd0aQih-c|y`WuOK?35i`2Txym1@f=U0qukG&YI0V%3hDN1XyYb0E>Q9@3M6;5g>JYbha9H60Ksgp^M$rc_D&T$uLb|Tc;-*z(qsF&$wYLI zWIZL_h6IP3MJpy!(Lz1t{K2wEGfMx^tKl8w4&cVV&@fsinu^tFc@{o(*{rs09?lFawX~`MV5%6$Z}YYnd)M-qap3WE ztm-!d;Uu-EEZy#Ip5=R)8jL;%iEsHg&pkeTGcFTb^qCH=e#QhaekK% zw*!kI_0Jy3LfPD;Lr>s5T#V#xCB0C?#URo`K-P>eF;A@&y)K^$XS;B02Te%xX1mqL6JbAhBo2@-pb?KlllJE*2T2NRUog!U&uUeaN+811t&Bmlus=`p?I zEf_6y31%^n!kP@AdKNdBq9j#+MNs!Bo!dSX~`^W#?5x0GT=wA?akgO_`j{| zHgnz&u4H^NXBa&d=4fVV3x{83IY4YEP93B>y)fGJ7Do=m7njH#R$<7Gj&I`c z6PxF5e=86KV+bA}v_%230I7wVlB( zZY;RxIUm|ytOdRWtI%Kg5F8>-8|h*&JG|KnxuPkFp?sP?eNpPactU5?XOyvy#H{} zx5vg1NN?K9t@T7-ME0{#WY6Al))*Hzm_NZg4a{eeOE`OA!afhAjbH=ZMRRU#>qiX5 zdfj3h8p;Ie;%FG#F#i^_1h(-X?*0*BojRH;*g9acXptC#1Z}S#uo$?Scpl4+2WA)@ za6g>{_9D^I`(iRrS^{B-ljSK})MUJzs0T%Aj{Vn+(bg2JQ&^W%lxXG}cS9B+l+aA< z2_PjKM~U!bvulhyge<`L=V-T}{E5#;>Xj?O-~cO;JGAG><iK5vCs{8>92d>{x71G3&htQq|E^ z#JETgyhj1&1ZNurcG|EHK33c(oU-s?$t#^hgeN_NX@Cmnbz)r~t!J!1>47RRdWo(_ zsS`Efk-ql~%kyk}YN0XTbJilrd(19Ok0}>@G@esKIk7PxZ^cK$g*`@~iGX>XrHh8@pgdvIs{?|KsZ zJ3+b_?Zfz>tGo0yZ>c?ETvm-JGg^U3$>s4?KS;yJ)9 zg2Ih)@Qbw@%YCmZxI@>~Yc2O2(d4WvUj zpan=y;R0;PBZF&+-afTg+Q?!oK|uDwNg?MMNE5*)(ULgHm>T!KyK39zd*qo( ztdsU8E}H=VNmJVVZ6+>}x)K{ekf@9ZWT9RhEmliYGR+xULmv603n$$9fWHNZZ!i+7 zU$itmSFxu17DeAD+&95zxSqkY(pGkQSLK&QCeHZTkquM)l+LSH@=Jh*U81oOR47fwBODPv#9g|jtEgf1mc%-d)efWB*z z!a;z~-a~##Jw$>Oq-wCJQ#MCs@Lm^Q*E^;o{&d%!Zz9;MfS#Q~^+_U)itw@g=AUUB zfEz`V9=WLj@~4g;=1~yJGeg6TqTYZgYJA7(jbls-Jj0{m+Xjd1#GbON=ztGKIzd+~ zy<+|vMjDGKM-%v7)e*yZvn7NrYHOUVVoyneAnITQ_08L2*wB=t#UxTQHDxRD`(e;< zEy_fbHv|2b?ZT&}<(eHPY(P#{*)*|d)gCtF4d7s4_3UHVD#^rA++lAbw?J-f7PQ&} zL%s2XRwG{%+QVILZ_b9R`N}2sqrE*Qf-GO7y`h;H@Gybn41U1bI}zqHc@%#%5s3CVrV%n+1-hyFEikCa9-F%OCO7(iJ4G|z zqoy+npv-TJY&LJ-I?|z5WAnnU>#TzZ@D6?EEfCWNt6eq7EmK2HodZDK99yZ2=skj~ z#|CJ|7bdUi-sEVFx$X@D4yuw;Fn<18*;>i&4irCjv_BMgGP3zPg zjX#wFkWi^G3IQ$!6-ckDxFp*F|jI z0HG?FT1!=Xje&`vlGnImkRql$NIvQ1JK6a*POdfeA)(+w8iL@7v4r}0HV%Xatx;kXg6dq|B+bH+*P{k1eV6uA0oiMBs$$G%@5GAj7Xy5VnH1+_{PRk*9z@x5|Qn zZQs%jb`(m2qE|IAN=+hSp)oVA#BnOBi(msMU^-wfng&Ale7#f@TN|xH)uBf)9n@R( zBUU%H7**jcm=5+41wta{KT7w<8L|Yvl4F+p|-uB2hij zP(BYb2Z050NZ&Xi`pER(C*DZ)1WLI`=oDU(s2TKXP|Bqt9ACM@<|+Q2S1rdJJaq`1f02uGB?Rt2!da|>_fJ8OC8 z>F#j%5v<0RwXujN#nC8mMFMAA9x1dQA^L4kyb_dn=qU6&t81)+V!9u(_VALwPa2Id zL{uyr1ttrfli>ujxa|NdT0f<`K=0Z`FDzc4kEe5e9(R3np61*_SrgOF+j>LhP*EO}&l{&MYt9o&=`{@wI%ZYpRqc{ep=Bqtreoe(VTDjI zYT(xE;YmafRW8s=gOj!J_O-WBMIf@tNkH+5wC&Mac*RhjEe;(_+Vt+MlEX=GmIH#8 zuY^E@15%)k75opXbAdu|FI{}4Y+DJNog+Za#x1bzYvTuTZ=uSoZHH7{xueV~@lxI@_Pi$cUsiNgi%jwsQ zn35|k9pnWS_ihCVBNLY$xrs#;*S$nlwWAEG!J#lS>Tmrn{0(Nms9z>?Td zhk!nYi*TckP&oU95Zvx{@|eKgb+f~}Cu?UFKEWepy{xf^j^J#I+hby+0mcEqMfMT( zG!uvz09+MilS98!02f)ViQZYyA-E{cp?t|w4;rG997PLKV1^J|x?3PLh|bcBa(Oc# zxD+t)wF5fKEhR z?ox8k7js*vN~C;?=fFxxcxGykV4N2UZ7Aw8*dO&im=-*zD-S?3s_1j$G{H`U8 z%`Pyk z8+1zy1%E!T!%sW1B$m&aGAH)A!c`kwDHGiz*AL8wnuiEeTD1o#`&k}>I*Cc=P#IoQ zGicwkV5!xoRg-c>eEfyJyblk-30_3_%Pe5gtl}Xov@G{`Qa^|hO@zrxq%$&3AR`pa zN!-q(h^&98%0bZ2H zB!o{UTSkLOFD8zD@TEk6*TCQx+AsGa?A!_VLEp5}q#R}drOuDz41`Alm<~8p`+~f! zZrdWj$cgx^p;woJP?7-{2L8`fi)Ff$4dA8kz$n8VLJ9?1w@B|7hi#M@Axaup;~9+? zr75botssv)Ps=bD*ktYmXOT&3bN-*s&KZGFVxHynYKyJ3sYHO*7w*On!hynI(niHr4Y_cZhGD{`h*#o2e8!SgPAX3;yo4it8nucg( zi7}gs+h}QdgojMpHWLvRyY~`2$bVIO4i4Bcl)uv&H z-0FlX9O!_4Jmj&x6b=R*LoqUMS~ixL2gBhb?`8fy6|lObd6&xP64_IW2$&KZq4ljD zZPYp_G3ktq6VRih$zDeXyE$kDXIr~9+z?n-M|SKwmkhE2fS>8O?nq%c85xMcbk0s^ zFN?q$SGr_ymU~2LlCl3za0m(>8hY=|LN@hbW!%6Jv~tV3l@$3_vHwnB2r+L;>)Msd zW>!WJhU+vlU^1xjr(yh-Vlu{7@n*ydmlTNdw770QL|@w=Ev)B+wFN$1*@Wxk*po= zm)b9jC44tiODer(>QJNGxXY*k@eM|e>prCkLG((y+eBYRO z87ryA7x${Eu(3779JSfgB%x-Cv6mngBE_^679|yyEh69CE|pJl6N{Fv3siKHj9nYjT`XxdEK$~qdatL$b@KoqLt3*wGh>WR+A9q}D0ace}8 zQ-p!zO*gXY8pKwr2+}giX9JaX|3%X+E1iyi18br1NxtIN!vzYUe%FAP;2NB|@tyfDAF~BcOWHu$4Fm z;P_aCSFA2WZ>`DD@Guu3n9hp~T2Z1-iqw#5%4jM<|0?VmB@j7s?kmZMp(%$v3!#a$ zPj&!SFfx>EI^ExO;nclAyow+sTMRX}!s$~5U>X#t^ivU>7aX~1zV!mUH0~9RSgCz! z1SaJM^2HkJ4IFBiXhr3Jjbka|Ys5hUB{m<)ibmpSsLnbZ|EH z4YtX?FZ>huvooPd`6B-n{*{1^1Z!S>p!2p`AsCJxB&5sGPtzC`dwqv3e<1--TI%^9{A- zT4*N19vw0(T*RuDI)d#?T594oil^C}UeQp~>%VdM~2!*=;;J0!no04xuNw zK>jsDF?KKQEDNMidFirRDLetsl$6es+I100)lPs8aX2MQzmC6t`-ZH$dYY&lJ)qGG z`6E*~iTXUGBd@u5<-uQJrLt&PI&bzxT6w{3qE(2Fz|umUnYeN_cz?(K?L6IIh!On6yw>M>03pwg zVX+@4v#5K~&=6@;u|n}iLHip34}SjhhI58CK(t36{R=J!_2nV+jrRc{ruNt!Jwy>a z**YPIMpo_H^Ii`a`xD99@x{G_t#qO?@(Z=TOaeTFCf10#yVDL*srL`FHmCP9x5+31 zbaGJ_XzTq`HWi?1xRp`~o~7HVi`tdO2~vcUR^)2!l!_^EgA*ap*5xaOH>yPAP$1#mdNU>arXZZ^ubmlatb%gVa!t zRn}z{imIP?IoY_s168dNG{{h!z}Lh@o&&4FO|I)u4*@H+r@ewXhqMkQl{?2YZ~@gc zPM{i0T9ebuFr5PC)(utz_nNXOkz^C`&|4>94GmNaItH&K;0!4Sf}e4-#~pi3o7PT2 zE-^=u#>E{8w!)x|*RpA}5^F`~+|AD%LL+D8A858ruj63TU_Q52;@3jDZ0Y&Cib<1a zLv2O}EVPAxR-FYA&|@-PTmYugfEL2t>tvxeWepXmDsus{`m}dLF~bx##S8JD4TpKq?3cf{?(>yL2 zr_%|NLSZ0kood>i%94qIB{82efEMdDg}~dWAdu0DB$<(M0&Wl~)n#9Z&X>rV>D+)D z88MaRmQxuSC)kE4$TgZa>o8H63`<0@dz_Ij0$^OHouPaXF^pBrj5>v>3uX%)WE)E_ zF;-JlpY9yQfhJoGq81QmUb7b_9l~gXsWiv-799dl2#CBGZh)Zyy9U`@vC*rHs(bQi zKtEka^LScq&tTPDBvU#!ctc*)bw@|^R6N1X3Em*0TG3Vsg|(dozOaQ7T$#sycra|1Z!9dcN7%1+15I6)k+Gw52C33WT_-5?HmC#rfn_-XG1apPCq=3Ah#o2HX)AkYg;yO_$N)f;vQi*7LH&_EzA|z_l zkrU~iU=8Rn7D({T0?(ZtHx25zG_`7T1UUwIj8!dK1c;clXoyH63yU}K`WB6^f<7Y|D+R$%rx1dvIkk)E|WlAHXe zPY+M;9{A)Bb_=M6?rx2uOvboqCb`ObVf>?y+4Ht3RilktkknSMw-ViZOgOhO!)Bln zXh=EPUOI`H`$d#2DevHs)4V`5=UyLz(t#bVQT{H}4NeNc1;^)+YwsO&hAVP6P*hQ( zj-X!1%!mYff)u$ED2g5fq}5nGsf>#oAS!QZJ4H*lWL8WBYr4kphAOy>cJW0*dszhg zxyF$Jv!gFf_xY{*R@gRxr^R?j0y&Lo%$tgcq!Y6J8t zeL47CNfzN{)4F7g4CJ>Txc_I#V$psBuUxd38o6}PU^VKa18G;ZrHU3W_cmOBskswi z$iUPLifu9*ryF2MqIl^vhArqxaP#T@$0wkdhfg2B-hWo#b${pPWMtM^N5Z&JRlFTm6QY8Mvm4)&ZT_au684LQB7>FJ7eAt)p+6>p+e911Y zU=r{gq`C#|gTHDTbjWrK&V1RZ3B~ z0cxOk)6gs(pr&vF)QDxDRVc~M5N)`~b{2kcnxS3m8Wx)EdkI^+t0P5L%8T#Rx1?!S zqCc)OG7%`|8siNmb!o|!uR}~-Wn`RSC)D)erL9%dhpw2USa5N#q2Dk~B9Aw^No14A z00B-CDcfLxi583L zK|nU?mz)_np&_tnXlXM`BK2%&Gej~(6lj{(L=nSW0M(^?3)*lY3ayAj`7=hL{I(_R z;0_rl{&e3^M&O?z<|Nb`h&o*P0U87?N#gsPnFK*3gOp@=zv4UCB@kcAmRqw>i%#a< zc%yGwoK+Yi*e?nch>6RbA_JH&+huz=D@(2v!VMR%hxq)|3*(Ci^R(|eb|ukiDhhsk zV)77lmRU*oZRMy$oOCX=!^Gsw9K`UMGY#EljeMiD3BqWKmAT~?vNk;Q=cF_F@%D9{ z-auY6j0t5rSq(05VRcRwtT)G!aS?QuZg3iO7l7>7!D&WV7@3?JPS0qdaT~IRI+O9= z6wU|}w8qUn?bkB)-|@w3vDZ6Re9v@44?S9;2c~26nC3TH!gOQK}@O zF*;_rFE%b2gBZ2*hAqqBlVy3%*pF{GF!&(L6&{c>?rNV>s#s18ZkzzTUomW9)%J9S z(qUNKI7E6k6ky{0Di7U?n0}}(@fPx1z|bTx!n=99AnD8902j2{(hZPC3j+phl}y({ z`_cX$;{->;i6(I)Qu^g9#)lW+21Y|+uC7;-#tOFK4LfnE$jfY*nGVcFPNO*GA5~+6 zusfxwYZ(3$Y2i>@!+f^na2Y}84r*y)ffH3RS{M@Br<#P;+$!JI4;6Q_r50q@oS#uQ z!(~Olq21Il6*Igk7~jcq8HL4-)PKTAp=_vPe5=3a{5xa}+8S!x&d3~D^O71O?8i=E zZalhORB89cJtGb!03Wr&Mu&nJ#1IR`Fg(FuM4`FD{RO2C^u!w>eU;n*s&5@eBYz9cpUj1nGj=%}@L%^q#?D1NpIty6#ouw**k!_)o*nS9R52=W3?~ocRa2YWjSdJGbFk&W+yClLK z4^zgipjo5XIR#)uY+^xHyUm8Y2#Px`2&#EE zOd}~!(^E6;P-K}UCsBK-@vS1bT5QU!?c9)TtPy0HWng@mP&X(MiwX=f z9qLHs1SYalQg*g=WIx!7mmmP_0eF=goCvuk>Ijl)4_{OfK<66GOe>YaQrQjWZxWH3 zA8-SHVx5p6Tjd1Ypa7{U2-VVwp=&qj27Rt!Zzj{>kfg^kOW+#K3}R>qvMK+)f|(&H zU!ZW+kl7u8jfH%*DQ-tS1z^O6PE~HuF~z=oJ;4H)Gi6IR4WOUWunF$aVJ_x8#ezC( zEBSjM3|u^YT7-JwZAhtG9N)|5!P>g+_hPL$95{4Iq8UBlYRD>L_YAcmulO#1rYz zQfeo70}120gK;>=X66E-tKGm2u=2sx*U>Ck#mqQ?8>EcWPyvxjrE2X4Z9r10MtV4% zk#T}H!0IYX5w&OVn9nvcB!KA~Yl^|w5jiyxB*Id^vB(LZw#~`%ZqmNfIlUpt8X>)% zNbW*hQ+ShSc}@q&xgsa@z-coTDkAav%E}1j4V1eqrGUpi~X3D$s;Ox?6p0VQK*+<*S zHehBdNGItGOdG)yt~8b@D3wd7Ho0{Y|C0pDfN0XOGOe5NAGzO_ly)+XS?eVJS5*veaRLCK_}P^`5^bvlGxWQsb$WvfawX+JT?8GNB(*hk$}5pHgO3Nn z=9z9^F`|u$mQ1m2jM9caNLESWVCVi^RtyA13NVghpoZ>c$dgdaq%L7dqfm7+%Perg zY3rPT4d@3~S%H#ZGA7Lp)_{yKF>N~dT;~LAP!B{jVbbBWb#AbRyrOb~smnG>)9 ze2zws^kPqDWO_GfLym}joe*-`J3$*dQl~Vrn57KF1$DZ212z;zgDebc)~VQ;-U-@( zohduInI&XrB7nkmvfAK*(q|=|K(lv(0D#a{O@|M#3PQI=jZW_d0-(zS(y-~E+PxD9 zfJ_j*q0pU3#{+PK0Te}UD%{EVW==2wsa%)z)J?_Apr-Fbu#fIM5;aJNqeK5!FC#P>WAEk)wc+e*4 z2K0qRAiVCZfyrwT4)VJy>rm30k8sdXlm*_S_9g|NEbY+-qE=q_%`Did2f9I-IRP7( zV-*`Gb1V_}yv+Q74OIqHD;XihGIIhp^mkcK#$lEw(jF2)Y!Am)>pC&*g63NkYp1iB zIl&r)&t*BNb}}QAy8#>URT@@JIwRu*Y*62Z9>Q@l_+0J=Yskwor3K>zX+Ybcs~RdB zQVC`92%2!EepyX__d1;*Gj|gHx3r_pnm(OSCU+D4=T*}twV64I{uRm;l(3~^W!yyn zIiL)s+Ubmpljy&@tCa&vCXgwd#QyzV)sQw#$NCpeLVxR?0r;OzC{wtJ{b>qP7Iiwc z24&$S{6}-T%0vN8L_mkiN-t>{oP__B=Rg7Nt8{{y!cF{N=6%sN=_Jew zC-HxKSF{DHle0*txJdsOegJ^B>tUZI0{|3G0082dx@_swmr7=)bbhE2?w|v!xpVfHl)}36)KiP5=Oc znXH4#lnP{4x(WZYHmloont_z1lki_8vzn5rgkl*t;eU}s{zu<7nJCjq_}|`9``6Pz zHx)Bexe5R2(NGN%)VMft%4L6wFj^007eeP1mNA&8(aN04NRAWzUjX!_3^i zQHB1S{4S^OHI;4%4lE?4Hl;OCMbLp0S_3({CTgYrrhK*L2H_T!$QtB*trid^x9Gy| z2Hb2U3=tbB+oFS&liju`8la$Grz18{IYAqsPUD`_f#$lwjIfmJW7WIl&t+ zY8B`ymD6ijwS`RBkMBP{-t%1#A8+24l^?u;$SI|&w#o_KP~2r%i!-oJSQ|V+96^LA z8o~s+Mdf!{*EZA*HUIPm7tB0GJ#e9fcr~pB$HN8AOG|ixA0`xQVXZ22B@g|{+rtCn zLaiexhdG$#ZH*_a|Fz+7&iM4@@$ubHhKN?Y~KO3V@s1gTdeAepPwj>qc-7 z`mRARO8*#iuW<0%uBO``ckm_Mw{8pml>BLK8@~PP!%sgy@%0a%K7PIb%=cR-u8LQ~ zb#|NU4DRTMFP}d?JUx8*tZT(#m20mnDeqds3&yi*xV+t=Ebov};y*c~_Eu6WMFEH( z0)d#93rm#TDt*LmN#yYt*BRdS^k09v=X>?a-XFc;*I(ZKeE<0P@Ls417=Iu>(^V@H?f4TYL{p0<+|G3v6>4xk6@mrUe z{Ck$Cb^;D{2oSYpn~qCRyTOKNc+@uOw7o2AC)f~e^{8|26Dr%OBk<34ibG&aJIrb- zS-aW^TGQUObnvaKRRYi3>Mmr%Qu6(2;?fpfQ&;02< zzNa}jMP9)mq?K$t_5lV+Dp%h{51{q>$*F~QWN4R!^4ACmKs``Xz^-Tn$iJ7br zamOqayZ(`Nnlem-p*}Q2$0jIZe)58jq<~?`_<@ZRv;jM#{>lj{9yM;@hO((?o{~=N z)Hs0~&~9zoOuY{-cbZ+)2sdufhPU11{2&QnIzFFC1bzUUX zDzh<4{dWQYbazeN zXDb;Q=#v%2DdOE;1>c~JU;~qUgYGVGGx)_Lmv%ata|zubtE5LcAKf6Y5V!*E5#6An zQ>>V%a898fRP8JgtqZn6>jY}Rp7m{wzCt?trW>rmS}U_=lCfw`um-v-^@ZwFQ^^8# zZlDGl_;%FUB(r2XCs2bbqVl?_*2y)Dl{-yYWd%i9CFL-56jYterb5e#dkT8nS0qJn zxm0~K}>>CV5ctYxxrtBar;=3Ks@aLcNK>Wm*w&63p%p}0V@ zTfe=+4{f2n;v;Sgx2Wc#!#q+Z@~odH!@h3eR!vV;JWd-!d!V3;I-2~pze72qrV-xO z{Xb+eiK|P=mX&HzIQG2-TQ$-Le2=D0+jh9UsPFOhT~1+^o+_t9AY`|;g^-&U2pMP| zau}RPJ~C2@CUb%3TxZx9DB4!HRjOug23zBzSgUga1a*|r(l|b`*r9Gcryf05J}s0f2%gf&lbx5P+gB1N2^evpFB z4F}Lc{QCL+>$_i&#`(0B)G;N*#}8kEehzumK|$xkr}vLi(5Ye~JAB-iAO0Op#fLxh zCFt^mFZ<=!PfrhTAHV$g^rx?1e&9qs{pJ0CzOxtX6SrS1EuZa|{Dv&!&7beTJ|clB zok@f=^FRLf+yDOGU;V-U`}RNI{`K3xzx{_l{NZ1I|JyC?k64^Q9z`QxuY{QATF-TwpHU0?tJ literal 0 HcmV?d00001 diff --git a/model/4-type-model-4.pkl b/model/4-type-model-4.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5b1af2603921f1db804c0e7c0224324e1fcb9937 GIT binary patch literal 697252 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 V=DVBsH@A0xe)HR_-(FpB{vQkerUd{1 literal 0 HcmV?d00001