1365 lines (1364 with data), 234.2 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Wczytanie danych"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"X = pd.read_csv(\"../transformed_data/X_train.csv\")\n",
"y = pd.read_csv(\"../transformed_data/y_train.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Oxygen [Partial pressure] in Arterial blood</th>\n",
" <th>Total Bilirubin (Elevated)</th>\n",
" <th>Lymphocytes/100 leukocytes in Blood by Automated count</th>\n",
" <th>C reactive protein [Mass/volume] in Serum or Plasma</th>\n",
" <th>Basophils [#/volume] in Blood by Automated count</th>\n",
" <th>Prothrombin time (PT)</th>\n",
" <th>Platelet Count</th>\n",
" <th>Lymphocytes [#/volume] in Blood by Automated count</th>\n",
" <th>Carbon dioxide [Partial pressure] in Arterial blood</th>\n",
" <th>Eosinophils/100 leukocytes in Blood by Automated count</th>\n",
" <th>...</th>\n",
" <th>Ketones [Presence] in Urine by Test strip_2+</th>\n",
" <th>Stage group.clinical Cancer_earlystage</th>\n",
" <th>Stage group.clinical Cancer_latestage</th>\n",
" <th>Smokes tobacco daily_True</th>\n",
" <th>SARS-CoV-2 RNA Pnl Resp NAA+probe_False</th>\n",
" <th>SARS-CoV-2 RNA Pnl Resp NAA+probe_True</th>\n",
" <th>Influenza virus A Ag [Presence] in Nasopharynx by Rapid immunoassay_False</th>\n",
" <th>Influenza virus A Ag [Presence] in Nasopharynx by Rapid immunoassay_True</th>\n",
" <th>Influenza virus B Ag [Presence] in Nasopharynx by Rapid immunoassay_False</th>\n",
" <th>Influenza virus B Ag [Presence] in Nasopharynx by Rapid immunoassay_True</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>48.94</td>\n",
" <td>1.9</td>\n",
" <td>15.19</td>\n",
" <td>10.11</td>\n",
" <td>0.3</td>\n",
" <td>11.625</td>\n",
" <td>304.1</td>\n",
" <td>1.0</td>\n",
" <td>40.11</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>48.94</td>\n",
" <td>1.9</td>\n",
" <td>15.19</td>\n",
" <td>10.11</td>\n",
" <td>0.3</td>\n",
" <td>11.625</td>\n",
" <td>304.1</td>\n",
" <td>1.0</td>\n",
" <td>40.11</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>48.94</td>\n",
" <td>1.9</td>\n",
" <td>15.19</td>\n",
" <td>10.11</td>\n",
" <td>0.3</td>\n",
" <td>11.625</td>\n",
" <td>304.1</td>\n",
" <td>1.0</td>\n",
" <td>40.11</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>48.94</td>\n",
" <td>1.9</td>\n",
" <td>15.19</td>\n",
" <td>10.11</td>\n",
" <td>0.3</td>\n",
" <td>11.625</td>\n",
" <td>304.1</td>\n",
" <td>1.0</td>\n",
" <td>40.11</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>48.94</td>\n",
" <td>1.9</td>\n",
" <td>15.19</td>\n",
" <td>10.11</td>\n",
" <td>0.3</td>\n",
" <td>11.625</td>\n",
" <td>304.1</td>\n",
" <td>1.0</td>\n",
" <td>40.11</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 192 columns</p>\n",
"</div>"
],
"text/plain": [
" Oxygen [Partial pressure] in Arterial blood Total Bilirubin (Elevated) \\\n",
"0 48.94 1.9 \n",
"1 48.94 1.9 \n",
"2 48.94 1.9 \n",
"3 48.94 1.9 \n",
"4 48.94 1.9 \n",
"\n",
" Lymphocytes/100 leukocytes in Blood by Automated count \\\n",
"0 15.19 \n",
"1 15.19 \n",
"2 15.19 \n",
"3 15.19 \n",
"4 15.19 \n",
"\n",
" C reactive protein [Mass/volume] in Serum or Plasma \\\n",
"0 10.11 \n",
"1 10.11 \n",
"2 10.11 \n",
"3 10.11 \n",
"4 10.11 \n",
"\n",
" Basophils [#/volume] in Blood by Automated count Prothrombin time (PT) \\\n",
"0 0.3 11.625 \n",
"1 0.3 11.625 \n",
"2 0.3 11.625 \n",
"3 0.3 11.625 \n",
"4 0.3 11.625 \n",
"\n",
" Platelet Count Lymphocytes [#/volume] in Blood by Automated count \\\n",
"0 304.1 1.0 \n",
"1 304.1 1.0 \n",
"2 304.1 1.0 \n",
"3 304.1 1.0 \n",
"4 304.1 1.0 \n",
"\n",
" Carbon dioxide [Partial pressure] in Arterial blood \\\n",
"0 40.11 \n",
"1 40.11 \n",
"2 40.11 \n",
"3 40.11 \n",
"4 40.11 \n",
"\n",
" Eosinophils/100 leukocytes in Blood by Automated count ... \\\n",
"0 4.5 ... \n",
"1 4.5 ... \n",
"2 4.5 ... \n",
"3 4.5 ... \n",
"4 4.5 ... \n",
"\n",
" Ketones [Presence] in Urine by Test strip_2+ \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" Stage group.clinical Cancer_earlystage \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" Stage group.clinical Cancer_latestage Smokes tobacco daily_True \\\n",
"0 0 0 \n",
"1 0 0 \n",
"2 0 0 \n",
"3 0 0 \n",
"4 0 0 \n",
"\n",
" SARS-CoV-2 RNA Pnl Resp NAA+probe_False \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" SARS-CoV-2 RNA Pnl Resp NAA+probe_True \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" Influenza virus A Ag [Presence] in Nasopharynx by Rapid immunoassay_False \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" Influenza virus A Ag [Presence] in Nasopharynx by Rapid immunoassay_True \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" Influenza virus B Ag [Presence] in Nasopharynx by Rapid immunoassay_False \\\n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
" Influenza virus B Ag [Presence] in Nasopharynx by Rapid immunoassay_True \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
"[5 rows x 192 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### MLP"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Warstwa gęsta: Pierwsza warstwa gęsta ma 128 neuronów. Parametr input_dim określa liczbę cech danych wejściowych. Aktywacja funkcji ReLU jest używana do wprowadzenia nieliniowości.\n",
"\n",
"2. Warstwa dropout: Po warstwie gęstej dodana jest warstwa dropout z wartością 0.5, co oznacza, że 50% neuronów zostanie losowo wyłączonych podczas treningu. To pomaga w zapobieganiu nadmiernemu dopasowaniu modelu.\n",
"\n",
"3. Kolejne warstwy gęste i dropout: Dodane są kolejne dwie warstwy gęste, z liczbą neuronów odpowiednio 64 i 32. Po każdej z tych warstw dodana jest warstwa dropout z wartością 0.5.\n",
"\n",
"4. Warstwa wyjściowa: Ostatnia warstwa gęsta ma 1 neuron z aktywacją sigmoidalną, co umożliwia modelowi dokonywanie binarnej klasyfikacji, zwracając prawdopodobieństwo przynależności do klasy pozytywnej.\n",
"\n",
"5. Kompilacja modelu: Model jest kompilowany z optymalizatorem Adam i funkcją straty binary_crossentropy, ponieważ model przewiduje binarną klasę wyjściową. Jako metrykę wykorzystuje się odzysk, aby monitorować jakość modelu pod kątem zdolności do wykrywania klasy pozytywnej."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"import tensorflow as tf\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.layers import Dense, Dropout\n",
"from tensorflow.keras.optimizers import Adam\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"model = Sequential()\n",
"\n",
"# Dodanie pierwszej warstwy ukrytej\n",
"model.add(Dense(128, input_dim=X_train.shape[1], activation='relu'))\n",
"model.add(Dropout(0.5))\n",
"\n",
"# Dodanie kolejnych warstw ukrytych\n",
"model.add(Dense(64, activation='relu'))\n",
"model.add(Dropout(0.5))\n",
"\n",
"# Dodanie ostatniej warstwy ukrytej\n",
"model.add(Dense(32, activation='relu'))\n",
"model.add(Dropout(0.5))\n",
"\n",
"# Warstwa wyjściowa\n",
"model.add(Dense(1, activation='sigmoid'))\n",
"\n",
"# Kompilacja modelu\n",
"model.compile(optimizer=Adam(learning_rate=0.001), loss='binary_crossentropy', metrics=['recall'])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 8.9980 - recall: 0.3272 - val_loss: 0.5467 - val_recall: 0.0213\n",
"Epoch 2/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 722us/step - loss: 0.8064 - recall: 0.3400 - val_loss: 0.4499 - val_recall: 0.5061\n",
"Epoch 3/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 822us/step - loss: 0.4270 - recall: 0.4871 - val_loss: 0.1590 - val_recall: 0.8476\n",
"Epoch 4/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.3037 - recall: 0.6757 - val_loss: 0.1383 - val_recall: 0.8262\n",
"Epoch 5/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 691us/step - loss: 0.2561 - recall: 0.7386 - val_loss: 0.1382 - val_recall: 0.8232\n",
"Epoch 6/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 693us/step - loss: 0.1925 - recall: 0.8162 - val_loss: 0.1085 - val_recall: 0.8994\n",
"Epoch 7/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 772us/step - loss: 0.1844 - recall: 0.8105 - val_loss: 0.1019 - val_recall: 0.9299\n",
"Epoch 8/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 741us/step - loss: 0.1803 - recall: 0.8398 - val_loss: 0.1136 - val_recall: 0.8689\n",
"Epoch 9/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 710us/step - loss: 0.1754 - recall: 0.8311 - val_loss: 0.1070 - val_recall: 0.8445\n",
"Epoch 10/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 707us/step - loss: 0.1551 - recall: 0.8553 - val_loss: 0.0909 - val_recall: 0.9238\n",
"Epoch 11/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 714us/step - loss: 0.1275 - recall: 0.8726 - val_loss: 0.1267 - val_recall: 0.7988\n",
"Epoch 12/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 702us/step - loss: 0.1536 - recall: 0.8316 - val_loss: 0.0838 - val_recall: 0.9299\n",
"Epoch 13/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.1443 - recall: 0.8703 - val_loss: 0.0936 - val_recall: 0.8567\n",
"Epoch 14/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 699us/step - loss: 0.1390 - recall: 0.8551 - val_loss: 0.0858 - val_recall: 0.9482\n",
"Epoch 15/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 790us/step - loss: 0.1380 - recall: 0.8376 - val_loss: 0.0841 - val_recall: 0.9268\n",
"Epoch 16/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 756us/step - loss: 0.1304 - recall: 0.8557 - val_loss: 0.1146 - val_recall: 0.8780\n",
"Epoch 17/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 732us/step - loss: 0.1516 - recall: 0.8853 - val_loss: 0.0882 - val_recall: 0.9451\n",
"Epoch 18/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 775us/step - loss: 0.1355 - recall: 0.8500 - val_loss: 0.1003 - val_recall: 0.8293\n",
"Epoch 19/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 724us/step - loss: 0.1463 - recall: 0.8284 - val_loss: 0.0901 - val_recall: 0.8598\n",
"Epoch 20/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 702us/step - loss: 0.1226 - recall: 0.8593 - val_loss: 0.0781 - val_recall: 0.8963\n",
"Epoch 21/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 725us/step - loss: 0.1135 - recall: 0.8747 - val_loss: 0.0658 - val_recall: 0.9299\n",
"Epoch 22/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 734us/step - loss: 0.0987 - recall: 0.8817 - val_loss: 0.0739 - val_recall: 0.9299\n",
"Epoch 23/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 736us/step - loss: 0.1185 - recall: 0.8774 - val_loss: 0.0804 - val_recall: 0.8841\n",
"Epoch 24/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 705us/step - loss: 0.0934 - recall: 0.8785 - val_loss: 0.0664 - val_recall: 0.9268\n",
"Epoch 25/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 703us/step - loss: 0.1106 - recall: 0.8778 - val_loss: 0.0715 - val_recall: 0.9299\n",
"Epoch 26/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 726us/step - loss: 0.1109 - recall: 0.8811 - val_loss: 0.0736 - val_recall: 0.9146\n",
"Epoch 27/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 708us/step - loss: 0.1022 - recall: 0.8743 - val_loss: 0.0712 - val_recall: 0.9268\n",
"Epoch 28/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 697us/step - loss: 0.0857 - recall: 0.8961 - val_loss: 0.0803 - val_recall: 0.9421\n",
"Epoch 29/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.1058 - recall: 0.8801 - val_loss: 0.0832 - val_recall: 0.8720\n",
"Epoch 30/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 738us/step - loss: 0.0963 - recall: 0.8754 - val_loss: 0.0691 - val_recall: 0.9268\n",
"Epoch 31/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 681us/step - loss: 0.1245 - recall: 0.8814 - val_loss: 0.0669 - val_recall: 0.9146\n",
"Epoch 32/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 698us/step - loss: 0.0843 - recall: 0.8937 - val_loss: 0.0697 - val_recall: 0.9085\n",
"Epoch 33/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 702us/step - loss: 0.1078 - recall: 0.8795 - val_loss: 0.0778 - val_recall: 0.9085\n",
"Epoch 34/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 714us/step - loss: 0.1032 - recall: 0.8586 - val_loss: 0.0621 - val_recall: 0.9421\n",
"Epoch 35/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 704us/step - loss: 0.0945 - recall: 0.8980 - val_loss: 0.0653 - val_recall: 0.9146\n",
"Epoch 36/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 689us/step - loss: 0.0949 - recall: 0.8787 - val_loss: 0.0623 - val_recall: 0.9177\n",
"Epoch 37/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 681us/step - loss: 0.0913 - recall: 0.8905 - val_loss: 0.0600 - val_recall: 0.9360\n",
"Epoch 38/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 732us/step - loss: 0.1024 - recall: 0.8951 - val_loss: 0.0591 - val_recall: 0.9329\n",
"Epoch 39/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 740us/step - loss: 0.0843 - recall: 0.9101 - val_loss: 0.0645 - val_recall: 0.9543\n",
"Epoch 40/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 695us/step - loss: 0.0776 - recall: 0.9148 - val_loss: 0.0570 - val_recall: 0.9299\n",
"Epoch 41/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 696us/step - loss: 0.0919 - recall: 0.8805 - val_loss: 0.0907 - val_recall: 0.8811\n",
"Epoch 42/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 714us/step - loss: 0.0829 - recall: 0.8974 - val_loss: 0.0611 - val_recall: 0.9512\n",
"Epoch 43/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 697us/step - loss: 0.0878 - recall: 0.8903 - val_loss: 0.0630 - val_recall: 0.9421\n",
"Epoch 44/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 679us/step - loss: 0.0905 - recall: 0.8699 - val_loss: 0.0643 - val_recall: 0.9116\n",
"Epoch 45/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 688us/step - loss: 0.0783 - recall: 0.9044 - val_loss: 0.0620 - val_recall: 0.9268\n",
"Epoch 46/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.1171 - recall: 0.8616 - val_loss: 0.0602 - val_recall: 0.9268\n",
"Epoch 47/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 695us/step - loss: 0.0749 - recall: 0.9167 - val_loss: 0.0610 - val_recall: 0.9329\n",
"Epoch 48/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.0844 - recall: 0.9041 - val_loss: 0.0593 - val_recall: 0.9329\n",
"Epoch 49/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 688us/step - loss: 0.0926 - recall: 0.8833 - val_loss: 0.0699 - val_recall: 0.9055\n",
"Epoch 50/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.0744 - recall: 0.8977 - val_loss: 0.0653 - val_recall: 0.9207\n",
"Epoch 51/150\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 740us/step - loss: 0.0798 - recall: 0.9097 - val_loss: 0.0656 - val_recall: 0.8811\n",
"Epoch 52/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 692us/step - loss: 0.0817 - recall: 0.8758 - val_loss: 0.0687 - val_recall: 0.8750\n",
"Epoch 53/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 718us/step - loss: 0.0924 - recall: 0.8739 - val_loss: 0.0629 - val_recall: 0.9543\n",
"Epoch 54/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 760us/step - loss: 0.0955 - recall: 0.8808 - val_loss: 0.0569 - val_recall: 0.9268\n",
"Epoch 55/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 737us/step - loss: 0.0831 - recall: 0.8746 - val_loss: 0.0690 - val_recall: 0.8963\n",
"Epoch 56/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 695us/step - loss: 0.0903 - recall: 0.8777 - val_loss: 0.0676 - val_recall: 0.9360\n",
"Epoch 57/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 733us/step - loss: 0.0823 - recall: 0.8902 - val_loss: 0.0657 - val_recall: 0.9116\n",
"Epoch 58/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 715us/step - loss: 0.0837 - recall: 0.8942 - val_loss: 0.0564 - val_recall: 0.9329\n",
"Epoch 59/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 684us/step - loss: 0.0713 - recall: 0.9216 - val_loss: 0.0554 - val_recall: 0.9268\n",
"Epoch 60/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 672us/step - loss: 0.0821 - recall: 0.8943 - val_loss: 0.0558 - val_recall: 0.9512\n",
"Epoch 61/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 683us/step - loss: 0.0806 - recall: 0.9253 - val_loss: 0.0578 - val_recall: 0.9268\n",
"Epoch 62/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 674us/step - loss: 0.0683 - recall: 0.9120 - val_loss: 0.0580 - val_recall: 0.9512\n",
"Epoch 63/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 701us/step - loss: 0.0728 - recall: 0.9101 - val_loss: 0.0530 - val_recall: 0.9543\n",
"Epoch 64/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 920us/step - loss: 0.0720 - recall: 0.9084 - val_loss: 0.0805 - val_recall: 0.9146\n",
"Epoch 65/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 712us/step - loss: 0.0804 - recall: 0.9062 - val_loss: 0.0568 - val_recall: 0.9360\n",
"Epoch 66/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 688us/step - loss: 0.0816 - recall: 0.8874 - val_loss: 0.0813 - val_recall: 0.9085\n",
"Epoch 67/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 692us/step - loss: 0.0738 - recall: 0.9048 - val_loss: 0.0570 - val_recall: 0.9299\n",
"Epoch 68/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 687us/step - loss: 0.0904 - recall: 0.8914 - val_loss: 0.0696 - val_recall: 0.9146\n",
"Epoch 69/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 692us/step - loss: 0.0753 - recall: 0.9121 - val_loss: 0.0529 - val_recall: 0.9421\n",
"Epoch 70/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 727us/step - loss: 0.0809 - recall: 0.8937 - val_loss: 0.0577 - val_recall: 0.9329\n",
"Epoch 71/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 731us/step - loss: 0.0806 - recall: 0.9093 - val_loss: 0.0559 - val_recall: 0.9268\n",
"Epoch 72/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 758us/step - loss: 0.0801 - recall: 0.9094 - val_loss: 0.0618 - val_recall: 0.9268\n",
"Epoch 73/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 684us/step - loss: 0.0926 - recall: 0.8799 - val_loss: 0.0562 - val_recall: 0.9390\n",
"Epoch 74/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 673us/step - loss: 0.0842 - recall: 0.8528 - val_loss: 0.0595 - val_recall: 0.9604\n",
"Epoch 75/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 676us/step - loss: 0.0859 - recall: 0.8972 - val_loss: 0.0562 - val_recall: 0.9543\n",
"Epoch 76/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 690us/step - loss: 0.0797 - recall: 0.9134 - val_loss: 0.0543 - val_recall: 0.9451\n",
"Epoch 77/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 718us/step - loss: 0.0722 - recall: 0.9224 - val_loss: 0.0533 - val_recall: 0.9329\n",
"Epoch 78/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 711us/step - loss: 0.0754 - recall: 0.9083 - val_loss: 0.0550 - val_recall: 0.9512\n",
"Epoch 79/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 681us/step - loss: 0.0836 - recall: 0.9022 - val_loss: 0.0588 - val_recall: 0.9207\n",
"Epoch 80/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 675us/step - loss: 0.0723 - recall: 0.9091 - val_loss: 0.0582 - val_recall: 0.9268\n",
"Epoch 81/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 689us/step - loss: 0.0789 - recall: 0.9194 - val_loss: 0.0538 - val_recall: 0.9451\n",
"Epoch 82/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 701us/step - loss: 0.0645 - recall: 0.9269 - val_loss: 0.0547 - val_recall: 0.9299\n",
"Epoch 83/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 691us/step - loss: 0.0689 - recall: 0.9153 - val_loss: 0.0623 - val_recall: 0.9116\n",
"Epoch 84/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 721us/step - loss: 0.0702 - recall: 0.9023 - val_loss: 0.0706 - val_recall: 0.9177\n",
"Epoch 85/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 714us/step - loss: 0.0697 - recall: 0.9192 - val_loss: 0.0631 - val_recall: 0.9116\n",
"Epoch 86/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 717us/step - loss: 0.0692 - recall: 0.9217 - val_loss: 0.0615 - val_recall: 0.9177\n",
"Epoch 87/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 724us/step - loss: 0.0719 - recall: 0.9176 - val_loss: 0.0537 - val_recall: 0.9299\n",
"Epoch 88/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 719us/step - loss: 0.0729 - recall: 0.8980 - val_loss: 0.0504 - val_recall: 0.9543\n",
"Epoch 89/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 759us/step - loss: 0.0742 - recall: 0.9100 - val_loss: 0.0528 - val_recall: 0.9482\n",
"Epoch 90/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 721us/step - loss: 0.0651 - recall: 0.9180 - val_loss: 0.0540 - val_recall: 0.9451\n",
"Epoch 91/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 740us/step - loss: 0.0688 - recall: 0.9152 - val_loss: 0.0579 - val_recall: 0.9238\n",
"Epoch 92/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 714us/step - loss: 0.0755 - recall: 0.8970 - val_loss: 0.0582 - val_recall: 0.9299\n",
"Epoch 93/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 720us/step - loss: 0.0754 - recall: 0.9183 - val_loss: 0.0543 - val_recall: 0.9329\n",
"Epoch 94/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 716us/step - loss: 0.0844 - recall: 0.9065 - val_loss: 0.0597 - val_recall: 0.9207\n",
"Epoch 95/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 705us/step - loss: 0.0653 - recall: 0.9142 - val_loss: 0.0565 - val_recall: 0.9543\n",
"Epoch 96/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 720us/step - loss: 0.0725 - recall: 0.9189 - val_loss: 0.0526 - val_recall: 0.9390\n",
"Epoch 97/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 725us/step - loss: 0.0568 - recall: 0.9391 - val_loss: 0.0580 - val_recall: 0.9512\n",
"Epoch 98/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 725us/step - loss: 0.0655 - recall: 0.9166 - val_loss: 0.0556 - val_recall: 0.9238\n",
"Epoch 99/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 716us/step - loss: 0.0712 - recall: 0.9162 - val_loss: 0.0607 - val_recall: 0.9207\n",
"Epoch 100/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 733us/step - loss: 0.0708 - recall: 0.9355 - val_loss: 0.0541 - val_recall: 0.9451\n",
"Epoch 101/150\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 723us/step - loss: 0.0656 - recall: 0.9288 - val_loss: 0.0570 - val_recall: 0.9390\n",
"Epoch 102/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 699us/step - loss: 0.0820 - recall: 0.8863 - val_loss: 0.0519 - val_recall: 0.9543\n",
"Epoch 103/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 694us/step - loss: 0.0690 - recall: 0.9241 - val_loss: 0.0566 - val_recall: 0.9329\n",
"Epoch 104/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 690us/step - loss: 0.0670 - recall: 0.9054 - val_loss: 0.0563 - val_recall: 0.9573\n",
"Epoch 105/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 745us/step - loss: 0.0710 - recall: 0.9254 - val_loss: 0.0524 - val_recall: 0.9451\n",
"Epoch 106/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 713us/step - loss: 0.0682 - recall: 0.9020 - val_loss: 0.0586 - val_recall: 0.9390\n",
"Epoch 107/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 704us/step - loss: 0.0626 - recall: 0.9052 - val_loss: 0.0575 - val_recall: 0.9390\n",
"Epoch 108/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 713us/step - loss: 0.0696 - recall: 0.9244 - val_loss: 0.0636 - val_recall: 0.9055\n",
"Epoch 109/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 708us/step - loss: 0.0726 - recall: 0.9079 - val_loss: 0.0585 - val_recall: 0.9390\n",
"Epoch 110/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 713us/step - loss: 0.0577 - recall: 0.9247 - val_loss: 0.0641 - val_recall: 0.9268\n",
"Epoch 111/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 708us/step - loss: 0.0657 - recall: 0.9169 - val_loss: 0.0534 - val_recall: 0.9421\n",
"Epoch 112/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 690us/step - loss: 0.0632 - recall: 0.9297 - val_loss: 0.0559 - val_recall: 0.9299\n",
"Epoch 113/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 698us/step - loss: 0.0658 - recall: 0.9110 - val_loss: 0.0700 - val_recall: 0.9451\n",
"Epoch 114/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 701us/step - loss: 0.0834 - recall: 0.8953 - val_loss: 0.0579 - val_recall: 0.9360\n",
"Epoch 115/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 724us/step - loss: 0.0585 - recall: 0.9223 - val_loss: 0.0577 - val_recall: 0.9512\n",
"Epoch 116/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 708us/step - loss: 0.0571 - recall: 0.9246 - val_loss: 0.0555 - val_recall: 0.9390\n",
"Epoch 117/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 704us/step - loss: 0.0626 - recall: 0.9256 - val_loss: 0.0542 - val_recall: 0.9512\n",
"Epoch 118/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 712us/step - loss: 0.0618 - recall: 0.9194 - val_loss: 0.0539 - val_recall: 0.9604\n",
"Epoch 119/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 739us/step - loss: 0.0705 - recall: 0.9115 - val_loss: 0.0711 - val_recall: 0.9085\n",
"Epoch 120/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 699us/step - loss: 0.0696 - recall: 0.9022 - val_loss: 0.0558 - val_recall: 0.9268\n",
"Epoch 121/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 762us/step - loss: 0.0599 - recall: 0.9314 - val_loss: 0.0517 - val_recall: 0.9543\n",
"Epoch 122/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 687us/step - loss: 0.0680 - recall: 0.9293 - val_loss: 0.0526 - val_recall: 0.9451\n",
"Epoch 123/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 690us/step - loss: 0.0642 - recall: 0.9211 - val_loss: 0.0562 - val_recall: 0.9146\n",
"Epoch 124/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 705us/step - loss: 0.0636 - recall: 0.9234 - val_loss: 0.0606 - val_recall: 0.9604\n",
"Epoch 125/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 690us/step - loss: 0.0616 - recall: 0.9272 - val_loss: 0.0529 - val_recall: 0.9421\n",
"Epoch 126/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 700us/step - loss: 0.0525 - recall: 0.9250 - val_loss: 0.0523 - val_recall: 0.9329\n",
"Epoch 127/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 720us/step - loss: 0.0713 - recall: 0.9064 - val_loss: 0.0546 - val_recall: 0.9238\n",
"Epoch 128/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 724us/step - loss: 0.0654 - recall: 0.9107 - val_loss: 0.0554 - val_recall: 0.9421\n",
"Epoch 129/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 720us/step - loss: 0.0663 - recall: 0.9090 - val_loss: 0.0543 - val_recall: 0.9421\n",
"Epoch 130/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 722us/step - loss: 0.0625 - recall: 0.9296 - val_loss: 0.0626 - val_recall: 0.9238\n",
"Epoch 131/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 713us/step - loss: 0.0691 - recall: 0.9230 - val_loss: 0.0514 - val_recall: 0.9451\n",
"Epoch 132/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 712us/step - loss: 0.0649 - recall: 0.9119 - val_loss: 0.0567 - val_recall: 0.9421\n",
"Epoch 133/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 696us/step - loss: 0.0536 - recall: 0.9381 - val_loss: 0.0506 - val_recall: 0.9543\n",
"Epoch 134/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 701us/step - loss: 0.0766 - recall: 0.8950 - val_loss: 0.0538 - val_recall: 0.9482\n",
"Epoch 135/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 704us/step - loss: 0.0539 - recall: 0.9467 - val_loss: 0.0511 - val_recall: 0.9512\n",
"Epoch 136/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 719us/step - loss: 0.0548 - recall: 0.9318 - val_loss: 0.0748 - val_recall: 0.9177\n",
"Epoch 137/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 970us/step - loss: 0.0726 - recall: 0.9191 - val_loss: 0.0543 - val_recall: 0.9268\n",
"Epoch 138/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 868us/step - loss: 0.0763 - recall: 0.9184 - val_loss: 0.0542 - val_recall: 0.9360\n",
"Epoch 139/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 741us/step - loss: 0.0584 - recall: 0.9303 - val_loss: 0.0624 - val_recall: 0.8963\n",
"Epoch 140/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 711us/step - loss: 0.0574 - recall: 0.9102 - val_loss: 0.0533 - val_recall: 0.9512\n",
"Epoch 141/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 708us/step - loss: 0.0659 - recall: 0.9270 - val_loss: 0.0520 - val_recall: 0.9451\n",
"Epoch 142/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 702us/step - loss: 0.0595 - recall: 0.9265 - val_loss: 0.0562 - val_recall: 0.9543\n",
"Epoch 143/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 699us/step - loss: 0.0536 - recall: 0.9274 - val_loss: 0.0505 - val_recall: 0.9451\n",
"Epoch 144/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 718us/step - loss: 0.0555 - recall: 0.9349 - val_loss: 0.0549 - val_recall: 0.9451\n",
"Epoch 145/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 719us/step - loss: 0.0669 - recall: 0.9176 - val_loss: 0.0520 - val_recall: 0.9360\n",
"Epoch 146/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 710us/step - loss: 0.0681 - recall: 0.9204 - val_loss: 0.0544 - val_recall: 0.9421\n",
"Epoch 147/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 720us/step - loss: 0.0555 - recall: 0.9366 - val_loss: 0.0520 - val_recall: 0.9329\n",
"Epoch 148/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 711us/step - loss: 0.0511 - recall: 0.9315 - val_loss: 0.0598 - val_recall: 0.9177\n",
"Epoch 149/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 715us/step - loss: 0.0674 - recall: 0.9155 - val_loss: 0.0530 - val_recall: 0.9390\n",
"Epoch 150/150\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 696us/step - loss: 0.0528 - recall: 0.9425 - val_loss: 0.0573 - val_recall: 0.9360\n"
]
}
],
"source": [
"history = model.fit(X_train, y_train, epochs=150, batch_size=32, validation_split=0.2)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAGHCAYAAABChloAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADFaUlEQVR4nOzdd3hT5dsH8G+S7t1SujerrDJa9t57CAiyNzIVEVHEAS4UBfmhLyCKVFkCCoiKLJE9ZJW9KbRAS2lL907O+8eTk9EBBdoGyvdzXbnanJycPElHcp/7fu5HIUmSBCIiIiIiIiIqUUpTD4CIiIiIiIioPGLATURERERERFQKGHATERERERERlQIG3ERERERERESlgAE3ERERERERUSlgwE1ERERERERUChhwExEREREREZUCBtxEREREREREpYABNxEREREREVEpYMBNL4zw8HAoFAocP37c1EMplm3btqFbt26oWLEiLC0t4evri+HDh+PChQumHloBe/bsgUKhKPISHh5u6iFCoVBg8uTJph4GERGVAPk9Xb6YmZnB09MTr7zyCq5evWrq4QEAAgICMGLECN31mzdvPtZ7YnR0NCZPnoxKlSrBysoKzs7OaN26NVavXg1Jkkpn0E8hICCgyM8BrVu3NvXwMGLECNjZ2Zl6GPQCMjP1AIiooBkzZuDLL79E586dsXjxYri7u+PKlStYsGAB6tevjzVr1qBPnz6mHmYBn332Gdq0aVNge6VKlUwwGiIiKu9WrFiB4OBgZGVl4eDBg/j000/x77//4tKlS3B2djb18J7YwYMH0b17d9jZ2eGtt95CSEgIkpOTsX79egwZMgR//PEH1qxZA6Xy2cqdNWvWDF999VWB7Q4ODiYYDdGzgQE30TNm7dq1+PLLLzFhwgQsXrxYt71ly5YYOHAgWrVqhaFDh6Ju3boICgoqs3FlZGTAxsbmoftUqVIFjRs3LqMRERHRi65WrVoICwsDALRu3RpqtRoffvghNm/ejJEjR5p4dE8mKSkJffr0gaOjI44ePQp3d3fdbb169UJISAjeeecd1K1bF++8806ZjUutViMvLw+WlpZF7uPk5MTPAUT5PFunxYieAQcOHEC7du1gb28PGxsbNG3aFH/99ZfRPhkZGZg+fToCAwNhZWUFFxcXhIWFYe3atbp9bty4gVdeeQVeXl6wtLSE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J+su0dHRJf4cAAB5csBtgdQs0UCNXcqJiKik8VSuAZaUExERFc7V1RUqlapANjsuLq5A1lvm6ekJb29vODo66rZVr14dkiTh9u3bqFKlSoH7WFpawtLSsmQHXxg5w21mgRRthptzuImIqKQxw22AXcqJiIgKZ2FhgdDQUOzcudNo+86dO9G0adNC79OsWTPcvXsXaWlpum1XrlyBUqmEj49PqY73kdTZ4qthhptdyomIqIQx4DYgdynXMMNNRERUwLRp0/DDDz/gxx9/xMWLF/HGG28gKioK48ePByDKwYcNG6bbf9CgQahQoQJGjhyJCxcuYN++fXjrrbcwatQoWFtbm+ppCPI63CoL3RxuZriJiKik8Z3FgFI3h9vEAyEiInoGDRgwAAkJCfjoo48QExODWrVqYevWrfD39wcAxMTEICoqSre/nZ0ddu7ciSlTpiAsLAwVKlRA//798cknn5jqKejl6TPcKZmcw01ERKWDAbcBeQ43M9xERESFmzhxIiZOnFjobeHh4QW2BQcHFyhDfyZo53BLKnOk56gBMMNNREQljyXlBuSScnYpJyIiKue0AbdaaaHbxHW4iYiopDHgNqDSrmrCLuVERETlnBxwK0RW28pcCQszfiwiIqKSxXcWA3KGW2LATUREVL5p1+HOVYisNrPbRERUGhhwG9A3TWPATUREVK5pM9y52nY29pacv01ERCWPAbcBlZJdyomIiF4I2nW48xRiDreNpcqUoyEionKKAbcBdiknIiJ6QWjX4c7TZritzBhwExFRyWPAbUAbbzPgJiIiKu+063DnQszdtrZgwE1ERCWPAbcBFZcFIyIiejFo53DnyBlucwbcRERU8hhwG5ADbma4iYiIyjkG3EREVAbYktMAu5QTEVF5sWXLlmLv27Nnz1IcyTNKDrgl8VHI2pw5CCIiKnkMuA0odU3TTDwQIiKip9S7d+9i7adQKKBWq0t3MM+iPOMMtzUz3EREVAoYcBtQaU9uaxhxExHRc06j4RqXD6XNcGdrRKBtxaZpRERUClg/ZUBXUs453EREROWbdh3uLInLghERUelhhtuArmkaM9xERPScW7RoUbH3fe2110pxJM8o7TrcWRptSTkz3EREVAqeKOCOjo6GQqGAj48PAOC///7DmjVrUKNGDYwbN65EB1iWlErO4SYiovLh66+/LtZ+CoXixQy48+QMtwi0OYebiIhKwxMF3IMGDcK4ceMwdOhQxMbGokOHDqhZsyZWrVqF2NhYfPDBByU9zjLBLuVERFReREZGmnoIzzbtHO5MtXYON7uUExFRKXiid5dz586hYcOGAID169ejVq1aOHToENasWYPw8PCSHF+ZUim4DjcREdELQRtwZ8hN05jhJiKiUvBEGe7c3FxYWloCAHbt2qVbvzM4OBgxMTElN7oyptSefmCGm4iIypvbt29jy5YtiIqKQk5OjtFtCxYsMNGoTEjOcGtYUk5ERKXniQLumjVrYunSpejWrRt27tyJjz/+GABw9+5dVKhQoUQHWJaY4SYiovLon3/+Qc+ePREYGIjLly+jVq1auHnzJiRJQv369U09PNPQrsOdnqcNuNk0jYiISsETlZR/8cUX+O6779C6dWsMHDgQderUAQBs2bJFV2r+PGLTNCIiKo9mzpyJN998E+fOnYOVlRV+++03REdHo1WrVnj55ZdNPTzTkEvK1eKjEEvKiYioNDxRhrt169aIj49HSkoKnJ2dddvHjRsHGxubEhtcWWPTNCIiKo8uXryItWvXAgDMzMyQmZkJOzs7fPTRR+jVqxcmTJhg4hGagHYd7nQ1S8qJiKj0PFGGOzMzE9nZ2bpg+9atW1i4cCEuX74MNze3Eh1gWZLX4WbATURE5YmtrS2ys0WA6eXlhevXr+tui4+PN9WwTEudBwDIyBPv/cxwExFRaXiiDHevXr3Qp08fjB8/HklJSWjUqBHMzc0RHx+PBQsWPLdnyjmHm4iIyqPGjRvj4MGDqFGjBrp164Y333wTZ8+excaNG9G4cWNTD880NLkAgHRdwM1lwYiIqOQ90bvLyZMn0aJFCwDAr7/+Cnd3d9y6dQs///wzFi1aVKIDLEvaeJsBNxERlSsLFixAo0aNAACzZ89Ghw4dsG7dOvj7+2P58uUmHp2JqEXAnamdw82SciIiKg1PlOHOyMiAvb09AGDHjh3o06cPlEolGjdujFu3bpXoAMuSvqTcxAMhIiIqQUFBQbrvbWxssHjxYhOO5hmhUQMA8sAu5UREVHqeKMNduXJlbN68GdHR0di+fTs6duwIAIiLi4ODg0OJDrAsqZQsKSciovLn2LFjOHr0aIHtR48exfHjx00womeAtqRcDritzBhwExFRyXuigPuDDz7A9OnTERAQgIYNG6JJkyYARLa7Xr16JTrAssQu5UREVB5NmjQJ0dHRBbbfuXMHkyZNMsGIngEa0TQtDypYmCl1S4MSERGVpCcqKe/Xrx+aN2+OmJgY3RrcANCuXTu89NJLJTa4sqbkHG4iIiqHLly4gPr16xfYXq9ePVy4cMEEI3oGqPUBN+dvExFRaXmigBsAPDw84OHhgdu3b0OhUMDb2xsNGzYsybGVOV1JOTPcRERUjlhaWuLevXtGc7kBICYmBmZmT/xR4PmmzXDnMuAmIqJS9EQl5RqNBh999BEcHR3h7+8PPz8/ODk54eOPP4ZG8/x2HNOVlDPDTURE5UiHDh0wc+ZMJCcn67YlJSXh3XffRYcOHUw4MhPSzuFWSyouCUZERKXmiU5rz5o1C8uXL8fnn3+OZs2aQZIkHDx4ELNnz0ZWVhY+/fTTkh5nmdBnuE08ECIiohI0f/58tGzZEv7+/rpeKxEREXB3d8fKlStNPDoTMZjD7cgMNxERlZInCrh/+ukn/PDDD+jZs6duW506deDt7Y2JEyc+twG3nOHmHG4iIipPvL29cebMGaxevRqnT5+GtbU1Ro4ciYEDB8Lc3NzUwyt7Gg0gibPreVBySTAiIio1TxRwJyYmIjg4uMD24OBgJCYmPvWgTEWprShjSTkREZU3tra2GDdunKmH8WzQlpMDQB7MOIebiIhKzRNNWqpTpw6+/fbbAtu//fZbhISEPPWgTEWlzXBLEiAx6CYionJk5cqVaN68Oby8vHDr1i0AwNdff43ff//dxCMzAW05OSAy3FYMuImIqJQ8UcA9b948/Pjjj6hRowZGjx6NMWPGoEaNGggPD8dXX31V0mMsMyqDNTi5FjcREZUXS5YswbRp09ClSxc8ePAAarUaAODs7IyFCxeadnCmoGaGm4iIysYTBdytWrXClStX8NJLLyEpKQmJiYno06cPzp8/jxUrVpT0GMuMQqEPuBlvExFRefHNN9/g+++/x6xZs4yWAQsLC8PZs2dNODIT0ah13zLDTUREpemJF9/08vIq0Bzt9OnT+Omnn/Djjz8+9cBMwTDDzcZpRERUXkRGRuq6kxuytLREenq6CUZkYto53BooIUHJZcGIiKjU8B3GgErBknIiIip/AgMDERERUWD733//jerVq5f9gExNO4dboxB5B5aUExFRaTFpwD137lw0aNAA9vb2cHNzQ+/evXH58mWTjUdp8GqwUzkREZUXb731FiZNmoR169ZBkiT8999/+PTTTzFz5kzMmDHD1MMre9o53GqFCLS5LBgREZWWJy4pLwl79+7FpEmT0KBBA+Tl5WHWrFno2LEjLly4AFtb2zIfj2GGW7s8JxER0XNv5MiRyMvLw4wZM5CRkYFBgwbB29sb33zzDVq0aGHq4ZU9bYZbDRFocw43ERGVlscKuPv06fPQ25OSkh7rwbdt22Z0fcWKFXBzc8OJEyfQsmXLxzpWSVAalpQzw01EROXI2LFjMXbsWMTHx0Oj0UCtVuOzzz7DpEmTkJmZaerhlS054FYw4CYiotL1WCXljo6OD734+/tj2LBhTzyY5ORkAICLi0uht2dnZyMlJcXoUpKUXBaMiIjKkaSkJAwePBgVK1aEl5cXFi1aBBcXF/zf//0fKleujCNHjjy3jU6filxSDs7hJiKi0vVYGe7SXPJLkiRMmzYNzZs3R61atQrdZ+7cuZgzZ06pjQEQncrVGoldyomI6Ln37rvvYt++fRg+fDi2bduGN954A9u2bUNWVha2bt2KVq1amXqIpqHNcOdBnsPNHrJERFQ6npl3mMmTJ+PMmTNYu3ZtkfvMnDkTycnJukt0dHSJj0Oex80MNxERPe/++usvrFixAl999RW2bNkCSZJQtWpV7N69+8UNtgGDgFt8DLIyY4abiIhKh0mbpsmmTJmCLVu2YN++ffDx8SlyP0tLS1haWpbqWORp3MxwExHR8+7u3buoUaMGACAoKAhWVlYYM2aMiUf1DNAG3LmS+BhkxS7lRERUSkwacEuShClTpmDTpk3Ys2cPAgMDTTkcAKKkHAA07FJORETPOY1GA3Nzc911lUplklVAnjnaOdxyhptzuImIqLSYNOCeNGkS1qxZg99//x329vaIjY0FIJqzWVtbm2RMupJyZriJiOg5J0kSRowYoasOy8rKwvjx4wsE3Rs3bjTF8ExHIwLuXEk7h5sBNxERlRKTBtxLliwBALRu3dpo+4oVKzBixIiyHxD0nco5h5uIiJ53w4cPN7o+ZMgQE43kGaNRAwByJe0cbgbcRERUSkxeUv6skVcGexbHRkRE9DhKc3WR55q2pDyHGW4iIiplz0yX8meFPIebJeVEREQFLV68GIGBgbCyskJoaCj2799frPsdPHgQZmZmqFu3bukOsDh0TdO0GW4uC0ZERKWE7zD5KLksGBERUaHWrVuHqVOnYtasWTh16hRatGiBLl26ICoq6qH3S05OxrBhw9CuXbsyGukj6AJukdlmSTkREZUWBtz5sEs5ERFR4RYsWIDRo0djzJgxqF69OhYuXAhfX19dT5aivPrqqxg0aBCaNGlSRiN9BN063CwpJyKi0sWAOx85w811uImIiPRycnJw4sQJdOzY0Wh7x44dcejQoSLvt2LFCly/fh0ffvhhsR4nOzsbKSkpRpcSp1sWTAUzpQLmKn4cIiKi0sF3mHyU2leEc7iJiIj04uPjoVar4e7ubrTd3d1dt6xnflevXsU777yD1atXw8yseH1a586dC0dHR93F19f3qcdegEYfcDO7TUREpYkBdz7yOtwazuEmIiIqQKF9n5RJklRgGwCo1WoMGjQIc+bMQdWqVYt9/JkzZyI5OVl3iY6OfuoxF6BdFiwPSlgy4CYiolJk0mXBnkVch5uIiKggV1dXqFSqAtnsuLi4AllvAEhNTcXx48dx6tQpTJ48GQCg0WggSRLMzMywY8cOtG3btsD9LC0tYWlpWTpPQqYrKTeDNTuUExFRKeK7TD76OdwmHggREdEzxMLCAqGhodi5c6fR9p07d6Jp06YF9ndwcMDZs2cRERGhu4wfPx7VqlVDREQEGjVqVFZDL0jXNE3JknIiIipVzHDno2LTNCIiokJNmzYNQ4cORVhYGJo0aYJly5YhKioK48ePByDKwe/cuYOff/4ZSqUStWrVMrq/m5sbrKysCmwvc/IcbsmMATcREZUqBtz5sKSciIiocAMGDEBCQgI++ugjxMTEoFatWti6dSv8/f0BADExMY9ck/uZoJvDreIcbiIiKlUMuPNRsUs5ERFRkSZOnIiJEycWelt4ePhD7zt79mzMnj275Af1uHRzuFlSTkREpYtzuPORS8olBtxERETlk8agaRoDbiIiKkUMuPORlzZRa0w8ECIiIiodBk3TrMz5UYiIiEoP32XyUXEONxERUfmmlgNuFawtmOEmIqLSw4A7H3YpJyIiKuc0+oDbiiXlRERUihhw56OUm6Yxw01ERFQ+6ZYFU3EONxERlSoG3PkomeEmIiIq33QZbjNmuImIqFQx4M5HnsPNgJuIiKicUuubpjHDTUREpYkBdz5KdiknIiIq3wzncLNpGhERlSIG3PnoMtycw01ERFQ+6dbhVsHKjB+FiIio9PBdJh9tvM2SciIiovKKy4IREVEZYcCdj66knAE3ERFR+WRQUs453EREVJoYcOfDknIiIqLyTaPWLwtmb2Vu4tEQEVF5xoA7H6VSbprGgJuIiKg8SkrLAABYW1minp+TaQdDRETlGgPufPTrcJt4IERERFQq4lPSAQD1AyrCXMWPQkREVHr4LpOPik3TiIiIyq34tGykZWQBAJpU8TDxaIiIqLxjwJ0PS8qJiIjKr82n7kAFNQDAu4K9iUdDRETlHQPufFTsUk5ERFQuSZKEDcdvw1wbcENpZtoBERFRuceAOx95DjfjbSIiovLl7J1kXL6XCjMFA24iIiobDLjzYUk5ERFR+fTX2RgAgKOltmGLikuCERFR6eKp3XzkZqUMuImIiMqXGZ2C0bSSK5z/UAA5AJQMuImIqHQx4M5HpVsWjAE3ERFReaJSKtCqakVAoREblCrTDoiIiMo9lpTnI5eUM+AmIiIqpzR54itLyomIqJQx4M5Hbpqm1ph4IERERFQ6NLniK5umERFRKWPAnY+KGW4iIqLyTa3NcHMONxERlTIG3PnoM9wMuImIiMoluaScc7iJiKiUMeDOh13KiYiIyjm5pJxzuImIqJQx4M5HznBLLCknIiIqnzQsKSciorLBgDsfXUk5A24iIqLyR6MBJHlZMDZNIyKi0sWAOx+5aRq7lBMREZVDcnYbAFQMuImIqHQx4M5H16Wcc7iJiIjKH3n+NsAMNxERlToG3PloK8q5LBgREVF5pDYMuDmHm4iIShcD7nxUnMNNRERUfmnU+u+Z4SYiolLGgDsflpQTERGVY3JJuUIJKPkxiIiIShffafLRdyk38UCIiIio5OmWBGN2m4iISh8D7nyUnMNNRERUfslzuDl/m4iIygAD7nxYUk5ERFSOyXO4uSQYERGVAQbc+Sh163Az4CYiIip35DncLCknIqIywIA7H7lLOUvKiYiIyiGWlBMRURliwJ2PUhdwm3ggREREVPLYNI2IiMoQA+58WFJORERUjskBN+dwExFRGWDAnY9K+4qwpJyIiKgcYoabiIjKEAPufHTrcDPDTUREVP5wDjcREZUhkwbc+/btQ48ePeDl5QWFQoHNmzebcjgADOdwM+AmIiIqd1hSTkREZcikAXd6ejrq1KmDb7/91pTDMKJfh9vEAyEiIqKSx5JyIiIqQyZ9t+nSpQu6dOlS7P2zs7ORnZ2tu56SklLiY9KVlDPDTUREVP7oAm6WlBMRUel7ruZwz507F46OjrqLr69viT+Gil3KiYiIyi/dHG5muImIqPQ9VwH3zJkzkZycrLtER0eX+GOwSzkREVE5xjncRERUhp6rdxtLS0tYWlqW6mMo2DSNiIio/OIcbiIiKkPPVYa7LKh0y4KZeCBERERU8rgsGBERlSEG3Pnou5Qzw01ERJTf4sWLERgYCCsrK4SGhmL//v1F7rtx40Z06NABFStWhIODA5o0aYLt27eX4WgLoSspZ8BNRESlz6QBd1paGiIiIhAREQEAiIyMREREBKKiokw2JnYpJyIiKty6deswdepUzJo1C6dOnUKLFi3QpUuXIt+39+3bhw4dOmDr1q04ceIE2rRpgx49euDUqVNlPHIDupJylenGQERELwyTTmA6fvw42rRpo7s+bdo0AMDw4cMRHh5ukjFpE9ycw01ERJTPggULMHr0aIwZMwYAsHDhQmzfvh1LlizB3LlzC+y/cOFCo+ufffYZfv/9d/zxxx+oV69eoY9R6kuAclkwIiIqQybNcLdu3RqSJBW4mCrYBlhSTkREVJicnBycOHECHTt2NNresWNHHDp0qFjH0Gg0SE1NhYuLS5H7lPoSoFwWjIiIyhDncOejVLKknIiIKL/4+Hio1Wq4u7sbbXd3d0dsbGyxjjF//nykp6ejf//+Re5T6kuAarQBN5cFIyKiMsB3m3zkLuUadiknIiIqQF4+UyZJUoFthVm7di1mz56N33//HW5ubkXuV+pLgGrU4isz3EREVAb4bpOPkutwExERFeDq6gqVSlUgmx0XF1cg653funXrMHr0aGzYsAHt27cvzWE+GpcFIyKiMsSS8nyU2ldEzTncREREOhYWFggNDcXOnTuNtu/cuRNNmzYt8n5r167FiBEjsGbNGnTr1q20h/loXBaMiIjKEDPc+eiapjHDTUREZGTatGkYOnQowsLC0KRJEyxbtgxRUVEYP348ADH/+s6dO/j5558BiGB72LBh+N///ofGjRvrsuPW1tZwdHQ0zZOQ53BzWTAiIioDDLjzkedwM8NNRERkbMCAAUhISMBHH32EmJgY1KpVC1u3boW/vz8AICYmxmhN7u+++w55eXmYNGkSJk2apNtuyuU/9XO4meEmIqLSx4A7H4VuDreJB0JERPQMmjhxIiZOnFjobfmD6D179pT+gB4XlwUjIqIyxDnc+XAdbiIionJMtywYM9xERFT6GHDnoysp5xxuIiKi8kdumsY53EREVAYYcOfDLuVERETlmFoOuJnhJiKi0seAOx95HW4muImIiMohLgtGRERliAF3PmbaOdx5Gg0kRt1ERETli4ZN04iIqOww4M7H0cYcCoXoUp6QnmPq4RAREVFJ0i0LxoCbiIhKH99t8rE0U8Hd3gqxKVmITsyAq52lqYdEREREJYXLghE989RqNXJzc009DHqBmZubQ6UqmeaafLcphK+LtQi4H/x/e3ce3lSZPXD8e7M0TdJ0X9JCS1v2TZCyCIi4sogLwvxgGAQcUAZZBNxQccEF0VEQ0QHGkWVGUZAZcHRcQQFRXJBFVllLC6WltJRuaZMmub8/QgOFAgVbktTzeZ770N4t59yEvD33vu+9ZVydFOHrcIQQQghRW+SxYEL4LVVVycnJ4eTJk74ORQjCw8OxWq0op+7xdbmk4K5GYoSJjYcKOHzC5utQhBBCCFGbvI8Fkz+BhPA3lcV2bGwsJpPpNxc6QlwOVVWx2Wzk5uYCEB8f/5v2J61NNRpGmgA4UiAFtxBCCFGvuKTgFsIfuVwub7EdFRXl63DE75zRaAQgNzeX2NjY39S9XG6aVo3ECM8BPnyizMeRCCGEEKJWyRVuIfxS5Zhtk8nk40iE8Kj8LP7W+wlIwV2NxFNXuA/LFW4hhBCifpEx3EL4NelGLvxFbX0WpeA+k6MUOF1wHz1Zhsstz+IWQggh6g25wi2EEOIKkoK70hdT4dVmkLUJa2gweq1ChUslp6jc15EJIYQQorbIGG4hRAC4/vrrmTRpUo3XP3ToEIqisHXr1jqLyZ8sXryY8PBw7+/Tpk2jffv2PovnQqTgrlR6HBwl8NPbaDUKCeGV47ilW7kQQghRb1Re4ZYu5UKIWqAoygWne+6557L2u2LFCp5//vkar5+YmEh2djZt2rS5rNerqcrCvnIKCwvjmmuu4eOPP67T1w1kUnBX6jza8++O/0BpPokRp8ZxS8EthBBC1B+VY7jlCrcQohZkZ2d7p9mzZxMaGlpl3uuvv15l/ZregCsyMhKLxVLjOLRaLVarFZ3uyny3rV69muzsbH788Uc6d+7MwIED2bFjxxV57UAjBXelBmkQ3x5cdtjyLxIjT13hLpA7lQshhBD1hnQpFyJgqKqKzeH0yaSqNbuPk9Vq9U5hYWEoiuL9vby8nPDwcD744AOuv/56goODeffdd8nPz2fIkCE0bNgQk8lE27Ztef/996vs9+wu5cnJybz44ouMHDkSi8VCUlISb731lnf52V3K165di6IofPXVV3Ts2BGTyUS3bt3Ys2dPldd54YUXiI2NxWKxcO+99/LYY4/VqGt2VFQUVquVFi1aMH36dCoqKlizZo13eVZWFoMHDyYiIoKoqCjuvPNODh06VGUfCxcupHXr1hgMBuLj4xk/frx32axZs2jbti1ms5nExETGjh1LSUnJRePyR9LaVFIU6Hwf/HccbFxIYrtbATgiV7iFEEKI+kNumiZEwCircNHq6S988tq7nuuNKah2viemTJnCzJkzWbRoEQaDgfLyctLS0pgyZQqhoaF88sknDBs2jNTUVLp06XLe/cycOZPnn3+eJ554gn//+9/cf//9XHfddbRo0eK820ydOpWZM2cSExPDmDFjGDlyJN999x0AS5YsYfr06cydO5fu3buzdOlSZs6cSUpKSo1zq6io4B//+AcAer1nqI7NZuOGG26gR48efPPNN+h0Ol544QX69OnDtm3bCAoKYt68eTz44IO89NJL9O3bl8LCQm9cABqNhjlz5pCcnEx6ejpjx47l0UcfZe7cuTWOzV9Ia3OmNgPhyyehMJM0x89AuDwaTAghhKhP5LFgQogrbNKkSQwYMKDKvIcfftj784QJE/j8889Zvnz5BQvuW2+9lbFjxwKeIv61115j7dq1Fyy4p0+fTs+ePQF47LHH6NevH+Xl5QQHB/PGG28watQo/vznPwPw9NNP8+WXX9boSnK3bt3QaDSUlZXhdrtJTk5m0KBBACxduhSNRsPbb7/tfbTWokWLCA8PZ+3atfTq1YsXXniBhx56iIkTJ3r32alTpyrHrFJKSgrPP/88999/vxTcAU9vhKuHwYY5tDz8PnA/h09Il3IhhBCi3vBe4ZaCWwh/Z9Rr2fVcb5+9dm3p2LFjld9dLhcvvfQSy5YtIysrC7vdjt1ux2w2X3A/V111lffnyq7rubm5Nd4mPj4egNzcXJKSktizZ4+3gK/UuXNnvv7664vmtGzZMlq0aMHevXuZNGkS8+fPJzIyEoBNmzaxf//+c8agl5eXc+DAAXJzczl69Cg33XTTefe/Zs0aXnzxRXbt2kVRURFOp5Py8nJKS0svepz8jRTcZ0u7BzbMwXL0O4K4l2PFYHe6MOhq7z+dEEIIIXzEO4Zb2nUh/J2iKLXWrduXzi4QZ86cyWuvvcbs2bO945QnTZqEw+G44H4qu2xXUhQFt9td420qrzafuU3lvEo1HbuemJhI06ZNadq0KSEhIQwcOJBdu3YRGxuL2+0mLS2NJUuWnLNdTEwMGs2FbyOWkZHBrbfeypgxY3j++eeJjIzk22+/ZdSoUTW+6Zw/kZumnS0yFYIsKKqbJvp8VBWy5MZpQgghRP0gjwUTQvjY+vXrufPOO7n77rtp164dqamp7Nu374rH0bx5c3766acq837++edL3k/Pnj1p06YN06dPB6BDhw7s27eP2NhYmjRpUmUKCwvDYrGQnJzMV199Ve3+fv75Z5xOJzNnzuSaa66hWbNmHD169NIT9BNScJ9NUSDSc6OANEsBIHcqF0IIIeoNeSyYEMLHmjRpwqpVq9iwYQO7d+/mL3/5Czk5OVc8jgkTJrBgwQL++c9/sm/fPl544QW2bdt2zlXvmnjooYf4+9//TlZWFkOHDiU6Opo777yT9evXk56ezrp165g4cSJHjhwBYNq0acycOZM5c+awb98+Nm/ezBtvvAFA48aNcTqdvPHGGxw8eJB33nmH+fPn12ruV5IU3NU5VXC3MuQB8ixuIYQQol5wu0E91ZVSxnALIXzkqaeeokOHDvTu3Zvrr78eq9VK//79r3gcQ4cO5fHHH+fhhx+mQ4cOpKenc8899xAcHHzJ+7rttttITk5m+vTpmEwmvvnmG5KSkhgwYAAtW7Zk5MiRlJWVERoaCsCIESOYPXs2c+fOpXXr1tx2223eq/zt27dn1qxZvPzyy7Rp04YlS5YwY8aMWs39SlLUmnbU90NFRUWEhYVRWFjoffNqxepp8O1r/BjzBwYfHsDI7ik8fXur2tu/EEKIeqvO2qbfqVo9nk4HvBDj+XlKBhjDf3N8QojaUV5eTnp6OikpKZdV8Inaccstt2C1WnnnnXd8HYrPXegzeSltk/Snqk5kKgApmmMAfLL9KE/c2gKdVjoECCGEEAHLfcbNdmQMtxDid85mszF//nx69+6NVqvl/fffZ/Xq1axatcrXodUrUkFW51TBHePIIsocxLEiO2v2HPdxUEIIIYT4TSpvmAbSpVwI8bunKAqffvopPXr0IC0tjY8//pj//Oc/3Hzzzb4OrV6RK9zVifCM4VYKMxnUwcq8bzN5/6dMbmkV5+PAhBBCCHHZXGcW3PInkBDi981oNLJ69Wpfh1HvyRXu6ljiQRcMbidDWnju0rd2Ty7ZhXK3ciGEECJgVV7hVjRwkefACiGEELVBWpvqaDTeq9xJHKNLSiRuFT7YeMTHgQkhhBDisskjwYQQQlxhUnCfz6lx3Jw4yJ+6JAGwbGMmTpfbh0EJIYQQ4rK5KgtuGb8thBDiypCC+3xOPYubE+n0bm0lwqTnaGE5i7475NOwhBBCCHGZ3C7Pv3KFWwghxBUiBff5eAvugwTrtUzp0wKAmav2cCiv1IeBCSGEEOKyVHYp10rBLYQQ4sqQgvt8KruUF6QDMLhTIt0aR1Fe4eaxFdtQVdWHwQkhhBDiklXeNE26lAshhLhCpOA+H+8Y7nRwu1EUhZcGXIVRr+WHgyeY+eVe7E6Xb2MUQgghRM255KZpQgj/dP311zNp0iTv78nJycyePfuC2yiKwocffvibX7u29hMI7rnnHvr37+/9/ezjXhek4D6f0IaeBtllh+KjACRFmXikd3MA3lyznxtfXceSHzM4fMImV7yFEEIIf1c5hlu6lAshasntt9/OzTffXO2y77//HkVR2Lx58yXvd+PGjYwePfq3hlfFtGnTaN++/Tnzs7Oz6du3b62+1tkWL16MoijeKS4ujttvv52dO3fW6ev6A2lxzkerg/BGcOIAnDgIYQ0B+HP3ZMwGLa+t2kfWyTKmrtwBQIRJz7VNYxhwdQN6NI1Gp5VzGUIIIYRfkceCCSFq2ahRoxgwYAAZGRk0atSoyrKFCxfSvn17OnTocMn7jYmJqa0QL8pqtV6R1wkNDWXPnj2oqkpWVhaPPvoo/fr1Y+/evQQFBV2RGHxBqsILOePRYJUURWFwpyTWPnI9U29tyVUNw9BrFQpsFXz8y1H+vHgjVz+/imtf/prrX1nDnxf9xNe/HsPtlivgQgghhE/JY8GECCyqCo5S30w17L162223ERsby+LFi6vMt9lsLFu2jFGjRpGfn8+QIUNo2LAhJpOJtm3b8v77719wv2d3Kd+3bx/XXXcdwcHBtGrVilWrVp2zzZQpU2jWrBkmk4nU1FSeeuopKio833uLFy/m2Wef5ZdffvFeZa6M+ewu5du3b+fGG2/EaDQSFRXF6NGjKSkp8S6v7Jb96quvEh8fT1RUFOPGjfO+1vkoioLVaiU+Pp6OHTsyefJkMjIy2LNnj3edDRs2cN1112E0GklMTOSBBx6gtPT0DavtdjuPPvooiYmJGAwGmjZtyoIFCwBwuVyMGjWKlJQUjEYjzZs35/XXX79gTFeCnOK9kMqC+9vZYLBAq7tA4zlHEazXct91qdx3XSp2p4sdWYV8/Es2H/9ylPxSB8XlnhuzHMq3sWbPcZKjTHRoFEGDcCPRIQYMOg0GvYa2DcJpEhtS45BOlDqwBOvQyxV0IYQQ4tJ4b5omf/4IERAqbPBigm9e+4mjEGS+6Go6nY7hw4ezePFinn76aRRFAWD58uU4HA6GDh2KzWYjLS2NKVOmEBoayieffMKwYcNITU2lS5cuF30Nt9vNgAEDiI6O5ocffqCoqKjacccWi4XFixeTkJDA9u3bue+++7BYLDz66KMMHjyYHTt28Pnnn7N69WoAwsLCztmHzWajT58+XHPNNWzcuJHc3Fzuvfdexo8fX+Wkwpo1a4iPj2fNmjXs37+fwYMH0759e+67776L5gNw8uRJ3nvvPQD0es9J0O3bt9O7d2+ef/55FixYwPHjxxk/fjzjx49n0aJFAAwfPpzvv/+eOXPm0K5dO9LT08nLy/Mep4YNG/LBBx8QHR3Nhg0bGD16NPHx8QwaNKhGcdUFaXEupO0fYNsyz53K/z0SjA+B1uBpqNsOhBueBF0QBp2WtEaRpDWKZGq/luw7VoLD5cZe4WL17mMs3XiYQ/k2DuXb0OLChJ1iTN6XaWG10DklkswTNvYdK6GorAIV0GoU2jQIpVNyJBUuN6t2HWPvsRJ0GoXUGDNJkSaCdBr0Wg1tEsK4o30CcaHBvjteQgghhD+rLLhlDLcQohaNHDmSV155hbVr13LDDTcAnu7kAwYMICIigoiICB5++GHv+hMmTODzzz9n+fLlNSq4V69eze7duzl06BANG3qGub744ovnjLt+8sknvT8nJyfz0EMPsWzZMh599FGMRiMhISHodLoLdiFfsmQJZWVl/Otf/8Js9pxwePPNN7n99tt5+eWXiYuLAyAiIoI333wTrVZLixYt6NevH1999dUFC+7CwkJCQkJQVRWbzQbAHXfcQYsWnscvv/LKK/zpT3/ynkxo2rQpc+bMoWfPnsybN4/MzEw++OADVq1a5R03n5qa6t2/Xq/n2Wef9f6ekpLChg0b+OCDD6Tg9luJnWHSNvhhPnz/JpQVnF723etwcB38YSFENfbO1hdn0ap4J4QnQnwTuqRGMenmZqzZk8vJI3vo/csEQh3HeTPuWX6kHZszC/g1p5hfc4qrDeG7/fmcPLAJE+XsVT0fRqdbZe+xEvYeO921479bjzLjs910TokkNSaEOEswza0hdG8SjSVYT1F5Bev2HMflVund2ooxSFs3x0wIIYTwV/JYMCECi97kudLsq9euoRYtWtCtWzcWLlzIDTfcwIEDB1i/fj1ffvkl4Onq/NJLL7Fs2TKysrKw2+3Y7XZvQXsxu3fvJikpyVtsA3Tt2vWc9f79738ze/Zs9u/fT0lJCU6nk9DQ0BrnUfla7dq1qxJb9+7dcbvd7Nmzx1twt27dGq32dD0RHx/P9u3bL7hvi8XC5s2bcTqdrFu3jldeeYX58+d7l2/atIn9+/ezZMkS7zxVVXG73aSnp7N9+3a0Wi09e/Y872vMnz+ft99+m4yMDMrKynA4HNXeKO5KkoL7YoLD4Pop0HWc95ncHN8Dnz4M2Vvhb10guilENYH8/ZC76/S2igbi22PuMIzbIlNhxyiw5wPwUP6zMGwlJ6Nv5sudORzIPkFibATNrRaiQwxoFCgtc1Cx9q+03T8fDW6OJPTBctcsStx6Tmz7gvKCbLLDryZLn8JXv+byc0YBPxw8wQ8HT3hD0GsVmsVZ2HusmAqXZyxKhEnPkM5JuFXYnFHAofxStBoFrUYh1mKgudVCcpQZjaLgdKu43G6cbhW3WyXUqCfCFITD5WZ3dhH7c0tIjjbTp7WVro2jsDvdFJQ6cLpV9FrPPsscLkrtLvJK7WQVlJFbbKdRpKeLfXKUydv1prbkFpez62gRx4vt9GwWQ+xvuOpvd7rILbITYzEQrL/8kxSqqnK8xE6U2YBWU7v5CiGEqCF5LJgQgUVRatSt2x+MGjWK8ePH87e//Y1FixbRqFEjbrrpJgBmzpzJa6+9xuzZs2nbti1ms5lJkybhcDhqtO/qnoZ09t/PP/zwA3/84x959tln6d27N2FhYSxdupSZM2deUh6qqp73b/Mz51d2Az9zmdvtvuC+NRoNTZo0ATwnKXJychg8eDDffPMN4OkS/pe//IUHHnjgnG2TkpLYv3//Bff/wQcfMHnyZGbOnEnXrl2xWCy88sor/Pjjjxfcrq5Ji1NThhCwtvX8bG0LSV1h5V/g0HpPkV1ZaCsaiG4ORUfBXghHN3umSvHtwBgJB9fAkv8jvPGNDMr8AUpyICLFszysoefLJfN7SP/m1IYKDY9+Dm9vIKyijAbuM25KEGLl/sY3kHdVN75xtSHDHkJOYTkbD53gYF4pO48WoeCme5QNu0vl55MW5q49UG2aRwrK2Jx58tRvKg2V4yQqxwmnBLNSzsfuZqSr8VW22XAgn/d+zERRPPeX0ODGjQJcvLA06DTeAlTB8581WK+hXcNwuqRGYjboCN7zX9Ky3mW9+Ra+MN6OVqsh3KQnzKjH5nBRUOqgwOagwFZBfomdolPj5wF0GoXebay0ig9l77FiDuWVEmEOIinSRFxoMIZTXfIru+Y7nG7S80o4cLyUg8dLyDxhw616vu8TwoyYgrScKHVQWFaBNSyYFlYLzeIsNLdaaBpr4WSZg93ZxRwvtnN1UjhdG0exOaOA11bv45fDJ7GGBtP/6gb0aWMlJdpMmLGaqywnD1OuNfPFgTI2ZRTQMj6UHjE2GoQZUCJTACgodfD5zhzS80qJNAcRHWIgOsTzb6zFQFTI6cLe5nByILeUDQfy+P5gPiXlTprEhtAkNoSkSBMNIozotRp2ZxexJ6eYWIuBHs1iSI021/rJkLPtzy0hu7CMtg3CCDfV/O6UlScwDuSWEmrUkRhpIjRYrlgJIS5CupQLIerIoEGDmDhxIu+99x7//Oc/ue+++7x/R61fv54777yTu+++G/AUlvv27aNly5Y12nerVq3IzMzk6NGjJCR4xrR///33Vdb57rvvaNSoEVOnTvXOy8jIqLJOUFAQLpfroq/1z3/+k9LSUu9V7u+++w6NRkOzZs1qFG9NTZ48mVmzZrFy5UruuusuOnTowM6dO71F+dnatm2L2+1m3bp11T6Kbf369XTr1o2xY8d65x04UH3NcyVJi3O5whrAiI/hZCbk7fVMIXHQ+EYwRXoqz6Is2PkhbP6nZ3mTW+D/FnuK8ncHQuYG2PXh6X0WpJ++il5Jb4J+syC2Bfx3Ahw71VUjMhXCkyDzR0+x/sv7RPM+AwAapEGzvpAUTlHGL1Rk7yCieB+aUk8X9EJrK1ZrumEIMtA8uIBYCtBWlEBFKXaXwkm3kXKHk6TyPVhcBZwtXd+EX4ydMYfHEhYWQc6JkxzNPkqoI5e2mnSaK4cpIIyV6nX819UdnV6PVV9GqEEhJCwSQ0gUOwo0/JxVjt15+kyYgps4Cgh3lPLdr3F8/WsOk3QrmKhbAUCyfQ9W1/c8XnEv5egx4iBYsWPEgQ4XboIJUo2YFAPWqEjMBj3bswr5ZFs2n2zLPvUqKo2VoyRqdoJyggw1kmw1Cjt6FFSCcBKhFNOYEuIJJkGxcliJ54g7gqyTZSi4aaMcYqBmJ5oilbIiA3l7gzisGvgYA+mqlYNqPOqpBwBUnoSolFNUzvx1B5i/zvOfP8yoxxKsI0irIUTn5l7n+9xW8m8cBPNLxUD+6+pBQ91/sWo/w62o/M9wGyvDR7DrcD49lU2YKWeBqwvHiajyHmk1CnEWA3anm/xSB1pcuDh9hf7njHPf17PFWAxEmYMwBWkxG3SYg3SYgrS4VBWnS0WrUYg0BxFpDiJIp0F7qlGxO124y4pIcR6gmfsgEY6jZBDPJntDjipxREWEoQ8O4fNfC9h2pND7ek1iQ2gUaSLcFESQTiEj30ZGvg2NBuLDjMSEGCh1OCmwVXDkhI380qpnhU1BWkxBWoL1WlJjQuiSEknHRhE0iDASYzFQXuEmPa+UQ3mlHMwrJT2vlJM2B0Faz8mWcJOe6BADIcE6bHYnxXYnFS43quo5ntawYBIjTNgcTrYdKWRfbglxoZ6TLjEhBvJK7eSXOHA43ehdpZgqCijSR1OhGIixGGgfDa3D7MQ2aoGi9ZwcqHC5ycgvJff4cfT7PsV98jA79FexRW1KdKiZTsmRtG0QhtPtxuZwEaTTEBcajMWgIz2/lB1ZheSXOGho20lK7lc4LEkUNr4dgyWKhPBgYi3BaDUKqqpSWFbBruwidh0torzCRVxoMHGhwZgNWoK0WkwGLTEWAxaDjkP5Nn48mE/mCRvJ0Waax1mINAfhcquUO11kFZRxJK8Q1e0mJT7q1MkZKLE7UVBIiTYTpPP8HzhWVM6hvFLCTUHEWAyEGxQ0mxahbnmHY3E9WOy+jR0FnvfNFKQlPiyYRpFGUsK1REeEE2MxoKBQ4nBir3ARYtARatRX2+OksKyCL3fmsHbPcUKNOtIaRdI+MZzokCAswfoqvUsqj4nTrRJlDqrzk0vCT8hN04QQdSQkJITBgwfzxBNPUFhYyD333ONd1qRJE/7zn/+wYcMGIiIimDVrFjk5OTUuuG+++WaaN2/O8OHDmTlzJkVFRVUK68rXyMzMZOnSpXTq1IlPPvmElStXVlknOTmZ9PR0tm7dSsOGDbFYLBgMhirrDB06lGeeeYYRI0Ywbdo0jh8/zoQJExg2bJi3O3ltCQ0N5d577+WZZ56hf//+TJkyhWuuuYZx48Zx3333YTab2b17N6tWreKNN94gOTmZESNGMHLkSO9N0zIyMsjNzWXQoEE0adKEf/3rX3zxxRekpKTwzjvvsHHjRlJSUmo17kslLc5voSgQ0cgzNb3l3GVhDaHbeE939JMZnud6V/5R96dlsO5lT5f1Rt0gsjEc/xVytkNpLjhsoNFCp3shprlnm9FrIGMDhDaA6FNnfirK4fCPcOBrz5SzDbI2eSagyqgNbRC4XYSd3MVAdlGdECDqzBkavae4N0UCChz+kZSK/aRU7IeiszY+49MUxwnGKB8yRvPhqThPTaeHnaMa9LiDQkCjR9Xo0NryUNyeIsqNhkJtJBEuz10HM2NvoEHet9zCJm7Rbqo29ipKNWA34jY7UV1OVEWDUxuMRtEQVFF48e3PouqCKQ9phLb8BEHlxy+4bonGQrapBbllCiUONygaEqPMpESbKSqxcfxkMWXlZSguBzqXk4ISC1lqNJ00e2iuOQJAKDae1r/DVP17aDl9JvJO+8fckLMas74creKp5J/SL2GTsRs57jDCHTmYXUWUqXrKbMGEK8UkG3KIUYoo1IRTbklCCQoBWx5a+0nK3HoK3CYKVRMEh6EPiSTfruFwoQtHmUJwmQMTdsKUEmKUQqIoQkXBhQYbBnLUSI6pEbjQoMdJlFJMK+UQqZqcKsckFuh01nG63R3DrqBksoOSSS8zUZBnQZfnxKLYCMVGY6WUUGyEKjYsxTZClDK0uNGgUo6e4/pwHEERWFwFWN3HsCg2Tjgs5NvDyCsJI+9gKBtUAw2UPJI0uQRRQZFqxkAQ1ysF3K3kocXFATWBA+4ENKhEKMXocXJUjaZCjSGUChKUfKKVQhRU3CioBJOqhhOhhpCg5JO6O5sIiqlAhxMtVuUEVuX0CY1javipEzmeD3+JamSHvg1HtIm4yk4Sq+bTTbMTg+IpBLoABWoImWos6s8Kx9FQpgZRRjA2DGxWg7ArBipUDW40dNbspr3m9KML7Zuns9bdjk1qHHlEUKHo0bgrMOAgRikkXikgVjlJLCeJUIrJUmPYqSaT7rbiRAsaDVq3k2DFTjgV2LGzT/H8v3SoOjS4aaXJoIeSCcDP7uYsdbdBrzhJVHIJoZz1WCkJSabU4UJXXoBZKaNUNWLDwJ+0X9NccxgFsOZsY5y6kI9d11COAR0umipZtNakE6qUsc/dgC/cTTmsxlBOECoKMUohsUoBeq2WcksSushGuMsKUYqPYispokA1E6+a0ePi2GYb66ighGBKMdJAV0RbzSES1RwOq1H86mxAEWYa6gpopC/CFnM1XUbPqdF3gghQ8lgwIUQdGjVqFAsWLKBXr14kJSV55z/11FOkp6fTu3dvTCYTo0ePpn///hQW1uxvUo1Gw8qVKxk1ahSdO3cmOTmZOXPm0KdPH+86d955J5MnT2b8+PHY7Xb69evHU089xbRp07zrDBw4kBUrVnDDDTdw8uRJFi1aVOXEAIDJZOKLL75g4sSJdOrUCZPJxMCBA5k1a9ZvOjbnM3HiRObMmcPy5csZNGgQ69atY+rUqfTo0QNVVWncuDGDBw/2rj9v3jyeeOIJxo4dS35+PklJSTzxxBMAjBkzhq1btzJ48GAURWHIkCGMHTuWzz77rE5irylFrW5QwBU0d+5cXnnlFbKzs2ndujWzZ8+mR48eNdq2qKiIsLAwCgsLL/mGAPVWcQ7s/Rz2rQKXA+JaQ1wbz79RTaC8CHb/F/Z+CXqj52SBJQGCQyEoBNwVnnVcDrBe5enirj9jDHRpvueqfM42sBeDvcSz3BgB5hhPd/u4Np7lW96FA2s83eONEZ4TCOWFUHYS1PN0Z9HoPOuXn/oC0ujh9tlw9d2QvQ1W3Oc5MQGA4ukBoDd69u2wgaMEuMhHWhcMiafG3hfneLr/uyo8fdo1es/JBWMk2Is84/ILDp2+KgKe45TSE4zhnsdVVJR5/rWXQO5ucJZd+vt2Srkhig0tptLQYKPpjtdQbPkQkYK910vklLiI/mYq5uJTvSDi23lyOezbcSnnc0IXxx4llXR3NC30x2nsPkRIRR5a1XnxjesBpxKETq16Fb5c1ROsVP+MyixdEnmmxjQr3YTRdfbZrAurQM/Pxm7EV2SS7Ey/+AY+VqCG8C9XL3ppN9FSybj4BlfILmMHWk1Z85v3I21T7arV4/nzIvjfJGjeD4a8VyvxCSFqR3l5Oenp6aSkpBAcLE/dEb53oc/kpbRNPi24ly1bxrBhw5g7dy7du3fn73//O2+//Ta7du2qclbofOSPmgCgqqev6p85z1EK5Sc9Raq7wlPwmqI8V+81Wig55hkXH9nYc1LgzG3LT3oKbW3Quft2uz3Fr6PU869G6ymiVZenIHc5PCce9JfwRe5yQmEm5B8ErR6SrgGd4TzrVnhODBzf7SnSVRVUt2cCz/baIM+kO/WIudLjnqEJihY6jwbzqT4GZSc9xXRKz9PxOh1w5CdPb4nwRM+8nB2wffmpXhWJYI4Gp91zDAwWz130QxtAcTacOOg5QWCO8ZwEcdo9x7O88PTJEGe55zi5nZ6TGXqzpydGSKxn34rGs6y8yLPP4mxPntqg0/c6sLY7nUd1x6i8yPP+5mzzxFSaB7Z8zz6Cw86YQk/9G+7JRdF6Tow4bJ6eIKX5nhMkESmefGx5nuNZehxKjoOjBDWsIaWmRLQGI0bXqc9FSKxnSIaigeN7PSdWtPpTJ4Z0UHjE857ogjzH1GI9lbfLc1Kn5JgnXks8RDX1LHdVgMvuGVoS1cQTt+2Ep3eLVg8RyVRogjm272fK93yNvuw44ZHRWMJj0CR395wUUxTP5+3oFig74TmubqfnPXOUQIWNirISystKMOsVNKieXK76I4TEeNbP/gUOrcddlIO9IAvVVYFGH4ROH4wuNA5CrGA59a8xwnP8c7ZB4WGcTid2hwODIRidwXzq/Td6TuwoiidH1e3pdZNwtSfWA1+jZn6PYrBARDJqkJmSo3uwH9uHTqcjJDIOXXAo2ItxlxVgC23M4ZajKVDNXNUwlJBDq7w9cgDPe5lwtSevrM04M39EseWjddnBXYFqjsFuiqOwuIzSnH0oRYdxG8LRhjUgLDycCE2Z54kSGr3n86MLxlVeTIXtJOW6ME6GteCksRFx6nGibQdRKko5oY0myxWOJqoJ7a65sebfDechbVPtqtXj+esnsOENT8+ym56unQCFELVCCm7hb+pFwd2lSxc6dOjAvHnzvPNatmxJ//79mTFjxkW3lz9qhBBC+Btpm2qXHE8hfh+k4Bb+prYKbk1dBnkhDoeDTZs20atXryrze/XqxYYNG6rdxm63U1RUVGUSQgghxJUzd+5c7x8faWlprF+//oLrr1u3jrS0NIKDg0lNTa3yzFUhhBCivvNZwZ2Xl4fL5TrnbndxcXHk5ORUu82MGTMICwvzTomJiVciVCGEEELgGQo2adIkpk6dypYtW+jRowd9+/YlMzOz2vXT09O59dZb6dGjB1u2bOGJJ57ggQce4D//+c8VjlwIIYTwDZ8V3JXOfhTLhR62/vjjj1NYWOidDh8+fCVCFEIIIQQwa9YsRo0axb333kvLli2ZPXs2iYmJVYaGnWn+/PkkJSUxe/ZsWrZsyb333svIkSN59dVXr3DkQohA4eP7OQvhVVufRZ8V3NHR0Wi12nOuZufm5p73GW8Gg4HQ0NAqkxBCCCHq3uUMBfv+++/PWb937978/PPPVFRUf8d+GT4mxO+TXu95XJ/NZvNxJEJ4VH4WKz+bl8tnz+EOCgoiLS2NVatWcdddd3nnr1q1ijvvvNNXYQkhhBCiGpczFCwnJ6fa9Z1OJ3l5ecTHx5+zzYwZM3j22WdrL3AhREDQarWEh4eTm5sLeJ4Hfb5er0LUJVVVsdls5ObmEh4ejlar/U3781nBDfDggw8ybNgwOnbsSNeuXXnrrbfIzMxkzJgxvgxLCCGEEOdxKUPBzrd+dfMrPf744zz44IPe34uKiuSeLUL8TlitVgBv0S2EL4WHh3s/k7+FTwvuwYMHk5+fz3PPPUd2djZt2rTh008/pVGjRhffWAghhBBXzOUMBbNardWur9PpiIqKqnYbg8GAwWConaCFEAFFURTi4+OJjY0977ATIa4EvV7/m69sV/JpwQ0wduxYxo4d6+swhBBCCHEBlzMUrGvXrnz88cdV5n355Zd07NjxN4+JE0LUX1qtttaKHSF8zed3KRdCCCFEYHjwwQd5++23WbhwIbt372by5MlVhoI9/vjjDB8+3Lv+mDFjyMjI4MEHH2T37t0sXLiQBQsW8PDDD/sqBSGEEOKK8vkVbiGEEEIEhosNBcvOzq7yTO6UlBQ+/fRTJk+ezN/+9jcSEhKYM2cOAwcO9FUKQgghxBWlqAH8sLuioiLCwsIoLCyUR4QJIYTwC9I21S45nkIIIfzNpbRNAX2Fu/JcgTyjUwghhL+obJMC+Hy2X5G2XgghhL+5lLY+oAvu4uJiAHlciBBCCL9TXFxMWFiYr8MIeNLWCyGE8Fc1aesDuku52+3m6NGjWCyWCz4DtCYqn/N5+PDhetFlTfLxX/UpF6hf+dSnXKB+5RNIuaiqSnFxMQkJCWg0cm/S36o223oIrM/SxdSnXKB+5VOfcgHJx5/Vp1wgcPK5lLY+oK9wazQaGjZsWKv7DA0N9es391JJPv6rPuUC9Suf+pQL1K98AiUXubJde+qirYfA+SzVRH3KBepXPvUpF5B8/Fl9ygUCI5+atvVy6l0IIYQQQgghhKgDUnALIYQQQgghhBB1QAruUwwGA8888wwGg8HXodQKycd/1adcoH7lU59ygfqVT33KRfhWffos1adcoH7lU59yAcnHn9WnXKD+5QMBftM0IYQQQgghhBDCX8kVbiGEEEIIIYQQog5IwS2EEEIIIYQQQtQBKbiFEEIIIYQQQog6IAW3EEIIIYQQQghRB6TgPmXu3LmkpKQQHBxMWloa69ev93VIFzVjxgw6deqExWIhNjaW/v37s2fPnirrqKrKtGnTSEhIwGg0cv3117Nz504fRVxzM2bMQFEUJk2a5J0XaLlkZWVx9913ExUVhclkon379mzatMm7PJDycTqdPPnkk6SkpGA0GklNTeW5557D7XZ71/HnfL755htuv/12EhISUBSFDz/8sMrymsRut9uZMGEC0dHRmM1m7rjjDo4cOXIFs/C4UC4VFRVMmTKFtm3bYjabSUhIYPjw4Rw9erTKPvwlF7j4e3Omv/zlLyiKwuzZs6vM96d8hH+Ttt7/SHvvP6St95/2RNr6+tXWS8ENLFu2jEmTJjF16lS2bNlCjx496Nu3L5mZmb4O7YLWrVvHuHHj+OGHH1i1ahVOp5NevXpRWlrqXeevf/0rs2bN4s0332Tjxo1YrVZuueUWiouLfRj5hW3cuJG33nqLq666qsr8QMqloKCA7t27o9fr+eyzz9i1axczZ84kPDzcu04g5fPyyy8zf/583nzzTXbv3s1f//pXXnnlFd544w3vOv6cT2lpKe3atePNN9+sdnlNYp80aRIrV65k6dKlfPvtt5SUlHDbbbfhcrmuVBrAhXOx2Wxs3ryZp556is2bN7NixQr27t3LHXfcUWU9f8kFLv7eVPrwww/58ccfSUhIOGeZP+Uj/Je09f5H2nv/ykfaev9pT6Str2dtvSrUzp07q2PGjKkyr0WLFupjjz3mo4guT25urgqo69atU1VVVd1ut2q1WtWXXnrJu055ebkaFhamzp8/31dhXlBxcbHatGlTddWqVWrPnj3ViRMnqqoaeLlMmTJFvfbaa8+7PNDy6devnzpy5Mgq8wYMGKDefffdqqoGVj6AunLlSu/vNYn95MmTql6vV5cuXepdJysrS9VoNOrnn39+xWI/29m5VOenn35SATUjI0NVVf/NRVXPn8+RI0fUBg0aqDt27FAbNWqkvvbaa95l/pyP8C/S1vsXae/9Lx9p6/2zPZG23r/zqYnf/RVuh8PBpk2b6NWrV5X5vXr1YsOGDT6K6vIUFhYCEBkZCUB6ejo5OTlVcjMYDPTs2dNvcxs3bhz9+vXj5ptvrjI/0HL56KOP6NixI//3f/9HbGwsV199Nf/4xz+8ywMtn2uvvZavvvqKvXv3AvDLL7/w7bffcuuttwKBl8+ZahL7pk2bqKioqLJOQkICbdq08fv8CgsLURTFe7Ul0HJxu90MGzaMRx55hNatW5+zPNDyEb4hbb3/kfbe//KRtj5w2xNp6/2bztcB+FpeXh4ul4u4uLgq8+Pi4sjJyfFRVJdOVVUefPBBrr32Wtq0aQPgjb+63DIyMq54jBezdOlSNm/ezMaNG89ZFmi5HDx4kHnz5vHggw/yxBNP8NNPP/HAAw9gMBgYPnx4wOUzZcoUCgsLadGiBVqtFpfLxfTp0xkyZAgQeO/PmWoSe05ODkFBQURERJyzjj9/T5SXl/PYY4/xpz/9idDQUCDwcnn55ZfR6XQ88MAD1S4PtHyEb0hb71+kvffPfKStD8z2RNp6/8vnbL/7gruSoihVfldV9Zx5/mz8+PFs27aNb7/99pxlgZDb4cOHmThxIl9++SXBwcHnXS8QcgHPmbqOHTvy4osvAnD11Vezc+dO5s2bx/Dhw73rBUo+y5Yt49133+W9996jdevWbN26lUmTJpGQkMCIESO86wVKPtW5nNj9Ob+Kigr++Mc/4na7mTt37kXX98dcNm3axOuvv87mzZsvOTZ/zEf4XiB/R0Hgt/Ug7X0lf8xH2vrq+XN+0tb7Xz7V+d13KY+Ojkar1Z5zdiQ3N/ecs2D+asKECXz00UesWbOGhg0beudbrVaAgMht06ZN5ObmkpaWhk6nQ6fTsW7dOubMmYNOp/PGGwi5AMTHx9OqVasq81q2bOm9OU8gvTcAjzzyCI899hh//OMfadu2LcOGDWPy5MnMmDEDCLx8zlST2K1WKw6Hg4KCgvOu408qKioYNGgQ6enprFq1ynvGGwIrl/Xr15Obm0tSUpL3eyEjI4OHHnqI5ORkILDyEb4jbb3/kPbewx/zkbY+sNoTaev9M5/q/O4L7qCgINLS0li1alWV+atWraJbt24+iqpmVFVl/PjxrFixgq+//pqUlJQqy1NSUrBarVVyczgcrFu3zu9yu+mmm9i+fTtbt271Th07dmTo0KFs3bqV1NTUgMkFoHv37uc8tmXv3r00atQICKz3Bjx3xNRoqn5daLVa76NCAi2fM9Uk9rS0NPR6fZV1srOz2bFjh9/lV9kA79u3j9WrVxMVFVVleSDlMmzYMLZt21bleyEhIYFHHnmEL774AgisfITvSFvvP6S99998pK0PnPZE2nr/zadaV/IObf5q6dKlql6vVxcsWKDu2rVLnTRpkmo2m9VDhw75OrQLuv/++9WwsDB17dq1anZ2tney2WzedV566SU1LCxMXbFihbp9+3Z1yJAhanx8vFpUVOTDyGvmzLuWqmpg5fLTTz+pOp1OnT59urpv3z51yZIlqslkUt99913vOoGUz4gRI9QGDRqo//vf/9T09HR1xYoVanR0tProo4961/HnfIqLi9UtW7aoW7ZsUQF11qxZ6pYtW7x386xJ7GPGjFEbNmyorl69Wt28ebN64403qu3atVOdTqff5FJRUaHecccdasOGDdWtW7dW+V6w2+1+l8vF8qnO2XcuVVX/ykf4L2nr/Ze09/5B2nr/aU+kra9fbb0U3Kf87W9/Uxs1aqQGBQWpHTp08D5uw58B1U6LFi3yruN2u9VnnnlGtVqtqsFgUK+77jp1+/btvgv6EpzdAAdaLh9//LHapk0b1WAwqC1atFDfeuutKssDKZ+ioiJ14sSJalJSkhocHKympqaqU6dOrfLF7s/5rFmzptr/KyNGjFBVtWaxl5WVqePHj1cjIyNVo9Go3nbbbWpmZqZf5ZKenn7e74U1a9b4XS4Xy6c61TXC/pSP8G/S1vsnae/9g7T1/tOeSFtfv9p6RVVVtXaulQshhBBCCCGEEKLS734MtxBCCCGEEEIIURek4BZCCCGEEEIIIeqAFNxCCCGEEEIIIUQdkIJbCCGEEEIIIYSoA1JwCyGEEEIIIYQQdUAKbiGEEEIIIYQQog5IwS2EEEIIIYQQQtQBKbiFEEIIIYQQQog6IAW3EOKSKIrChx9+6OswhBBCCFFHpK0XovZIwS1EALnnnntQFOWcqU+fPr4OTQghhBC1QNp6IeoXna8DEEJcmj59+rBo0aIq8wwGg4+iEUIIIURtk7ZeiPpDrnALEWAMBgNWq7XKFBERAXi6gM2bN4++fftiNBpJSUlh+fLlVbbfvn07N954I0ajkaioKEaPHk1JSUmVdRYuXEjr1q0xGAzEx8czfvz4Ksvz8vK46667MJlMNG3alI8++si7rKCggKFDhxITE4PRaKRp06bn/NEghBBCiPOTtl6I+kMKbiHqmaeeeoqBAwfyyy+/cPfddzNkyBB2794NgM1mo0+fPkRERLBx40aWL1/O6tWrqzSy8+bNY9y4cYwePZrt27fz0Ucf0aRJkyqv8eyzzzJo0CC2bdvGrbfeytChQzlx4oT39Xft2sVnn33G7t27mTdvHtHR0VfuAAghhBD1nLT1QgQQVQgRMEaMGKFqtVrVbDZXmZ577jlVVVUVUMeMGVNlmy5duqj333+/qqqq+tZbb6kRERFqSUmJd/knn3yiajQaNScnR1VVVU1ISFCnTp163hgA9cknn/T+XlJSoiqKon722Weqqqrq7bffrv75z3+unYSFEEKI3xlp64WoX2QMtxAB5oYbbmDevHlV5kVGRnp/7tq1a5VlXbt2ZevWrQDs3r2bdu3aYTabvcu7d++O2+1mz549KIrC0aNHuemmmy4Yw1VXXeX92Ww2Y7FYyM3NBeD+++9n4MCBbN68mV69etG/f3+6det2WbkKIYQQv0fS1gtRf0jBLUSAMZvN53T7uhhFUQBQVdX7c3XrGI3GGu1Pr9efs63b7Qagb9++ZGRk8Mknn7B69Wpuuukmxo0bx6uvvnpJMQshhBC/V9LWC1F/yBhuIeqZH3744ZzfW7RoAUCrVq3YunUrpaWl3uXfffcdGo2GZs2aYbFYSE5O5quvvvpNMcTExHDPPffw7rvvMnv2bN56663ftD8hhBBCnCZtvRCBQ65wCxFg7HY7OTk5VebpdDrvzUqWL19Ox44dufbaa1myZAk//fQTCxYsAGDo0KE888wzjBgxgmnTpnH8+HEmTJjAsGHDiIuLA2DatGmMGTOG2NhY+vbtS3FxMd999x0TJkyoUXxPP/00aWlptG7dGrvdzv/+9z9atmxZi0dACCGEqN+krRei/pCCW4gA8/nnnxMfH19lXvPmzfn1118Bz11Fly5dytixY7FarSxZsoRWrVoBYDKZ+OKLL5g4cSKdOnXCZDIxcOBAZs2a5d3XiBEjKC8v57XXXuPhhx8mOjqaP/zhDzWOLygoiMcff5xDhw5hNBrp0aMHS5curYXMhRBCiN8HaeuFqD8UVVVVXwchhKgdiqKwcuVK+vfv7+tQhBBCCFEHpK0XIrDIGG4hhBBCCCGEEKIOSMEthBBCCCGEEELUAelSLoQQQgghhBBC1AG5wi2EEEIIIYQQQtQBKbiFEEIIIYQQQog6IAW3EEIIIYQQQghRB6TgFkIIIYQQQggh6oAU3EIIIYQQQgghRB2QglsIIYQQQgghhKgDUnALIYQQQgghhBB1QApuIYQQQgghhBCiDvw/TLOyMcPBP94AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1200x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Wyciąganie danych z historii treningu\n",
"loss = history.history['loss']\n",
"val_loss = history.history['val_loss']\n",
"recall = history.history['recall']\n",
"val_recall = history.history['val_recall']\n",
"\n",
"# Tworzenie wykresu strat\n",
"plt.figure(figsize=(12, 4))\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(loss, label='Training Loss')\n",
"plt.plot(val_loss, label='Validation Loss')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.title('Loss Over Epochs')\n",
"plt.legend()\n",
"\n",
"# Tworzenie wykresu metryki recall\n",
"plt.subplot(1, 2, 2)\n",
"plt.plot(recall, label='Training Recall')\n",
"plt.plot(val_recall, label='Validation Recall')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Recall')\n",
"plt.title('Recall Over Epochs')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m85/85\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 361us/step - loss: 0.0343 - recall: 0.9618\n",
"Test recall: 95.61%\n"
]
}
],
"source": [
"loss1, recall1 = model.evaluate(X_test, y_test)\n",
"print(f'Test recall: {recall1 * 100:.2f}%')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m85/85\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 477us/step\n"
]
}
],
"source": [
"predictions = model.predict(X_test)\n",
"predictions = (predictions > 0.5).astype(int)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### LSTM"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Warstwa LSTM: Pierwsza warstwa LSTM ma 128 neuronów. Parametr input_shape definiuje kształt danych wejściowych dla modelu LSTM, który odpowiada wymiarom danych wejściowych (liczba próbek, liczba kroków czasowych, liczba cech). W tym przypadku, X_train_seq.shape[1] odpowiada liczbie kroków czasowych, a X_train_seq.shape[2] odpowiada liczbie cech. Aktywacja funkcji ReLU jest używana do wprowadzenia nieliniowości, a return_sequences=True oznacza, że warstwa LSTM zwraca sekwencję wartości, co jest wymagane, gdy kolejna warstwa LSTM ma być dodana.\n",
"\n",
"2. Kolejna warstwa LSTM: Druga warstwa LSTM ma 64 neurony. Ponownie, aktywacja funkcji ReLU jest stosowana do wprowadzenia nieliniowości. W tej warstwie nie ma ustawienia return_sequences, co oznacza, że warstwa LSTM zwraca tylko ostatni stan ukryty.\n",
"\n",
"3. Warstwa wyjściowa: Warstwa gęsta z jednym neuronem i aktywacją sigmoidalną jest dodawana jako warstwa wyjściowa. Aktywacja sigmoidalna przewiduje prawdopodobieństwo przynależności do klasy pozytywnej.\n",
"\n",
"4. Kompilacja modelu: Model jest kompilowany z optymalizatorem Adam i funkcją straty binary_crossentropy, ponieważ model przewiduje binarną klasę wyjściową. Jako metrykę wykorzystuje się odzysk, aby monitorować jakość modelu pod kątem zdolności do wykrywania klasy pozytywnej.\n",
"\n",
"5. Trening modelu z wczesnym zatrzymaniem: Zastosowano technikę wczesnego zatrzymania, aby przerwać trening, jeśli wartość straty walidacji przestanie się poprawiać przez określoną liczbę epok. Opcja restore_best_weights przywraca najlepsze wagi modelu, które osiągnięto podczas treningu."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.keras.layers import LSTM\n",
"from tensorflow.keras.callbacks import EarlyStopping"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"timesteps = 1\n",
"\n",
"X_train_seq = np.reshape(X_train, (X_train.shape[0], timesteps, X_train.shape[1]))\n",
"X_test_seq = np.reshape(X_test, (X_test.shape[0], timesteps, X_test.shape[1]))\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - loss: 0.7878 - recall: 0.4121 - val_loss: 0.1285 - val_recall: 0.8628\n",
"Epoch 2/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.1888 - recall: 0.8334 - val_loss: 0.1064 - val_recall: 0.8506\n",
"Epoch 3/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1572 - recall: 0.8233 - val_loss: 0.1125 - val_recall: 0.8476\n",
"Epoch 4/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1320 - recall: 0.8806 - val_loss: 0.0915 - val_recall: 0.9451\n",
"Epoch 5/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1245 - recall: 0.8882 - val_loss: 0.1028 - val_recall: 0.8902\n",
"Epoch 6/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1413 - recall: 0.8497 - val_loss: 0.1105 - val_recall: 0.9085\n",
"Epoch 7/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1493 - recall: 0.8524 - val_loss: 0.1085 - val_recall: 0.8445\n",
"Epoch 8/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1360 - recall: 0.8580 - val_loss: 0.0899 - val_recall: 0.8902\n",
"Epoch 9/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1072 - recall: 0.8827 - val_loss: 0.0963 - val_recall: 0.8628\n",
"Epoch 10/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1192 - recall: 0.8841 - val_loss: 0.1135 - val_recall: 0.9634\n",
"Epoch 11/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1048 - recall: 0.9008 - val_loss: 0.0744 - val_recall: 0.9116\n",
"Epoch 12/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0967 - recall: 0.9137 - val_loss: 0.0693 - val_recall: 0.9421\n",
"Epoch 13/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0895 - recall: 0.9071 - val_loss: 0.0756 - val_recall: 0.9512\n",
"Epoch 14/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1020 - recall: 0.9079 - val_loss: 0.0688 - val_recall: 0.9421\n",
"Epoch 15/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1061 - recall: 0.9157 - val_loss: 0.0765 - val_recall: 0.9085\n",
"Epoch 16/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0999 - recall: 0.8977 - val_loss: 0.0647 - val_recall: 0.9238\n",
"Epoch 17/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1001 - recall: 0.8897 - val_loss: 0.0749 - val_recall: 0.9116\n",
"Epoch 18/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0923 - recall: 0.8915 - val_loss: 0.0783 - val_recall: 0.9055\n",
"Epoch 19/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0924 - recall: 0.8994 - val_loss: 0.0759 - val_recall: 0.9085\n",
"Epoch 20/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0854 - recall: 0.9025 - val_loss: 0.0688 - val_recall: 0.9329\n",
"Epoch 21/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0927 - recall: 0.8956 - val_loss: 0.0623 - val_recall: 0.9360\n",
"Epoch 22/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0824 - recall: 0.9095 - val_loss: 0.0673 - val_recall: 0.9329\n",
"Epoch 23/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0967 - recall: 0.9021 - val_loss: 0.0628 - val_recall: 0.9360\n",
"Epoch 24/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0834 - recall: 0.8890 - val_loss: 0.0617 - val_recall: 0.9299\n",
"Epoch 25/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0840 - recall: 0.9071 - val_loss: 0.0582 - val_recall: 0.9360\n",
"Epoch 26/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0741 - recall: 0.9110 - val_loss: 0.0607 - val_recall: 0.9543\n",
"Epoch 27/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0909 - recall: 0.9205 - val_loss: 0.0636 - val_recall: 0.9482\n",
"Epoch 28/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1026 - recall: 0.9229 - val_loss: 0.0693 - val_recall: 0.9177\n",
"Epoch 29/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0908 - recall: 0.9381 - val_loss: 0.0646 - val_recall: 0.9543\n",
"Epoch 30/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0826 - recall: 0.9454 - val_loss: 0.0705 - val_recall: 0.9146\n",
"Epoch 31/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0813 - recall: 0.9483 - val_loss: 0.0830 - val_recall: 0.9726\n",
"Epoch 32/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0792 - recall: 0.9441 - val_loss: 0.0580 - val_recall: 0.9573\n",
"Epoch 33/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0893 - recall: 0.9292 - val_loss: 0.0687 - val_recall: 0.9482\n",
"Epoch 34/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0856 - recall: 0.9510 - val_loss: 0.0676 - val_recall: 0.9634\n",
"Epoch 35/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0805 - recall: 0.9423 - val_loss: 0.0592 - val_recall: 0.9573\n",
"Epoch 36/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0891 - recall: 0.9382 - val_loss: 0.0605 - val_recall: 0.9268\n",
"Epoch 37/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0722 - recall: 0.9589 - val_loss: 0.0582 - val_recall: 0.9482\n",
"Epoch 38/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0909 - recall: 0.9437 - val_loss: 0.0556 - val_recall: 0.9390\n",
"Epoch 39/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0833 - recall: 0.9469 - val_loss: 0.0557 - val_recall: 0.9329\n",
"Epoch 40/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0858 - recall: 0.9434 - val_loss: 0.0665 - val_recall: 0.9665\n",
"Epoch 41/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0718 - recall: 0.9576 - val_loss: 0.0595 - val_recall: 0.9268\n",
"Epoch 42/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0714 - recall: 0.9420 - val_loss: 0.0560 - val_recall: 0.9451\n",
"Epoch 43/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0714 - recall: 0.9544 - val_loss: 0.0839 - val_recall: 0.9726\n",
"Epoch 44/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0761 - recall: 0.9507 - val_loss: 0.0584 - val_recall: 0.9512\n",
"Epoch 45/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0819 - recall: 0.9414 - val_loss: 0.0582 - val_recall: 0.9543\n",
"Epoch 46/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0750 - recall: 0.9494 - val_loss: 0.0532 - val_recall: 0.9512\n",
"Epoch 47/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0800 - recall: 0.9530 - val_loss: 0.0687 - val_recall: 0.9726\n",
"Epoch 48/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0856 - recall: 0.9561 - val_loss: 0.0615 - val_recall: 0.9329\n",
"Epoch 49/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0834 - recall: 0.9405 - val_loss: 0.0592 - val_recall: 0.9360\n",
"Epoch 50/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0644 - recall: 0.9531 - val_loss: 0.0563 - val_recall: 0.9604\n",
"Epoch 51/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0747 - recall: 0.9516 - val_loss: 0.0548 - val_recall: 0.9268\n",
"Epoch 52/100\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 0.0735 - recall: 0.9447 - val_loss: 0.0546 - val_recall: 0.9512\n",
"Epoch 53/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0761 - recall: 0.9486 - val_loss: 0.0639 - val_recall: 0.9207\n",
"Epoch 54/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0799 - recall: 0.9351 - val_loss: 0.0654 - val_recall: 0.9390\n",
"Epoch 55/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0849 - recall: 0.9521 - val_loss: 0.0568 - val_recall: 0.9299\n",
"Epoch 56/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.0849 - recall: 0.9353 - val_loss: 0.0646 - val_recall: 0.9177\n"
]
}
],
"source": [
"model1 = Sequential()\n",
"# Warstwa LSTM\n",
"model1.add(LSTM(128, input_shape=(X_train_seq.shape[1], X_train_seq.shape[2]), activation='relu', return_sequences=True))\n",
"model1.add(Dropout(0.5))\n",
"\n",
"# Kolejna warstwa LSTM\n",
"model1.add(LSTM(64, activation='relu'))\n",
"model1.add(Dropout(0.5))\n",
"\n",
"# Warstwa wyjściowa\n",
"model1.add(Dense(1, activation='sigmoid'))\n",
"\n",
"# Kompilacja modelu\n",
"model1.compile(optimizer=Adam(learning_rate=0.001), loss='binary_crossentropy', metrics=['recall'])\n",
"\n",
"# Trening modelu z wczesnym zatrzymaniem\n",
"early_stopping = EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True)\n",
"\n",
"history1 = model1.fit(X_train_seq, y_train, validation_split=0.2, epochs=100, batch_size=32, callbacks=[early_stopping])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA+kAAAGHCAYAAADMXBN8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADZvklEQVR4nOzdd3gU5dfG8e+m94QAKUAIHULvvVcREESKqDRBRUBfu6I/G/aODayASBFR7AhSlSK9SO8QOoSSAOnJvH9MdsOSQkg2bID7c125spmdnX12A5k985znHIthGAYiIiIiIiIi4nQuzh6AiIiIiIiIiJgUpIuIiIiIiIgUEQrSRURERERERIoIBekiIiIiIiIiRYSCdBEREREREZEiQkG6iIiIiIiISBGhIF1ERERERESkiFCQLiIiIiIiIlJEKEgXERERERERKSIUpIvkYvLkyVgsFtauXevsoeTJ3Llz6datGyVLlsTT05OIiAgGDx7Mtm3bnD20LJYsWYLFYsnxa/Lkyc4eIhaLhdGjRzt7GCIi4gDWc7r1y83NjfDwcO688052797t7OEBUK5cOYYMGWL7+cCBA1d1Tjx06BCjR4+mYsWKeHl5UaxYMdq2bcu0adMwDKNwBl0A5cqVy/FzQNu2bZ09PIYMGYKfn5+zhyE3ITdnD0BEHOOpp57inXfe4ZZbbmH8+PGEhoaya9cu3n//ferXr8/06dPp3bu3s4eZxeuvv067du2ybK9YsaITRiMiIje6SZMmUa1aNRITE1m+fDmvvfYaixcvZseOHRQrVszZw8u35cuX0717d/z8/HjyySepXbs2sbGxfP/999xzzz389ttvTJ8+HReXojVH16JFC959990s2wMCApwwGpGiQUG6yA1gxowZvPPOOzz44IOMHz/etr1169YMGDCANm3aMHDgQOrWrUuFChWu2bji4+Px8fHJdZ/KlSvTtGnTazQiERG52dWsWZOGDRsC0LZtW9LS0njxxRf5+eefGTp0qJNHlz/nzp2jd+/eBAYGsmrVKkJDQ2339ezZk9q1a/PMM89Qt25dnnnmmWs2rrS0NFJTU/H09Mxxn6CgIH0OELlM0bqUJnKdWrZsGR06dMDf3x8fHx+aN2/OH3/8YbdPfHw8TzzxBOXLl8fLy4vg4GAaNmzIjBkzbPvs27ePO++8k1KlSuHp6UloaCgdOnRg48aNuT7/a6+9RrFixbK9Eu3r68vHH39MfHw8H3zwAQDjxo3DYrGwZ8+eLPs//fTTeHh4EBMTY9u2YMECOnToQEBAAD4+PrRo0YKFCxfaPe6ll17CYrGwfv16+vTpQ7FixRw2G16uXDm6d+/OTz/9RO3atfHy8qJChQp89NFHWfaNjo7mnnvuISQkBE9PT6KionjvvfdIT0+32y8pKYmxY8cSFRWFl5cXxYsXp127dqxYsSLLMb/99luioqLw8fGhTp06/P7773b3nzp1ivvvv5+IiAg8PT0pWbIkLVq0YMGCBQ55/SIiUnisAfuJEyfstq9du5bbbruN4OBgvLy8qFevHt9//32Wxx85csR2DvDw8KBUqVL06dPHdrzExEQef/xx6tatS2BgIMHBwTRr1oxffvnFYa/hq6++4uTJk7z55pt2AbrVU089RbVq1XjnnXdISUnh1KlTeHh48Pzzz2fZd8eOHVgsFrtz7PHjx3nggQcoU6YMHh4elC9fnpdffpnU1FTbPtbU/LfffptXX32V8uXL4+npyeLFiwv8+qyfMTZs2EDv3r0JCAggMDCQe+65h1OnTtntm56ezttvv021atXw9PQkJCSEQYMGcfjw4SzHnTt3Lh06dCAwMBAfHx+ioqJ44403suy3Z88ebr31Vvz8/IiIiODxxx8nKSnJbp8JEyZQp04d/Pz88Pf3p1q1ajz77LMFfu1yc9JMukgB/f3333Tq1InatWvz9ddf4+npyfjx4+nRowczZsygf//+ADz22GN8++23vPrqq9SrV4+LFy+yZcsWTp8+bTvWrbfeSlpaGm+//TZly5YlJiaGFStWcO7cuRyf/9ixY2zdupX+/fvnOGvdrFkzQkJCmD9/PgD33HMPTz/9NJMnT+bVV1+17ZeWlsbUqVPp0aMHJUqUAGDq1KkMGjSInj178s033+Du7s7nn39Oly5dmDdvHh06dLB7rt69e3PnnXcyYsQILl68eMX3Lz093e4kb+XmZv/naePGjTzyyCO89NJLhIWFMW3aNP7v//6P5ORknnjiCcAMlps3b05ycjKvvPIK5cqV4/fff+eJJ55g7969tiyD1NRUunbtytKlS3nkkUdo3749qamprFy5kujoaJo3b2573j/++IM1a9YwduxY/Pz8ePvtt7n99tvZuXOnLSth4MCBrF+/ntdee40qVapw7tw51q9fb/e7FRGRomn//v0AVKlSxbZt8eLF3HLLLTRp0oTPPvuMwMBAvvvuO/r37098fLxt3fiRI0do1KgRKSkpPPvss9SuXZvTp08zb948zp49S2hoKElJSZw5c4YnnniC0qVLk5yczIIFC+jduzeTJk1i0KBBBX4N8+fPx9XVlR49emR7v8Vi4bbbbuPtt99m3bp1NG3alO7du/PNN9/w8ssv26XAT5o0CQ8PD+6++27ADNAbN26Mi4sLL7zwAhUrVuTff//l1Vdf5cCBA0yaNMnuuT766COqVKnCu+++S0BAAJUrV8517IZhZPs5wNXVFYvFYrft9ttvp1+/fowYMYKtW7fy/PPPs23bNlatWoW7uzsADz74IF988QWjR4+me/fuHDhwgOeff54lS5awfv162+ebr7/+mvvuu482bdrw2WefERISwq5du9iyZYvdc6akpHDbbbcxbNgwHn/8cf755x9eeeUVAgMDeeGFFwD47rvvGDlyJA899BDvvvsuLi4u7Nmzp0jWBJLrhCEiOZo0aZIBGGvWrMlxn6ZNmxohISHG+fPnbdtSU1ONmjVrGmXKlDHS09MNwzCMmjVrGr169crxODExMQZgjBs37qrGuHLlSgMwnnnmmVz3a9KkieHt7W37uXfv3kaZMmWMtLQ027Y5c+YYgPHbb78ZhmEYFy9eNIKDg40ePXrYHSstLc2oU6eO0bhxY9u2F1980QCMF154IU/jXrx4sQHk+HXo0CHbvpGRkYbFYjE2btxod4xOnToZAQEBxsWLFw3DMIxnnnnGAIxVq1bZ7ffggw8aFovF2Llzp2EYhjFlyhQDML788stcxwgYoaGhRlxcnG3b8ePHDRcXF+ONN96wbfPz8zMeeeSRPL1uERFxDus5feXKlUZKSopx/vx5Y+7cuUZYWJjRunVrIyUlxbZvtWrVjHr16tltMwzD6N69uxEeHm47d957772Gu7u7sW3btjyPIzU11UhJSTGGDRtm1KtXz+6+yMhIY/Dgwbaf9+/fbwDGpEmTcj1mtWrVjLCwsFz3mTBhggEYM2fONAzDMH799VcDMP766y+7sZUqVcq44447bNseeOABw8/Pzzh48KDd8d59910DMLZu3Wo31ooVKxrJycm5jsUqMjIyx88Br7zyim0/62eMRx991O7x06ZNMwBj6tSphmEYxvbt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",
"text/plain": [
"<Figure size 1200x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m85/85\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 709us/step - loss: 0.0356 - recall: 0.9725\n",
"Test recall: 96.49%\n"
]
}
],
"source": [
"# Wyciąganie danych z historii treningu\n",
"loss = history1.history['loss']\n",
"val_loss = history1.history['val_loss']\n",
"recall = history1.history['recall']\n",
"val_recall = history1.history['val_recall']\n",
"\n",
"# Tworzenie wykresu strat\n",
"plt.figure(figsize=(12, 4))\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(loss, label='Training Loss')\n",
"plt.plot(val_loss, label='Validation Loss')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.title('Loss Over Epochs')\n",
"plt.legend()\n",
"\n",
"# Tworzenie wykresu metryki recall\n",
"plt.subplot(1, 2, 2)\n",
"plt.plot(recall, label='Training Recall')\n",
"plt.plot(val_recall, label='Validation Recall')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Recall')\n",
"plt.title('Recall Over Epochs')\n",
"plt.legend()\n",
"\n",
"plt.show()\n",
"\n",
"# Ocena modelu na zbiorze testowym\n",
"loss2, recall2 = model1.evaluate(X_test_seq, y_test)\n",
"print(f'Test recall: {recall2 * 100:.2f}%')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### CNN"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Warstwa splotowa 1D: Pierwsza warstwa splotowa ma 32 filtry o rozmiarze 3. Aktywacja funkcji ReLU jest używana do wprowadzenia nieliniowości. Wejściowa kształt danych to (ilość próbek, ilość cech, 1), gdzie ostatnia wartość 1 oznacza, że dane są traktowane jako dane jednowymiarowe.\n",
"\n",
"2. Warstwa poolingowa: Warstwa poolingowa MaxPooling1D z rozmiarem okna 2 jest stosowana do redukcji wymiarowości danych wyjściowych z warstwy splotowej.\n",
"\n",
"3. Warstwa spłaszczająca: Warstwa Flatten jest używana do przekształcenia danych z formatu trójwymiarowego do formatu jednowymiarowego, aby móc podłączyć je do warstw gęstych.\n",
"\n",
"4. Warstwy gęste: Następnie następuje dwukrotna warstwa gęsta. Pierwsza warstwa gęsta ma 64 neurony z aktywacją ReLU i 50% warstwą Dropout, która pomaga w zapobieganiu nadmiernemu dopasowaniu modelu. Warstwa wyjściowa ma 1 neuron z aktywacją sigmoidalną, która przewiduje prawdopodobieństwo przynależności do klasy pozytywnej.\n",
"\n",
"5. Kompilacja modelu: Model jest kompilowany z optymalizatorem Adam i funkcją straty binary_crossentropy, ponieważ model przewiduje binarną klasę wyjściową. Jako metrykę wykorzystuje się odzysk, aby monitorować jakość modelu pod kątem zdolności do wykrywania klasy pozytywnej.\n",
"\n",
"6. Wczesne zatrzymanie: Zastosowano technikę wczesnego zatrzymywania, aby przerwać trening, jeśli wartość straty walidacji przestanie się poprawiać przez określoną liczbę epok. Opcja restore_best_weights przywraca najlepsze wagi modelu, które osiągnięto podczas treningu."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - loss: 0.7695 - recall: 0.5105 - val_loss: 0.1259 - val_recall: 0.8994\n",
"Epoch 2/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1988 - recall: 0.7974 - val_loss: 0.1146 - val_recall: 0.9085\n",
"Epoch 3/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1635 - recall: 0.8260 - val_loss: 0.1139 - val_recall: 0.8567\n",
"Epoch 4/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1512 - recall: 0.8102 - val_loss: 0.0915 - val_recall: 0.9207\n",
"Epoch 5/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1721 - recall: 0.7807 - val_loss: 0.0985 - val_recall: 0.8902\n",
"Epoch 6/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1540 - recall: 0.7809 - val_loss: 0.0823 - val_recall: 0.9268\n",
"Epoch 7/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1459 - recall: 0.8011 - val_loss: 0.1371 - val_recall: 0.7835\n",
"Epoch 8/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1556 - recall: 0.7614 - val_loss: 0.0865 - val_recall: 0.9421\n",
"Epoch 9/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1558 - recall: 0.7899 - val_loss: 0.0872 - val_recall: 0.9451\n",
"Epoch 10/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1425 - recall: 0.7934 - val_loss: 0.0804 - val_recall: 0.8902\n",
"Epoch 11/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1622 - recall: 0.6474 - val_loss: 0.0812 - val_recall: 0.8902\n",
"Epoch 12/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1501 - recall: 0.6971 - val_loss: 0.0931 - val_recall: 0.8384\n",
"Epoch 13/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1831 - recall: 0.6272 - val_loss: 0.0724 - val_recall: 0.9299\n",
"Epoch 14/100\n",
"\u001b[1m159/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1515 - recall: 0.6766 - val_loss: 0.1666 - val_recall: 0.7470\n",
"Epoch 15/100\n",
"\u001b[1m141/159\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━━━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 0.1496 - recall: 0.6703"
]
}
],
"source": [
"X_train_array = X_train.values\n",
"X_test_array = X_test.values\n",
"\n",
"X_train_reshaped = X_train_array[..., np.newaxis]\n",
"X_test_reshaped = X_test_array[..., np.newaxis]\n",
"\n",
"# Budowa modelu CNN\n",
"model2 = Sequential()\n",
"\n",
"# Warstwa splotowa 1D\n",
"model2.add(Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(X_train_reshaped.shape[1], 1)))\n",
"# Warstwa poolingowa do redukcji wymiarowości\n",
"model2.add(MaxPooling1D(pool_size=2))\n",
"# Warstwa spłaszczająca dane\n",
"model2.add(Flatten())\n",
"# Warstwy gęste\n",
"model2.add(Dense(64, activation='relu'))\n",
"model2.add(Dropout(0.5))\n",
"model2.add(Dense(1, activation='sigmoid')) # Warstwa wyjściowa\n",
"\n",
"# Kompilacja modelu\n",
"model2.compile(optimizer=Adam(learning_rate=0.001), loss='binary_crossentropy', metrics=['recall'])\n",
"\n",
"# Wczesne zatrzymywanie w przypadku braku poprawy\n",
"early_stopping = EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True)\n",
"\n",
"# Trening modelu\n",
"history2 = model2.fit(X_train_reshaped, y_train, validation_split=0.2, epochs=100, batch_size=32, callbacks=[early_stopping])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Wyciąganie danych z historii treningu\n",
"loss = history2.history['loss']\n",
"val_loss = history2.history['val_loss']\n",
"recall = history2.history['recall']\n",
"val_recall = history2.history['val_recall']\n",
"\n",
"# Tworzenie wykresu strat\n",
"plt.figure(figsize=(12, 4))\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(loss, label='Training Loss')\n",
"plt.plot(val_loss, label='Validation Loss')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.title('Loss Over Epochs')\n",
"plt.legend()\n",
"\n",
"# Tworzenie wykresu metryki recall\n",
"plt.subplot(1, 2, 2)\n",
"plt.plot(recall, label='Training Recall')\n",
"plt.plot(val_recall, label='Validation Recall')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Recall')\n",
"plt.title('Recall Over Epochs')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"loss3, recall3 = model2.evaluate(X_test_reshaped, y_test)\n",
"print(f'Test recall: {recall3 * 100:.2f}%')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Skuteczność modeli"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"models = ['MLP', 'LSTM', 'CNN']\n",
"losses = [loss1, loss2, loss3] \n",
"recalls = [recall1, recall2, recall3] \n",
"\n",
"\n",
"results_df = pd.DataFrame({'Model': models, 'Loss': losses, 'Recall': recalls})\n",
"\n",
"\n",
"plt.figure(figsize=(12, 8))\n",
"\n",
"\n",
"plt.subplot(2, 1, 1)\n",
"sns.barplot(x='Model', y='Loss', data=results_df, palette='viridis')\n",
"plt.title('Loss for Different Models')\n",
"plt.xlabel('Model')\n",
"plt.ylabel('Loss')\n",
"for index, value in enumerate(losses):\n",
" plt.text(index, value, f'{value:.5f}', ha='center', va='bottom')\n",
"\n",
"\n",
"plt.subplot(2, 1, 2)\n",
"sns.barplot(x='Model', y='Recall', data=results_df, palette='viridis')\n",
"plt.title('Recall for Different Models')\n",
"plt.xlabel('Model')\n",
"plt.ylabel('Recall')\n",
"for index, value in enumerate(recalls):\n",
" plt.text(index, value, f'{value:.3f}', ha='center', va='bottom')\n",
"\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import roc_curve, auc\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Lista nazw modeli\n",
"model_names = ['MLP', 'LSTM', 'CNN']\n",
"\n",
"# Lista modeli\n",
"models = [model, model1, model2]\n",
"tests = [X_test, X_test_seq, X_test_reshaped]\n",
"\n",
"plt.figure(figsize=(10, 6))\n",
"\n",
"# Iteracja po modelach\n",
"for name, mdl, test in zip(model_names, models, tests):\n",
" # Wygenerowanie predykcji dla zbioru testowego\n",
" y_pred = mdl.predict(test)\n",
" \n",
" # Obliczenie punktów ROC\n",
" fpr, tpr, thresholds = roc_curve(y_test, y_pred)\n",
" roc_auc = auc(fpr, tpr)\n",
" \n",
" # Wykres krzywej ROC\n",
" plt.plot(fpr, tpr, lw=2, label=f'{name} (AUC = {roc_auc:.2f})')\n",
"\n",
"# Wykres krzywej ROC dla losowego klasyfikatora\n",
"plt.plot([0, 1], [0, 1], linestyle='--', lw=2, color='r', label='Random Classifier')\n",
"\n",
"# Dopełnienie wykresu\n",
"plt.xlim([0.0, 1.0])\n",
"plt.ylim([0.0, 1.05])\n",
"plt.xlabel('False Positive Rate')\n",
"plt.ylabel('True Positive Rate')\n",
"plt.title('Receiver Operating Characteristic')\n",
"plt.legend(loc=\"lower right\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Wnioski\n",
"- z użytych tutaj sieci neuronowych najlepsze wyniki CNN - najwyższy recall: 97,7% i najniższy loss: 0,0362. \n",
"- wszytkie modele osiągnęły taki sam wynik na krzywej ROC\n",
"- model CNN można użyć jako ostateczny - do wyboru"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}