ium_452487/train.ipynb
s452487 f9618bc1a5 Dodanie wykresów do treningu i zmniejszenie liczby epok
Liczba 1000 była skopiowana z innego projektu, trenowanie kończyło się po ~3 i tak ze względu na early stopping ale zmieniłem na bardziej rozsądną wartość
2024-04-20 14:55:06 +02:00

608 lines
83 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import zipfile\n",
"with zipfile.ZipFile(\"dataset_cleaned.zip\", 'r') as zip_ref:\n",
" zip_ref.extractall(\"dataset_cleaned_extracted\")\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"outputs": [],
"source": [
"import pandas as pd\n",
"train = pd.read_csv(\"dataset_cleaned_extracted/train.csv\")\n",
"test = pd.read_csv(\"dataset_cleaned_extracted/test.csv\")\n",
"valid = pd.read_csv(\"dataset_cleaned_extracted/valid.csv\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Male', 'GeneralHealth', 'PhysicalHealthDays', 'MentalHealthDays',\n",
" 'PhysicalActivities', 'SleepHours', 'RemovedTeeth', 'HadHeartAttack',\n",
" 'HadAngina', 'HadStroke', 'HadAsthma', 'HadSkinCancer', 'HadCOPD',\n",
" 'HadDepressiveDisorder', 'HadKidneyDisease', 'HadArthritis',\n",
" 'HadDiabetes', 'DeafOrHardOfHearing', 'BlindOrVisionDifficulty',\n",
" 'DifficultyConcentrating', 'DifficultyWalking',\n",
" 'DifficultyDressingBathing', 'DifficultyErrands', 'SmokerStatus',\n",
" 'ECigaretteUsage', 'ChestScan', 'HeightInMeters', 'WeightInKilograms',\n",
" 'BMI', 'AlcoholDrinkers', 'HIVTesting', 'FluVaxLast12', 'PneumoVaxEver',\n",
" 'TetanusLast10Tdap', 'HighRiskLastYear', 'CovidPos'],\n",
" dtype='object')\n"
]
}
],
"source": [
"num_columns = train.select_dtypes(['float64']).columns\n",
"print(num_columns)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [
{
"data": {
"text/plain": "36"
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(num_columns)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 4,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Male', 'GeneralHealth', 'PhysicalHealthDays', 'MentalHealthDays', 'PhysicalActivities', 'SleepHours', 'RemovedTeeth', 'HadAngina', 'HadStroke', 'HadAsthma', 'HadSkinCancer', 'HadCOPD', 'HadDepressiveDisorder', 'HadKidneyDisease', 'HadArthritis', 'HadDiabetes', 'DeafOrHardOfHearing', 'BlindOrVisionDifficulty', 'DifficultyConcentrating', 'DifficultyWalking', 'DifficultyDressingBathing', 'DifficultyErrands', 'SmokerStatus', 'ECigaretteUsage', 'ChestScan', 'HeightInMeters', 'WeightInKilograms', 'BMI', 'AlcoholDrinkers', 'HIVTesting', 'FluVaxLast12', 'PneumoVaxEver', 'TetanusLast10Tdap', 'HighRiskLastYear', 'CovidPos']\n"
]
}
],
"source": [
"x_columns = ['Male', 'GeneralHealth', 'PhysicalHealthDays', 'MentalHealthDays',\n",
" 'PhysicalActivities', 'SleepHours', 'RemovedTeeth',\n",
" 'HadAngina', 'HadStroke', 'HadAsthma', 'HadSkinCancer', 'HadCOPD',\n",
" 'HadDepressiveDisorder', 'HadKidneyDisease', 'HadArthritis',\n",
" 'HadDiabetes', 'DeafOrHardOfHearing', 'BlindOrVisionDifficulty',\n",
" 'DifficultyConcentrating', 'DifficultyWalking',\n",
" 'DifficultyDressingBathing', 'DifficultyErrands', 'SmokerStatus',\n",
" 'ECigaretteUsage', 'ChestScan', 'HeightInMeters', 'WeightInKilograms',\n",
" 'BMI', 'AlcoholDrinkers', 'HIVTesting', 'FluVaxLast12', 'PneumoVaxEver',\n",
" 'TetanusLast10Tdap', 'HighRiskLastYear', 'CovidPos']\n",
"print(x_columns)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 5,
"outputs": [
{
"data": {
"text/plain": "35"
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(x_columns)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 6,
"outputs": [],
"source": [
"y_column = 'HadHeartAttack'"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 7,
"outputs": [],
"source": [
"train_x = train[x_columns]\n",
"train_y = train[y_column]\n",
"\n",
"test_x = test[x_columns]\n",
"test_y = test[y_column]"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 8,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 676617 entries, 0 to 676616\n",
"Data columns (total 41 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Unnamed: 0 676617 non-null int64 \n",
" 1 State 676617 non-null object \n",
" 2 Male 676617 non-null float64\n",
" 3 GeneralHealth 676617 non-null float64\n",
" 4 PhysicalHealthDays 676617 non-null float64\n",
" 5 MentalHealthDays 676617 non-null float64\n",
" 6 LastCheckupTime 676617 non-null object \n",
" 7 PhysicalActivities 676617 non-null float64\n",
" 8 SleepHours 676617 non-null float64\n",
" 9 RemovedTeeth 676617 non-null float64\n",
" 10 HadHeartAttack 676617 non-null float64\n",
" 11 HadAngina 676617 non-null float64\n",
" 12 HadStroke 676617 non-null float64\n",
" 13 HadAsthma 676617 non-null float64\n",
" 14 HadSkinCancer 676617 non-null float64\n",
" 15 HadCOPD 676617 non-null float64\n",
" 16 HadDepressiveDisorder 676617 non-null float64\n",
" 17 HadKidneyDisease 676617 non-null float64\n",
" 18 HadArthritis 676617 non-null float64\n",
" 19 HadDiabetes 676617 non-null float64\n",
" 20 DeafOrHardOfHearing 676617 non-null float64\n",
" 21 BlindOrVisionDifficulty 676617 non-null float64\n",
" 22 DifficultyConcentrating 676617 non-null float64\n",
" 23 DifficultyWalking 676617 non-null float64\n",
" 24 DifficultyDressingBathing 676617 non-null float64\n",
" 25 DifficultyErrands 676617 non-null float64\n",
" 26 SmokerStatus 676617 non-null float64\n",
" 27 ECigaretteUsage 676617 non-null float64\n",
" 28 ChestScan 676617 non-null float64\n",
" 29 RaceEthnicityCategory 676617 non-null object \n",
" 30 AgeCategory 676617 non-null object \n",
" 31 HeightInMeters 676617 non-null float64\n",
" 32 WeightInKilograms 676617 non-null float64\n",
" 33 BMI 676617 non-null float64\n",
" 34 AlcoholDrinkers 676617 non-null float64\n",
" 35 HIVTesting 676617 non-null float64\n",
" 36 FluVaxLast12 676617 non-null float64\n",
" 37 PneumoVaxEver 676617 non-null float64\n",
" 38 TetanusLast10Tdap 676617 non-null float64\n",
" 39 HighRiskLastYear 676617 non-null float64\n",
" 40 CovidPos 676617 non-null float64\n",
"dtypes: float64(36), int64(1), object(4)\n",
"memory usage: 211.6+ MB\n"
]
}
],
"source": [
"train.info()"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"### Definiowanie modelu"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 9,
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from keras import layers\n",
"from keras.optimizers import Adam\n",
"def create_model():\n",
" inputs = keras.Input(shape=(35,))\n",
" dense1 = layers.Dense(64, activation=\"relu\")(inputs)\n",
" dropout1 = layers.Dropout(0.2)(dense1)\n",
" dense2 = layers.Dense(32, activation=\"relu\")(dropout1)\n",
" dropout2 = layers.Dropout(0.2)(dense2)\n",
" output = layers.Dense(1, activation=\"sigmoid\")(dropout2)\n",
" model = keras.Model(inputs=inputs, outputs=output)\n",
"\n",
" model.compile(loss='binary_crossentropy', optimizer=Adam(), metrics=['accuracy'])\n",
" return model\n",
"\n",
"model = create_model()"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 10,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" input_1 (InputLayer) [(None, 35)] 0 \n",
" \n",
" dense (Dense) (None, 64) 2304 \n",
" \n",
" dropout (Dropout) (None, 64) 0 \n",
" \n",
" dense_1 (Dense) (None, 32) 2080 \n",
" \n",
" dropout_1 (Dropout) (None, 32) 0 \n",
" \n",
" dense_2 (Dense) (None, 1) 33 \n",
" \n",
"=================================================================\n",
"Total params: 4,417\n",
"Trainable params: 4,417\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model.summary()"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"### Trenowanie modelu"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 11,
"outputs": [],
"source": [
"# Early stopping dla regularyzacji\n",
"callback = keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', patience=3, restore_best_weights=True)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 12,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/11\n",
"21145/21145 [==============================] - 22s 994us/step - loss: 0.4334 - accuracy: 0.7998 - val_loss: 0.3714 - val_accuracy: 0.8448\n",
"Epoch 2/11\n",
"21145/21145 [==============================] - 21s 972us/step - loss: 0.4257 - accuracy: 0.8038 - val_loss: 0.4273 - val_accuracy: 0.8249\n",
"Epoch 3/11\n",
"21145/21145 [==============================] - 21s 992us/step - loss: 0.4224 - accuracy: 0.8056 - val_loss: 0.4245 - val_accuracy: 0.8219\n",
"Epoch 4/11\n",
"21145/21145 [==============================] - 20s 962us/step - loss: 0.4201 - accuracy: 0.8074 - val_loss: 0.4108 - val_accuracy: 0.8234\n"
]
}
],
"source": [
"history = model.fit(train_x, train_y, validation_data=(test_x, test_y), epochs=11, callbacks=[callback])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"### Historia treningu"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"##### Loss"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 13,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x226e7b95760>"
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAHFCAYAAAD2eiPWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXEElEQVR4nO3dd3wUdf7H8deW9E0PQVSqCIRQjEFRiZ4NjiIKqHggxYKgJzYQFFRA8cADPO/nYUGKAnKccDQ9KxyWO2wYpQocTQRjIEASUjfZ3fn9EbJkSZBNSLLJ5v18PPLQnZ2d/cwnA779zndmTIZhGIiIiIj4MbOvCxARERGpaQo8IiIi4vcUeERERMTvKfCIiIiI31PgEREREb+nwCMiIiJ+T4FHRERE/J4Cj4iIiPg9BR4RERHxewo8IlKrDh06RNu2bVm5cmWNfkZEpCwFHhEREfF7CjwiIiLi9xR4RBq466+/ntmzZzNt2jS6du1KUlISY8eOJS8vjzfeeINrrrmG5ORkHnroITIzM92fczqdLFmyhL59+9KpUyeuvfZaZs2ahd1u99j+J598ws0330ynTp3o378/O3fuLFdDVlYWkyZN4qqrrqJjx44MHDiQr776qlL74XQ6eeONN7jpppvo1KkTl1xyCX/4wx/4+uuvPdbbtGkT99xzD5deeilXXHEFY8aM4fDhw+73jxw5whNPPMGVV15JUlISQ4YM4YcffgDOfGrtySef5Prrr3e/Hjp0KI8//jgPP/wwl1xyCXfffbf78+PHjyclJYXExESuvPJKxo8f79FXwzB466236NWrF506daJ79+7Mnz8fwzD47LPPaNu2Lf/97389vv+7776jbdu2pKamVqpnIg2J1dcFiIjvLViwgG7duvHSSy+xbds2XnzxRbZv3058fDxTp07l0KFD/OlPfyIuLo7JkycDMGnSJNasWcN9991Hly5d+PHHH3nllVfYsWMH8+bNw2QysX79eh5++GH69u3LuHHj2LFjB+PGjfP4brvdzvDhwzl69CiPPfYY8fHxrFixghEjRjBv3jyuvPJKr/Zh1qxZLF26lLFjx9K2bVsOHz7MK6+8wiOPPMJnn31GSEgIP/74I0OGDKFz587MmDEDp9PJiy++yL333svq1aux2+0MGjQIp9PJuHHjaNy4MQsWLOCee+5h1apVWK3e/5X54YcfcvPNN/Paa6/hcrkoKChg2LBhREdHM3nyZMLDw/nhhx+YPXs2wcHBPPfccwDMmDGDhQsXcvfdd9OtWze2bt3KrFmzcDgcjBgxgvj4eNasWUNKSor7u1avXk2LFi1ITk72uj6RhkaBR0Sw2Wy89NJLWK1WrrrqKlatWsXhw4dZvnw54eHhAPznP//h+++/B2DPnj3885//ZOzYsYwcORKAbt26ER8fz/jx4/niiy/43e9+xyuvvEKnTp2YOXMmAFdffTUAL774ovu716xZw86dO1m2bBmdO3cG4JprrmHo0KHMmjWLFStWeLUPR44c4bHHHmPo0KHuZUFBQTz00EPs2rWLSy65hNdff52oqCgWLFhAUFAQAPHx8YwdO5bdu3eTmprKL7/8wqpVq0hISADg0ksvpV+/fmzcuNHr8AUQEBDAs88+S2BgIAA7duzgvPPO489//jNNmzYF4IorrmDz5s18++23AJw4cYJFixYxZMgQdzC86qqryMjIYOPGjYwaNYr+/fuzePFi8vLyCAsLo7CwkA8//ND9exCRiumUlojQqVMnj9GLuLg4WrZs6Q47AFFRUeTk5AC4/wPdp08fj+306dMHi8XCN998Q2FhIdu3b+e6667zWKdXr14er7/66isaNWpEYmIiDocDh8OB0+nkuuuuY9u2bWRnZ3u1Dy+++CLDhw/n+PHjfPfdd6xYsYJ3330XgKKiIgBSU1O55ppr3GEHICkpifXr15OQkEBqaioXXnihO+wAhISE8PHHH3P77bd7VUepVq1aucMOQEJCAn//+9+54IIL+Omnn/j888+ZP38++/btc9e3adMmHA4HPXr08NjW008/zbx58wC49dZbyc/PZ+3atQCsXbuW/Px8+vXrV6n6RBoajfCICDabrdyy0NDQM65fGkIaNWrksdxqtRIdHU1OTg7Z2dkYhkF0dLTHOvHx8R6vs7KyyMjIIDExscLvysjIIDg4+Kz7sHXrVp599lm2bt1KSEgIrVu35vzzzwdK5sWUfldsbOwZt3G29ysjLCys3LI333yT119/naysLOLi4ujQoQMhISHuIJmVlQVATEzMGbfbvHlzLr/8clavXk2/fv1YvXo1V111FY0bN66WukX8lQKPiFRaZGQkUBJGLrjgAvfy4uJiMjMziY6OJioqCrPZzNGjRz0+W/of9VLh4eG0aNGCWbNmVfhdF154YbltnC43N5cRI0bQtm1b3n//fVq1aoXZbObzzz/n448/9viu48ePl/v8559/TkJCAuHh4Rw6dKjc+99//z2RkZHu4OV0Oj3ez8/P/836AN577z1eeOEFxo0bx4ABA9yh5pFHHmHr1q0AREREAHD8+HFatWrl/mxaWho///wzycnJBAQEcOuttzJx4kT27t3LV199dcbeicgpOqUlIpV2+eWXA/D+++97LH///fdxOp0kJycTFBREUlISn3zyiXuEBWD9+vXltvXrr78SGxtLx44d3T8bNmxg3rx5WCyWs9azb98+srKyGDZsGK1bt8ZsLvmr7YsvvgDA5XIB0KVLFzZs2OA+hQTw448/MnLkSLZv306XLl04ePAgu3fvdr9vt9t56KGH+Oc//+keCSt7VVdxcTFbtmw5a42pqalEREQwYsQId9jJy8sjNTXVXV+nTp0ICAjg008/9fjsggULGDNmjLsXv//97wkJCWHKlCmEhYVx4403nvX7RRo6jfCISKW1bt2a/v378/LLL1NQUMBll13Gjh07mD17Nl27dnVPTh4zZgzDhw9n9OjR3HHHHezfv5/XX3/dY1sDBgzg7bff5u677+b++++nSZMmfPnll8ydO5chQ4YQEBBw1npatmyJzWbj9ddfx2q1YrVa+fjjj/nnP/8JQEFBAQB//OMfueOOOxg1ahTDhg2jsLCQv/71r3Tq1Ilu3bpRVFTE4sWLeeCBB3j44YeJjo5m0aJFFBcXM3jwYCIjI0lKSmLx4sU0b96cyMhIFi1aRGFh4W+eAoSSMLN06VJeeOEFrrvuOo4cOcL8+fM5evSoe8QsJiaGYcOG8dZbbxEYGMjll1/O5s2bWbp0KePHj3cHuZCQEPr06cM777zDoEGDPOYKiUjFNMIjIlXypz/9iQcffJD33nuPkSNHsmTJEoYNG8bcuXPd/2Hu0qULc+fO5fDhw4wePZp33nmHadOmeWwnNDSUJUuWkJyczMyZM7nvvvv45JNPGDt2LBMmTPCqlvDwcF599VUMw+CRRx5h/PjxpKWl8fbbbxMWFsZ3330HQPv27Vm8eDEOh4NHH32U559/nuTkZObMmUNgYCA2m423336bzp07M3XqVB599FFcLheLFi1yX1n1wgsv0KFDB55++mkmTJhAYmIiw4cPP2uN/fv358EHH+TDDz/kvvvu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TFGTrpiLcoh8dzDWX7/zdVkiIlKLFHikQTACbWTftIii86/AXJxL5Ht3Yk371tdliYhILVHgkYYjMKwk9FzQDXNxHlHvDSEg7WtfVyUiIrVAgUcaloBQsvu8RdGFV2Ny5BP53lACfvnS11WJiEgNU+CRhicghOw+Cyhq+jtMjgIi/zWMgIP/9XVVIiJSgxR4pGGyhpDdez72ZtdhchQS+f5wAg5+4euqRESkhijwSMNlDeZE73nYW9yIyWkn8v27CTjwqa+rEhGRGuDTwGO325k4cSJdunQhJSWFBQsWnHHdtWvX0qtXL5KSkhg0aBDbt293v5efn8/TTz9N165dueyyy3jmmWfIy8urjV2Q+s4SxImec7C36FESej64l8Cf/u3rqkREpJr5NPDMmDGDbdu2sXDhQiZPnszs2bP56KOPyq23e/duxo4dy6hRo1izZg0JCQmMGjWKgoICAKZNm8a2bduYP38+b731Flu2bOGFF16o7d2R+soSxImer2Nv1ROTq4iID+8j8Kd1vq5KRESqkc8CT35+PsuXL+epp54iMTGR7t27M2LECJYsWVJu3Q0bNtC6dWv69etHs2bNGDNmDBkZGezZsweAgIAAnnnmGTp06EBiYiK33norqamptb1LUp9ZAjnR4zXsF/U5FXr2fezrqkREpJr4LPDs3LkTh8NBUlKSe1lycjKbN2/G5XJ5rBsVFcWePXtITU3F5XKxcuVKbDYbzZo1A2Dy5MkkJycDcOjQIf71r39x+eWX197OiH+wBHCi+2wKW/fF5Com4uNRBO79wNdViYhINbD66oszMjKIjo4mMDDQvSwuLg673U5WVhYxMTHu5b1792b9+vUMHjwYi8WC2Wxmzpw5REZGemzziSeeYPXq1VxwwQU8+OCDla7JZKr6/pxtmzWxbX9TJ3plDSC3x9/AZCZ49xoiPn6AnN+/QlHrm3xYVHl1olf1hHrlPfWqctQv79VUryqzPZNhGEb1fr13Vq9ezf/93//x6aenroo5ePAgN954I59//jnnnXeee/nhw4d59NFHuemmm+jcuTNLly7lP//5D6tWrSI2Nta93p49e8jNzeXFF18kJyeHlStXYjbrQjSpApcTVj8AW94BkwVunQsdbvV1VSIiUkU+G+EJCgqiqKjIY1np6+DgYI/ls2bNok2bNtx5550ATJ06lV69erFi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juX+++8nJCSEW265hXnz5tG3b1/S0tK4+eabq7tGERERkXNSpcCTnJzMp59+SmFhIdHR0axYsYJ169YRFRVFr169qrtGERERkXNS5ael22w2bDYbUHLX5NLHPoiIiIjUNVWawyMiIiJSnyjwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3fBp47HY7EydOpEuXLqSkpLBgwYIzrrt27Vp69epFUlISgwYNYvv27RWu9/TTT/O3v/2tpkoWERGResingWfGjBls27aNhQsXMnnyZGbPns1HH31Ubr3du3czduxYRo0axZo1a0hISGDUqFEUFBR4rDd37lyWL19eW+WLiIhIPeGzwJOfn8/y5ct56qmnSExMpHv37owYMYIlS5aUW3fDhg20bt2afv360axZM8aMGUNGRgZ79uwBIDc3l4cffpi5c+fSpEmT2t4VERERqeN8Fnh27tyJw+EgKSnJvSw5OZnNmzfjcrk81o2KimLPnj2kpqbicrlYuXIlNpuNZs2aAXDo0CHsdjsrV66kadOmtbofIiIiUvdZffXFGRkZREdHExgY6F4WFxeH3W4nKyuLmJgY9/LevXuzfv16Bg8ejMViwWw2M2fOHCIjIwFo164dc+bMqfV9EBERkfrBZ4GnoKDAI+wA7tdFRUUeyzMzM8nIyGDSpEl07tyZpUuXMmHCBFatWkVsbGy11WQyVdumym2z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dCkTJkxg1apV7nUr2tbp2zmb2Njwyu7GWWUXFPP5/zLYeiiLLYey2fpLNr9mF5Zbz2yCi+PD6XBBJJ0ujKTjhZG0bxJBcICl2muq62ri9+Cv1CvvqVfeU68qR/3yni975bPAExQUVC6QlL4ODg72WD5r1izatGnDnXfeCcDUqVPp1asXK1as4LbbbvP4bNltVXb+zrFj1fvQyqyCYgbM31juiikT0CImlITzTo3ctG1kIyTQM9zkZueTW33l1HkmU8kfhur+Pfgj9cp76pX31KvKUb+8V1O9Kt2uN3wWeBo3bkxmZiYOhwOrtaSMjIwMgoODiYiI8Fh3+/btDB061P3abDbTrl070tLSiIqKIigoiKNHj3LRRRcB4HA4yMrKolGjRpWqyTCo1l+ExWTi/Mhg4mwGbRqFup8M3iY+jLDA8q3XH5gS1f178GfqlffUK++pV5WjfnnPl73yWeBJSEjAarWyadMmunTpAkBqaiodO3b0mLAMEB8fz969ez2W7d+/371ux44dSU1NpWvXrgBs2rQJq9VKu3btamdnzsAWZOXtoZcSFxfO0aP6PwARERFf8dns15CQEPr168eUKVPYsmUL69atY8GCBQwbNgwoGe0pLCyZ6zJw4ECWLVvG6tWrOXDgALNmzSItLY3+/fsDMHjwYObPn8+6devYsmULU6ZMYeDAgfX2knQRERGpXj698eCECROYMmUKw4cPx2az8dBDD9GjRw8AUlJSmD59OgMGDKB3797k5eUxZ84c0tPTSUhIYOHChcTGxgLQp08ffvnlFyZNmkRRURE9evRg3Lhxvtw1ERERqUNMhqETLaVq4rSTyYROaXlJvfKeeuU99cp76lXlqF/eq6lelW7XG/55QxcRERGRMhR4RERExO8p8IiIiIjfU+ARERERv6fAIyIiIn5PgUdERET8ngKPiIiI+D0FHhEREfF7CjwiIiLi9xR4RERExO8p8IiIiIjf8+nDQ+sak6nmtlkT2/Y36pX31CvvqVfeU68qR/3yXk31qjLb08NDRURExO/plJaIiIj4PQUeERER8XsKPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQWeamC325k4cSJdunQhJSWFBQsWnHHdH3/8kdtvv53OnTtz6623sm3btlqs1Pcq06sHHniAtm3bevx8+umntVht3VBUVMRNN93EN998c8Z1GvpxVcqbXjX04+rw4cM8/PDDXH755Vx99dVMnz4du91e4boN/biqTK8a+nEFcODAAe69916SkpK49tprmTdv3hnX9cmxZcg5e+6554y+ffsa27ZtMz755BMjKSnJ+PDDD8utl5eXZ3Tr1s144YUXjD179hhTp041rrrqKiMvL88HVfuGt70yDMPo3r27sWbNGuPIkSPuH7vdXssV+1ZhYaHx4IMPGm3atDG+/vrrCtfRcVXCm14ZRsM+rlwulzFw4EBjxIgRxv/+9z9j48aNRvfu3Y0XXnih3LoN/biqTK8Mo2EfV4ZhGE6n0+jRo4cxduxYY//+/cZnn31mXHrppca7775bbl1fHVsKPOcoLy/P6Nixo8dfsK+88ooxZMiQcusuX77cuP766w2Xy2UYRskfqO7duxsrVqyotXp9qTK9stvtRkJCgrFv377aLLFO2b17t3HzzTcbffv2/c3/iDf048owvO9VQz+u9uzZY7Rp08bIyMhwL3vvvfeMlJSUcus29OOqMr1q6MeVYRjG4cOHjUceecTIyclxL3vwwQeNyZMnl1vXV8eWTmmdo507d+JwOEhKSnIvS05OZvPmzbhcLo91N2/eTHJyMqaTj3c1mUxceumlbNq0qTZL9pnK9Grfvn2YTCaaNm1a22XWGd9++y1du3blnXfe+c31GvpxBd73qqEfV40aNWLevHnExcV5LM/NzS23bkM/rirTq4Z+XAHEx8fz17/+FZvNhmEYpKamsnHjRi6//PJy6/rq2LLW6NYbgIyMDKKjowkMDHQvi4uLw263k5WVRUxMjMe6rVu39vh8bGwsu3fvrrV6fakyvdq3bx82m43x48fz7bffct555/HQQw/xu9/9zhel+8TgwYO9Wq+hH1fgfa8a+nEVERHB1Vdf7X7tcrl4++23ueKKK8qt29CPq8r0qqEfV6e7/vrrSUtL47rrruP3v/99ufd9dWxphOccFRQUePwHHHC/Lioq8mrd09fzV5Xp1b59+ygsLCQlJYV58+bxu9/9jgceeICtW7fWWr31RUM/ripDx5WnmTNn8uOPP/LYY4+Ve0/Hlaff6pWOK08vv/wyr7/+Ojt27GD69Onl3vfVsaURnnMUFBRU7pdU+jo4ONirdU9fz19Vpld//OMfGTp0KJGRkQC0a9eO7du3s2zZMjp27Fg7BdcTDf24qgwdV6fMnDmThQsX8tJLL9GmTZty7+u4OuVsvdJx5al0n+12O48//jjjx4/3CDi+OrY0wnOOGjduTGZmJg6Hw70sIyOD4OBgIiIiyq179OhRj2VHjx4lPj6+Vmr1tcr0ymw2u//yKNWqVSsOHz5cK7XWJw39uKoMHVclpk6dyptvvsnMmTMrPOUAOq5KedMrHVclx8a6des8lrVu3Zri4uJy8558dWwp8JyjhIQErFarx2Sr1NRUOnbsiNns2d7OnTvzww8/YBgGAIZh8P3339O5c+faLNlnKtOrJ598kgkTJngs27lzJ61ataqNUuuVhn5cVYaOK5g9ezb/+Mc/+Mtf/kKfPn3OuJ6OK+97peMKDh06xOjRoz1C3rZt24iJifGYnwm+O7YUeM5RSEgI/fr1Y8qUKWzZsoV169axYMEChg0bBpSMYBQWFgLQs2dPTpw4wZ/+9Cf27NnDn/70JwoKCujVq5cvd6HWVKZX119/Pe+99x6rV6/mwIEDzJ49m9TUVIYMGeLLXagzdFx5T8fVKXv37uXVV1/lvvvuIzk5mYyMDPcP6LgqqzK9aujHFZScxkpMTGTixIns2bOHzz//nJkzZ3L//fcDdeTYqtGL3huI/Px8Y/z48cYll1xipKSkGG+++ab7vTZt2njcW2Dz5s1Gv379jI4dOxq33XabsX37dh9U7DuV6dWyZcuMHj16GB06dDD69+9vfPvttz6ouG44/d4yOq7O7Gy9asjH1Zw5c4w2bdpU+GMYOq7KqmyvGvJxVSo9Pd148MEHjUsvvdTo1q2b8dprr7nvtVMXji2TYZwcUxIRERHxUzqlJSIiIn5PgUdERET8ngKPiIiI+D0FHhEREfF7CjwiIiLi9xR4RERExO8p8IiIiIjfU+ARESnj0KFDtG3blkOHDvm6FBGpRgo8IiIi4vcUeERERMTvKfCISJ3266+/cv/999O5c2euv/56Zs+ejdPpZOXKlQwaNIhZs2aRlJTEtddey/Lly92fc7lczJs3jxtuuIFOnToxdOhQdu3a5X7/2LFjPProo1x66aV069aNv/zlL5R90s66deu48cYb6dy5M/fffz/Z2dm1ut8iUr2svi5ARORMDMNg9OjRtGvXjlWrVpGRkcGkSZMwmUw0adKErVu3EhoayjvvvMOWLVuYMmUKTZo0ISUlhVdeeYWlS5cydepUWrRowdy5cxkxYgQff/wxoaGhPPjgg1gsFt5++23y8vJ47LHHiI+P59prrwVg1apV7hA0evRo5s6dy+OPP+7bhohIlSnwiEid9fXXX5OWlsby5csxm820atWKJ554ggkTJvDEE09gMpmYMWMGsbGxtGnTho0bN7Js2TK6devG22+/zZgxY7jhhhsAmDp1Kt27d+fdd9/lkksu4YcffmDdunU0bdoUgClTppCfn+/+7nHjxtGpUycAevXqxc6dO2u/ASJSbRR4RKTO2rt3L1lZWSQnJ7uXuVwuCgsLycrKonnz5sTGxrrf69ChA//4xz84duwYWVlZdO7c2f1eQEAAHTp0YO/evURGRhIVFeUOOwA33ngjgPvqrGbNmrnfCw8Px26319h+ikjNU+ARkTrL4XDQqlUrXn311XLvffvtt1itnn+FOZ1OzGYzQUFBFW7P6XTicrkICAg463ebzZriKOJP9CdaROqsli1bkpaWRkxMDM2bN6d58+YcOnSIl19+GYADBw6Ql5fnXn/btm20adOG8PBw4uLi2LRpk/u94uJitm/fTsuWLWnevDlZWVn8+uuv7vcXLVrEH//4x1rbNxGpXQo8IlJnpaSkcMEFFzBu3Dh27drFd999xzPPPENISAgWi4X8/HwmT57M3r17WbZsGR999BGDBw8G4K677uLll19m/fr17N27l2eeeQa73U7v3r25+OKLueKKK3jqqafYtWsX33zzDW+88QbdunXz8R6LSE3RKS0RqbMsFguvvfYaU6dOZeDAgYSGhtKzZ0+eeOIJPvjgA5o0aUKjRo247bbbaNSoETNnznTP97nnnnvIzc3lmWeeITc3l6SkJBYvXkxMTAwAM2fO5Nlnn+WOO+7AZrNxxx13MHjwYH755Rdf7rKI1BCTUfbGEyIi9cTKlSuZPXs269ev93UpIlIP6JSWiIiI+D0FHhEREfF7OqUlIiIifk8jPCIiIuL3FHhERETE7ynwiIiIiN9T4BERERG/p8AjIiIifk+BR0RERPyeAo+IiIj4PQUeERER8XsKPCIiIuL3/h/+0y2oh93LaAAAAABJRU5ErkJggg==\n"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"plt.plot(history.history['accuracy'])\n",
"plt.plot(history.history['val_accuracy'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"Test loss < Train loss ze względu na warstwy dropout"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"##### Accuracy"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 14,
"outputs": [
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAHFCAYAAAD2eiPWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABo7UlEQVR4nO3dd3wUdf7H8deWbEsvEKp0kIuUUFWwoWBDBc9TLIB64qlg/1nAE0E99cSzonKinKicKFbsHrY7FRQQiCAoRZBuQhJIstlNdnd+f4QshIBsYjaTbN7PxyMPspPZ2c98GODNd74zYzEMw0BEREQkhlnNLkBEREQk2hR4REREJOYp8IiIiEjMU+ARERGRmKfAIyIiIjFPgUdERERingKPiIiIxDwFHhEREYl5CjwiIiIS8xR4RKTR2rJlC926deONN96o0/cMGTKE22+/vS5KFJEGQoFHREREYp4Cj4iIiMQ8BR4RqTNDhgxh+vTp3HfffQwcOJDs7GxuvvlmSkpKeOaZZzj++OPp27cv1157LQUFBeH3BYNB5syZw1lnnUXPnj058cQTeeihh/D7/VW2//HHH3P22WfTs2dPRo4cyZo1a6rVUFhYyOTJkzn22GPp0aMH559/PgsXLvxd+1VUVMT999/PKaecQo8ePRg+fDivvfZalXVWrlzJ2LFj6du3L9nZ2Vx66aUsX748/PP8/HxuvvlmBg0aRI8ePTjnnHN46623flddIhI5u9kFiEhsmTVrFoMGDeKRRx5h5cqV/OMf/2DVqlU0b96ce+65hy1btvC3v/2NjIwM7rrrLgAmT57M22+/zbhx4+jXrx8//PADTz75JKtXr+bZZ5/FYrHw6aefct1113HWWWdxyy23sHr1am655ZYqn+33+xk7dix5eXnceOONNG/enNdff50rrriCZ599lmOOOabG++Pz+bjooovYtWsX1113Ha1bt2bBggXccccd5OXlcdVVV1FcXMwVV1zB0UcfzRNPPEFZWRlPP/00f/7zn/n8889JTEzklltuYdeuXUydOpWEhATefvttbrvtNlq0aMHRRx9dJ70XkUNT4BGROpWQkMAjjzyC3W7n2GOP5c0332Tnzp3MmzePxMREAP73v//x3XffAbBu3Tpee+01br75Zq688koABg0aRPPmzbn11lv573//ywknnMCTTz5Jz549mTZt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UJX33fEd+SdCSW1MrkZERBq6Wo3wnHLKKdxwww24XC6Sk5M58cQTef/997nvvvsYOXJkXdcoUoV9+xIcW/6HYbXj7Xut2eWIiEgjUKvAM2XKFF566SW2bt3KBRdcgNPppKysjKuuuoqLL764rmsUqSI8utPtPEJJbU2uRkREGoNaBR673c6ll14afu33++nYsSMdOnTAYrHUVW0i1dh3LMWx+QsMi02jOyIiErFazeFZt24d559/Pt999x179uxhxIgRnH/++Rx//PEsWrSormsUCasyupPczuRqRESksahV4Jk6dSpt27alffv2vPbaaxQVFfHll19y1VVX8fe//72uaxQBwL5zGY5fPq8Y3emn0R0REYlcrQJPTk4ON9xwA2lpaSxYsIChQ4eSkZHB8OHD2bBhQ13XKALsu6uyv9u5hJLbm1uMiIg0KrUKPImJieTl5bF9+3aWL18evix99erVpKen12V9IgDYdy7HuelTDItVc3dERKTGajVp+dxzz+Xqq6/G4XDQpk0bBg8ezMsvv8yDDz7I9ddfX9c1iuBZ8igA/q4jCaZ0NLcYERFpdGoVeG666SZ69OjB1q1bGT58ODabjVatWvHwww9z0kkn1XWN0sTZc7/HuXFBxehOPwVqERGpuVoFHoChQ4eyceNGVqxYQSgUokOHDnTu3LkuaxMBwLP4UQD8Xc7R6I6IiNRKrQLPnj17mDhxIp9++ilJSUkEg0FKSkro378/Tz75JImJiXVdpzRRttxVOH/+CAOLRndERKTWajVp+d5772XHjh289957fPPNNyxZsoR33nkHr9fL/fffX9c1ShMWv2TvlVldziaYqhFEERGpnVoFnk8//ZQpU6bQseO+0wudO3dm8uTJfPLJJ3VWnDRttrwfcG74cO/ozg1mlyMiIo1YrZ+WbrVWf6vFYiEYDP7uokQA4iuvzOp8FsG0LuYWIyIijVqtAs+QIUOYOnUqv/zyS3jZxo0bueeeezjhhBMi3o7f72fSpEn069ePwYMHM2vWrMO+Z8uWLWRnZ/PNN99UWf78889z3HHHkZ2dzaRJkygtLY18h6TBse1ajXP9+wB4+11ncjUiItLY1Srw3HLLLTidToYNG8bAgQMZOHAgp512GikpKdx5550Rb+fBBx9k5cqVzJ49m7vuuovp06fz4Ycf/uZ7pkyZgtfrrbLso48+Yvr06dx9993Mnj2bFStWMG3atNrsmjQQnsWPAeDvdCbB9CNNrkZERBq7iK/S2rZtW5XXf//73ykqKuK///0vLpeLwYMH43Q68Xq9pKSkHHZ7Xq+XefPmMXPmTLKyssjKymLt2rXMmTOH00477aDvmT9/PiUlJdWWv/DCC4wdOzZ8D6CpU6fy5z//mVtuuQW32x3pLkoDYdv1I8717wFQ0v8Gc4sREZGYEHHgGTJkCBaLpdpywzCAivk7hmFgsVhYvXr1Ybe3Zs0aAoEA2dnZ4WV9+/ZlxowZhEKhanOECgoKmDZtGrNmzWL48OHh5cFgkO+//54JEyaEl/Xu3Zvy8nLWrFlTZfvSOHiWPIYFA3/H0wmmdze7HBERiQERB566vvoqNzeX1NRUHA5HeFlGRgZ+v5/CwkLS0tKqrP/AAw8wcuRIunSpOnl1z549+P1+mjdvHl5mt9tJSUlhx44dNarpIHnud6vcZjS2HWssFuDXNTjWvgOAd8CN6tsh6LiKnHpVM+pX5NSryEWrVzXZXsSBp3Xr1rWp5ZBKS0urhB0g/LqsrKzK8q+//pqlS5fy7rvvVtuOz+er8t79t3Xgdg4nPT16N0yM5rZjymvTsGDAkcNJPXKg2dU0eDquIqde1Yz6FTn1KnJm9qrWj5b4vZxOZ7VAUvna5XKFl/l8PiZPnsxdd91VZfn+29n/vftvq6bzd3btKmLvGbo6Y7FU/AZHY9uxxlawjtSVrwNQ0GsCwbwikytquHRcRU69qhn1K3LqVeSi1avK7UbCtMCTmZlJQUEBgUAAu72ijNzcXFwuF0lJSeH1cnJy2Lx5M9ddV/XS5HHjxjFixAimTJmC0+kkLy+PTp06ARAIBCgsLKRZs2Y1qskwiNpBG81txwr34scAA3+HYQQyjgL167B0XEVOvaoZ9Sty6lXkzOyVaYGne/fu2O12li9fTr9+/QBYunQpPXr0qDJhuWfPnnz88cdV3jts2DDuvfdeBg0ahNVqpUePHixdupSBAytOgSxfvhy73c6RR+py5sbCVrgB59q3AfDqyiwREaljpgUet9sdHqG57777+PXXX5k1a1b4WVy5ubkkJibicrlo165dtfdnZmaSnp4OwEUXXcTkyZPp2rUrzZs3Z8qUKZx//vm6JL0R8Sx5DIsRgq6nEWzeU6M7IiJSp0wLPAATJ05kypQpjB07loSEBK699lqGDRsGwODBg7n//vs599xzD7udM888k61btzJ58mTKysoYNmwYt9xyS7TLlzpiLfwZ509vVrw44TZzixERkZhkMQydeayUlxedScsZGYlR2XasSPzkJlxrXqWs3RAcl72pXkVAx1Xk1KuaUb8ip15FLlq9qtxuJGr1aAmRumLdvRHnjxVXZnkH3GhyNSIiEqsUeMRUnqVPYDGClB1xIoFM3RVbRESiQ4FHTGPd8wuuvaM7Jf01uiMiItGjwCOm8Sx9AksoQFnbEwi06Gt2OSIiEsMUeMQU1j2bca2ZB+iJ6CIiEn0KPGIKz9LpFaM7bQYTaNnf7HJERCTGKfBIvbMWbcW15lUAvJq7IyIi9UCBR+pdxehOOWWtj6W8lZ6ILiIi0afAI/XKWrQN1+q5gEZ3RESk/ijwSL3yfPdkxehOq6Mpb32M2eWIiEgTocAj9cZavA3XDy8DGt0REZH6pcAj9cbz3VNYQmWUtRxIeetjzS5HRESaEAUeqRfWkh1VR3csFpMrEhGRpkSBR+qF+7unsQT9lLfsT3mbQWaXIyIiTYwCj0SdtWQn7lUvAXufmaXRHRERqWcKPBJ17mUzKkZ3WvSlvM1xZpcjIiJNkAKPRJXFm4t71YuARndERMQ8CjwSVZ5lM7AEfJRnZlPe9gSzyxERkSZKgUeixuLNw71yNqArs0RExFwKPBI1nuV7R3ea96LsiJPMLkdERJowBR6JCkvpLtzfa3RHREQaBgUeiQrP8n9iCZRS3qwnZe1ONrscERFp4hR4pM5ZSvNx5zwPgLf/DRrdERER0ynwSJ3zLH8GS8BLecZRlLUfanY5IiIiCjxStyy+Alzf/wvQ6I6IiDQcCjxSp9zLZ2ItLyGQ/gfKOpxqdjkiIiKAAo/UIYuvAHfOLABKNLojIiINiAKP1Bn3imexlhcTSD+Sso6nmV2OiIhImAKP1AmLr3Df6E6/G8CiQ0tERBoO/askdcKdMwtrWRGBtG6UdTrD7HJERESqUOCR383i34M75zkAvBrdERGRBkj/Msnv5s6ZhdW/m0BqV/ydzzS7HBERkWoUeOR3sZQV4V4xEwBv/+s1uiMiIg2S/nWS38Wd86+9ozud8XcabnY5IiIiB6XAI7VmKSvGvfwZALz9rgerzeSKREREDk6BR2rN9f3zWP2FBFI64u98ttnliIiIHJICj9ROWQme5f8EwNvvOo3uiIhIg6bAI7XiXvk8Vl8BgeT2+LuMMLscERGR36TAIzVXVoJnWeXozvVgtZtckIiIyG9T4JEac698Aasvn2BSO/xdR5pdjoiIyGEp8EjNlHvxLJ8BQEm/6zS6IyIijYICj9SIe+WLWEt3EUw6An/Xc80uR0REJCKmBh6/38+kSZPo168fgwcPZtasWYdcd/78+Zx66qn07NmTUaNGkZOTE/6ZYRg899xzDBkyhH79+jFx4kRKSkrqYxealvJSPMueBsDb91qwxZlckIiISGRMDTwPPvggK1euZPbs2dx1111Mnz6dDz/8sNp6S5Ys4Y477uCaa67hvffeIzs7m3HjxoVDzSuvvML06dO56aabePnll9m5cyc333xzfe9OzHOveglraR7BxLb4up1ndjkiIiIRMy3weL1e5s2bxx133EFWVhZDhw7liiuuYM6cOdXWzc3N5ZprruGcc86hbdu2jB8/nsLCQtavXw/ASy+9xGWXXcbw4cPp0qULDzzwAJ9//jkbNmyo792KXYFS3OHRnQka3RERkUbFtBmna9asIRAIkJ2dHV7Wt29fZsyYQSgUwmrdl8VOP/308Pc+n4/nn3+e9PR0OnXqBMDmzZvp1atXeJ3mzZuTlpbG8uXL6dixYz3sTexzr/o3Nu+vBBNa4zvyT2aXIyIiUiOmBZ7c3FxSU1NxOBzhZRkZGfj9fgoLC0lLS6v2noULF3L55ZdjGAYPPfQQ8fHxAKSnp7Nz587wel6vl927d1NQUFCjmiyWWu5MBNuMxrbrTcCHe9lTAJT2uxaL3XGYN9ROTPSqnqhXkVOvakb9ipx6Fblo9aom2zMt8JSWllYJO0D4dVlZ2UHf06VLF9544w0+++wzbr/9dtq0aUPv3r0544wz+Oc//0nfvn1p06YNDzzwAADl5eU1qik9PbEWe2L+tqPum5ehZCcktSFh8J9JiFLgqdSoe1XP1KvIqVc1o35FTr2KnJm9Mi3wOJ3OasGm8rXL5TroezIyMsjIyKB79+6sWLGCuXPn0rt3b6655ho2b97MmWeeid1uZ9SoURx55JEkJCTUqKZdu4owjNrtz6FYLBW/wdHYdr0I+kn97z+wAcXZ1+Ar9AP+qHxUo+9VPVKvIqde1Yz6FTn1KnLR6lXldiNhWuDJzMykoKCAQCCA3V5RRm5uLi6Xi6SkpCrr5uTkYLPZyMrKCi/r1KlTeNKyx+Phscceo6ioCIvFQkJCAscccwytW7euUU2GQdQO2mhuO5pcq+ZiK9lBMKElpd0vgHrYh8baKzOoV5FTr2pG/YqcehU5M3tl2lVa3bt3x263s3z58vCypUuX0qNHjyoTlgFee+01Hn744SrLVq1aFZ6Q/OCDD/Lmm2+SmJhIQkICOTk5FBUVVZkQLbUQ9OP5bjoA3j7jweY0uSAREZHaMS3wuN1uRowYwZQpU8jJyWHBggXMmjWLMWPGABWjPT6fD4ALLriARYsWMXv2bDZu3Mjjjz9OTk4Ol156KVBxVdb06dPJyclh5cqV3HLLLVx44YWkpKSYtHexwbX6VWzF2wnGZ+LrPsrsckRERGrN1BsPTpw4kaysLMaOHcvUqVO59tprGTZsGACDBw/m/fffByArK4vp06fz2muvcfbZZ/PFF1/w3HPPkZmZCcDo0aMZMmQI48aNY9y4cZx00kncdtttpu1XTAiW4VlaMbpTmn0N2A8+r0pERKQxsBiGzjxWysuLzqTljIzEqGw7mlyrXiLx89sJepqTP/orsLuj/pmNtVdmUK8ip17VjPoVOfUqctHqVeV2I6GHh0p1+4/u9LmmXsKOiIhINCnwSDWuH1/DVrSFkLsZpVkXm12OiIjI76bAI1UFy/EseQIAb5+rNbojIiIxQYFHqnD9+Dq2os2E3BmUZo02uxwREZE6ocAj+wTL8SzdO7qTfRXEaXRHRERigwKPhDl/ehPbnk2E3OmUHjXG7HJERETqjAKPVAgF8Cx9HABv779AnMfkgkREROqOAo8A4Fz7FvbdGwm50ig9aqzZ5YiIiNQpBR6BUBDPksrRnSvBEW9yQSIiInVLgUdwrn0be+EGQs4UfD0uNbscERGROqfA09SFgniWPAZAae+/YDgSTC5IRESk7inwNHHOde9gL1xPyJlMac9LzS5HREQkKhR4mrIqoztXYjgiewCbiIhIY6PA04Q517+HvWBtxehOj8vMLkdERCRqFHiaKiO0b3Sn558xnEkmFyQiIhI9CjxNlGP9+9jzfyTkSKK015/NLkdERCSqFHiaIiNE/OJHACjteTmGM9nkgkRERKJLgacJcmz4YO/oTiKlva4wuxwREZGoU+BpaowQ8YsfBfaO7rhSTC1HRESkPijwNDGOnz/Cvms1obgEje6IiEiTocDTlBgGnvDozmUYrlRz6xEREaknCjxNiOPnj4nLW0UoLp7S3leaXY6IiEi9UeBpKgwDz5JHAfD1uFSjOyIi0qQo8DQRjk2fEJf7PYbdg7f3X8wuR0REpF4p8DQFhoGn8r47PcZiuNNMLkhERKR+KfA0AY5NnxL36woMuxtv9lVmlyMiIlLvFHhi3f6jO0eNwXCnm1yQiIhI/VPgiXFxv3xO3K/LMewuje6IiEiTpcATywxj3zOzssZgeJqZXJCIiIg5FHhiWNzm/xK38zsMm1OjOyIi0qQp8MSqKqM7l2DENze5IBEREfMo8MSouC1fErdjCYbNSWmfq80uR0RExFQKPLFo/9GdP1xEKL6FyQWJiIiYS4EnBsVt/Zq47d9iWB2U9rnG7HJERERMp8ATgzyLHwbAl3UhoYSWJlcjIiJiPgWeGBO39Wsc277BsDrw9hlvdjkiIiINggJPjKm8q7LvD6MIJbQyuRoREZGGQYEnhsRtW4Rj60IMa5xGd0RERPajwBNDPIsfBcDX/QJCia3NLUZERKQBUeCJEfbti3Fs+XLv6M4Es8sRERFpUBR4YkTlfXd8R/6JUFIbk6sRERFpWBR4YoB9x1Icm/+LYbXj7Xut2eWIiIg0OKYGHr/fz6RJk+jXrx+DBw9m1qxZh1x3/vz5nHrqqfTs2ZNRo0aRk5MT/plhGDzxxBMcf/zx9O/fnxtuuIH8/Pz62IUGIb7yvjvdziOU1NbkakRERBoeUwPPgw8+yMqVK5k9ezZ33XUX06dP58MPP6y23pIlS7jjjju45ppreO+998jOzmbcuHGUlJQA8Morr/Daa6/x0EMPMWfOHH799VfuuOOO+t4dU9h3fIfjly8wLDaN7oiIiByCaYHH6/Uyb9487rjjDrKyshg6dChXXHEFc+bMqbZubm4u11xzDeeccw5t27Zl/PjxFBYWsn79egC++OILzjjjDAYMGEDXrl254oorWLRoUX3vkinC993pdh6h5HYmVyMiItIwmRZ41qxZQyAQIDs7O7ysb9++rFixglAoVGXd008/nauvrnjit8/n4/nnnyc9PZ1OnToBkJKSwueff87OnTvx+Xy89957dO/evf52xiT2nctw/vLZ3tEdXZklIiJyKHazPjg3N5fU1FQcDkd4WUZGBn6/n8LCQtLS0qq9Z+HChVx++eUYhsFDDz1EfHw8AOPHj+fqq6/m+OOPx2az0axZM1555ZUa12Sx1H5/DrfNaGw7fu99d/xdR2KkdiAKH1GvotmrWKNeRU69qhn1K3LqVeSi1auabM+0wFNaWlol7ADh12VlZQd9T5cuXXjjjTf47LPPuP3222nTpg29e/dm69atuFwuZsyYQVJSEg8++CCTJk36zUnQB5Oenli7nTFj21u/g02fgMWKa9gkXFGsvb5F8/ch1qhXkVOvakb9ipx6FTkze2Va4HE6ndWCTeVrl8t10PdkZGSQkZFB9+7dWbFiBXPnzqVXr17cdttt3HrrrZx00kkAPProo5x00kmsWLGCXr16RVzTrl1FGEYtd+gQLJaK3+C63nbif+7DCfi6jqDYaA55RXW3cZNEq1exSL2KnHpVM+pX5NSryEWrV5XbjYRpgSczM5OCggICgQB2e0UZubm5uFwukpKSqqybk5ODzWYjKysrvKxTp06sX7+e/Px8tm/fTrdu3cI/a9myJampqWzdurVGgccwiNpBW5fbtud+j3PjfzAsVrx9r4+5P2jR/H2INepV5NSrmlG/IqdeRc7MXpk2abl79+7Y7XaWL18eXrZ06VJ69OiB1Vq1rNdee42HH364yrJVq1bRsWNHkpOTcTgc4Su2APLz8yksLKRNm9i843DlM7P8nc8mmNrJ3GJEREQaAdMCj9vtZsSIEUyZMoWcnBwWLFjArFmzGDNmDFAx2uPz+QC44IILWLRoEbNnz2bjxo08/vjj5OTkcOmll2K32zn33HP5+9//zuLFi/npp5+45ZZb6NWrFz169DBr96LGlrsK588fYWDB2+96s8sRERFpFEy98eDEiRPJyspi7NixTJ06lWuvvZZhw4YBMHjwYN5//30AsrKymD59Oq+99hpnn302X3zxBc899xyZmZkATJo0iWHDhnHzzTczevRokpKSeOqpp7DE4NT5+CUV993xdzmbYFoXk6sRERFpHCyGoTOPlfLyojNpOSMjsU62bcv7gbRXhmFgoeDCTwimda2bIhuIuuxVrFOvIqde1Yz6FTn1KnLR6lXldiOhh4c2IvFLHgPA33l4zIUdERGRaFLgaSRsu9bgXP8egObuiIiI1JACTyPhqRzd6XQmwfQjTa5GRESkcVHgaQRs+T/hXPcuACX9bzC3GBERkUZIgacR8Cx5DAsG/o6nE0yP/YeiioiI1DUFngbOlr8W59r5AJT0v9HkakRERBonBZ4GLjy60+FUghl/MLscERGRRkmBpwGzFazHua5idMeruTsiIiK1psDTgHmWPIbFCOFvP5RAs9h7TIaIiEh9UeBpoGyFG3CufQsAr+buiIiI/C4KPA2UZ8njFaM77U4m0Lyn2eWIiIg0ago8DZC18GecP70JaHRHRESkLijwNEDxS5/AYgTxH3ESgczeZpcjIiLS6CnwNDDW3Rtx/vg6oNEdERGRuqLA08B49o7ulB1xAoEWfcwuR0REJCYo8DQg1j2/4No7ulPS/yaTqxEREYkdCjwNiGfpdCyhAGVtjyfQoq/Z5YiIiMQMBZ4GwrpnC641rwJ6ZpaIiEhdU+BpIDzf7R3daTOYQMv+ZpcjIiISUxR4GgBr0VZcq18BdGWWiIhINCjwNACe757EEiqnrPWxlLcaaHY5IiIiMUeBx2TW4m24fpgLaHRHREQkWhR4TFYxulNGWaujKW99jNnliIiIxCQFHhNZi7fjWvUyoNEdERGRaFLgMZH7u6ewhMoobzmA8tbHml2OiIhIzFLgMYm1ZAfuH/4N7L3vjsVickUiIiKxS4HHJO7vnsYS9FPeoh/lbQabXY6IiEhMU+AxgbVkJ+5VLwEa3REREakPCjwmcC+bUTG6k9mH8rbHm12OiIhIzFPgqWcWby7uVS8CGt0RERGpLwo89cyzbAaWgI/y5r0pP+JEs8sRERFpEhR46pHFm4d75QvA3vvuaHRHRESkXijw1CPP8n9iCZRS3rwXZe2GmF2OiIhIk6HAU08spfm4v58NaHRHRESkvinw1BP3sn9iCXgpb9aTsnYnm12OiIhIk6LAUx+8+bi+f77i2/43aHRHRESkninw1IeF07GWl1CecRRl7YeaXY2IiEiTo8ATZRZfAXzzDKDRHREREbMo8ESZe/mzUFZEIOMPlHU41exyREREmiQFnmgyDFw5swDw9rteozsiIiImsZtdQEwzQgQye+NISKGs0+lmVyMiItJkKfBEk9XGnnNeJiMjEfKKwDC7IBERkabJ1FNafr+fSZMm0a9fPwYPHsysWbMOue78+fM59dRT6dmzJ6NGjSInJyf8s27duh3066233qqHvRAREZGGztQRngcffJCVK1cye/Zstm3bxm233UarVq047bTTqqy3ZMkS7rjjDu6991769OnDv//9b8aNG8enn35KfHw8X375ZZX1n3/+eT744ANOPlk3+BMRERETR3i8Xi/z5s3jjjvuICsri6FDh3LFFVcwZ86cauvm5uZyzTXXcM4559C2bVvGjx9PYWEh69evB6BZs2bhL5/Px4svvsi9995LYmJife+WiIiINECmjfCsWbOGQCBAdnZ2eFnfvn2ZMWMGoVAIq3VfFjv99H0Tfn0+H88//zzp6el06tSp2nYff/xxjjnmGI499tjo7oCIiIg0GqYFntzcXFJTU3E4HOFlGRkZ+P1+CgsLSUtLq/aehQsXcvnll2MYBg899BDx8fFVfr5t2zbeffdd5s6dW6uaonHVeOU2dUX64alXkVOvIqde1Yz6FTn1KnLR6lVNtmda4CktLa0SdoDw67KysoO+p0uXLrzxxht89tln3H777bRp04bevXuHf/7aa69x1FFH0atXr1rVlJ4evVNg0dx2rFGvIqdeRU69qhn1K3LqVeTM7JVpgcfpdFYLNpWvXS7XQd+TkZFBRkYG3bt3Z8WKFcydO7dK4Pnoo48YNWpUrWvatasIo44vHbdYKn6Do7HtWKNeRU69ipx6VTPqV+TUq8hFq1eV242EaYEnMzOTgoICAoEAdntFGbm5ubhcLpKSkqqsm5OTg81mIysrK7ysU6dO4UnLANu3b2fdunW/68oswyBqB200tx1r1KvIqVeRU69qRv2KnHoVOTN7ZdpVWt27d8dut7N8+fLwsqVLl9KjR48qE5ah4lTVww8/XGXZqlWr6NixY/j1ihUraNmyJa1atYpq3SIiItL4mBZ43G43I0aMYMqUKeTk5LBgwQJmzZrFmDFjgIrRHp/PB8AFF1zAokWLmD17Nhs3buTxxx8nJyeHSy+9NLy9tWvXHvSqLRERERFT77Q8ceJEsrKyGDt2LFOnTuXaa69l2LBhAAwePJj3338fgKysLKZPn85rr73G2WefzRdffMFzzz1HZmZmeFt5eXkkJyebsh8iIiLSsFkMQ2ceK+XlRWfSckZGYlS2HWvUq8ipV5FTr2pG/YqcehW5aPWqcruRMHWER0RERKQ+KPCIiIhIzDP14aENje60bC71KnLqVeTUq5pRvyKnXkWuIdxpWXN4REREJObplJaIiIjEPAUeERERiXkKPCIiIhLzFHhEREQk5inwiIiISMxT4BEREZGYp8AjIiIiMU+BR0RERGKeAo+IiIjEPAWeOuD3+5k0aRL9+vVj8ODBzJo165Dr/vDDD/zpT3+iV69e/PGPf2TlypX1WKn5atKrq6++mm7dulX5+uyzz+qx2oahrKyM4cOH88033xxynaZ+XFWKpFdN/bjauXMn1113HQMGDOC4447j/vvvx+/3H3RdHVc161dTP7Y2bdrEn//8Z7KzsznxxBN59tlnD7muKceWIb/b3XffbZx11lnGypUrjY8//tjIzs42Pvjgg2rrlZSUGIMGDTIeeOABY926dcY999xjHHvssUZJSYkJVZsj0l4ZhmEMHTrUePvtt41ff/01/OX3++u5YnP5fD5j/PjxRteuXY1FixYddB0dVxUi6ZVhNO3jKhQKGeeff75xxRVXGD/99JOxePFiY+jQocYDDzxQbV0dVzXrl2E07WMrGAwaw4YNM26++Wbj559/Nj7//HOjT58+xvz586uta9axpcDzO5WUlBg9evSo8hfsk08+aVxyySXV1p03b54xZMgQIxQKGYZR8Ydp6NChxuuvv15v9ZqpJr3y+/1G9+7djQ0bNtRniQ3K2rVrjbPPPts466yzfvMf8aZ+XBlG5L1q6sfVunXrjK5duxq5ubnhZe+8844xePDgauvquKpZv5r6sbVz507j+uuvN4qKisLLxo8fb9x1113V1jXr2NIprd9pzZo1BAIBsrOzw8v69u3LihUrCIVCVdZdsWIFffv2xbL38a4Wi4U+ffqwfPny+izZNDXp1YYNG7BYLLRt27a+y2wwvv32WwYOHMgrr7zym+s19eMKIu9VUz+umjVrxrPPPktGRkaV5cXFxdXW1XFVs3419WOrefPmPProoyQkJGAYBkuXLmXx4sUMGDCg2rpmHVv2qG69CcjNzSU1NRWHwxFelpGRgd/vp7CwkLS0tCrrdu7cucr709PTWbt2bb3Va6aa9GrDhg0kJCRw66238u2339KiRQuuvfZaTjjhBDNKN8VFF10U0XpN/biCyHvV1I+rpKQkjjvuuPDrUCjESy+9xNFHH11tXR1XNetXUz+29jdkyBC2bdvGSSedxKmnnlrt52YdWxrh+Z1KS0ur/AMOhF+XlZVFtO6B68WqmvRqw4YN+Hw+Bg8ezLPPPssJJ5zA1Vdfzffff19v9TYWTf24qgkdV1VNmzaNH374gRtvvLHaz3RcVfdb/dKxtc/jjz/OjBkzWL16Nffff3+1n5t1bGmE53dyOp3VfpMqX7tcrojWPXC9WFWTXl1zzTWMHj2a5ORkAI488khWrVrFq6++So8ePeqn4EaiqR9XNaHjap9p06Yxe/ZsHnnkEbp27Vrt5zquqjpcv3Rs7VO5v36/n//7v//j1ltvrRJwzDq2NMLzO2VmZlJQUEAgEAgvy83NxeVykZSUVG3dvLy8Ksvy8vJo3rx5vdRqtpr0ymq1hv/iqNSxY0d27txZL7U2Jk39uKoJHVcV7rnnHv71r38xbdq0g55yAB1X+4ukX0392MrLy2PBggVVlnXu3Jny8vJqc57MOrYUeH6n7t27Y7fbq0y2Wrp0KT169MBqrdreXr16sWzZMgzDAMAwDL777jt69epVnyWbpia9uv3225k4cWKVZWvWrKFjx471UWqj0tSPq5rQcQXTp09n7ty5PPzww5x55pmHXE/HVYVI+9XUj60tW7YwYcKEKgFv5cqVpKWlVZmfCeYdWwo8v5Pb7WbEiBFMmTKFnJwcFixYwKxZsxgzZgxQMYLh8/kAOO2009izZw9/+9vfWLduHX/7298oLS3l9NNPN3MX6k1NejVkyBDeeecd3nrrLTZt2sT06dNZunQpl1xyiZm70GDouIqcjqt91q9fz1NPPcW4cePo27cvubm54S/QcXWgmvSrqR9bPXr0ICsri0mTJrFu3Tq++OILpk2bxlVXXQU0kGMrqhe9NxFer9e49dZbjd69exuDBw82/vWvf4V/1rVr1yr3FlixYoUxYsQIo0ePHsZ5551nrFq1yoSKzVOTXr366qvGsGHDjKOOOsoYOXKk8e2335pQccNw4L1ldFwd2uF61ZSPq3/+859G165dD/plGDquDlTTfjXlY8swDGPHjh3G+PHjjT59+hiDBg0ynn766fC9dhrCsWUxjL1jSiIiIiIxSqe0REREJOYp8IiIiEjMU+ARERGRmKfAIyIiIjFPgUdERERingKPiIiIxDwFHhEREYl5CjwiIvvZsmUL3bp1Y8uWLWaXIiJ1SIFHREREYp4Cj4iIiMQ8BR4RadC2b9/OVVddRa9evRgyZAjTp08nGAzyxhtvcOGFF/LQQw+RnZ3NiSeeyLx588LvC4VCPPvss5x88sn07NmT0aNH8+OPP4Z/vmvXLm644Qb69OnDoEGDePjhh9n/STsLFizglFNOoVevXlx11VXs3r27XvdbROqW3ewCREQOxTAMJkyYwJFHHsmbb75Jbm4ukydPxmKx0LJlS77//ns8Hg+vvPIKOTk5TJkyhZYtWzJ48GCefPJJXn75Ze655x7at2/PzJkzueKKK/joo4/weDyMHz8em83GSy+9RElJCTfeeCPNmzfnxBNPBODNN98Mh6AJEyYwc+ZM/u///s/chohIrSnwiEiDtWjRIrZt28a8efOwWq107NiR2267jYkTJ3LbbbdhsVh48MEHSU9Pp2vXrixevJhXX32VQYMG8dJLL3HTTTdx8sknA3DPPfcwdOhQ5s+fT+/evVm2bBkLFiygbdu2AEyZMgWv1xv+7FtuuYWePXsCcPrpp7NmzZr6b4CI1BkFHhFpsNavX09hYSF9+/YNLwuFQvh8PgoLC2nXrh3p6enhnx111FHMnTuXXbt2UVhYSK9evcI/i4uL46ijjmL9+vUkJyeTkpISDjsAp5xyCkD46qwjjjgi/LPExET8fn/U9lNEok+BR0QarEAgQMeOHXnqqaeq/ezbb7/Fbq/6V1gwGMRqteJ0Og+6vWAwSCgUIi4u7rCfbbVqiqNILNGfaBFpsDp06MC2bdtIS0ujXbt2tGvXji1btvD4448DsGnTJkpKSsLrr1y5kq5du5KYmEhGRgbLly8P/6y8vJxVq1bRoUMH2rVrR2FhIdu3bw///IUXXuCaa66pt30TkfqlwCMiDdbgwYNp3bo1t9xyCz/++CNLlizhzjvvxO12Y7PZ8Hq93HXXXaxfv55XX32VDz/8kIsuugiASy+9lMcff5xPP/2U9evXc+edd+L3+znjjDPo0qULRx99NHfccQc//vgj33zzDc888wyDBg0yeY9FJFp0SktEGiybzcbTTz/NPffcw/nnn4/H4+G0007jtttu4/3336dly5Y0a9aM8847j2bNmjFt2rTwfJ/LL7+c4uJi7rzzToqLi8nOzubFF18kLS0NgGnTpjF16lQuuOACEhISuOCCC7jooovYunWrmbssIlFiMfa/8YSISCPxxhtvMH36dD799FOzSxGRRkCntERERCTmKfCIiIhIzNMpLREREYl5GuERERGRmKfAIyIiIjFPgUdERERingKPiIiIxDwFHhEREYl5CjwiIiIS8xR4REREJOYp8IiIiEjMU+ARERGRmPf/qoJzdlJAfToAAAAASUVORK5CYII=\n"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"### Zapisywanie modelu"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 19,
"outputs": [],
"source": [
"model.save(\"model_v1.keras\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"### Testowanie na zbiorze walidacyjnym"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 20,
"outputs": [],
"source": [
"valid_x = valid[x_columns]\n",
"valid_y = valid[y_column]"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 36,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1392/1392 [==============================] - 1s 569us/step\n",
"Poprawność na zbiorze walidacyjnym: 86.15%\n"
]
}
],
"source": [
"import numpy as np\n",
"predictions = model.predict(valid_x)[:,0]\n",
"true_answers = valid_y.to_numpy()\n",
"validation_accuracy = np.sum(np.rint(predictions) == true_answers)/len(true_answers)\n",
"print(f\"Poprawność na zbiorze walidacyjnym: {validation_accuracy:.2%}\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 37,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.08692811 0.12067404 0.31880796 0.64843357 0.15188715 0.06517262\n",
" 0.03407578 0.49311596 0.00781232 0.2089161 0.46056542 0.45341685\n",
" 0.4294767 0.25619727 0.20345858 0.2302334 0.38631877 0.36519188\n",
" 0.04014764 0.23888215 0.27519897 0.08928084 0.05204074 0.42043713\n",
" 0.19055638 0.29787344 0.23068897 0.88435644 0.03139259 0.95048493\n",
" 0.2457671 0.5858893 0.02678488 0.06240147 0.52132165 0.01431455\n",
" 0.02444405 0.07804424 0.11274771 0.12714393 0.35450152 0.01294624\n",
" 0.190797 0.07512036 0.48486376 0.06140704 0.9019506 0.08810509\n",
" 0.61831665 0.15642735 0.03310075 0.04532438 0.10763614 0.4277772\n",
" 0.20325996 0.8980398 0.7491019 0.38502344 0.03970775 0.0401529\n",
" 0.03046079 0.10123587 0.04993626 0.05702 0.18049946 0.1223311\n",
" 0.731555 0.40104443 0.18443953 0.1265702 0.07467585 0.03895461\n",
" 0.35271063 0.38039213 0.4450048 0.03670818 0.05534125 0.91664517\n",
" 0.413391 0.12545326 0.11306539 0.4350903 0.48778924 0.40804324\n",
" 0.33885244 0.21948677 0.01242744 0.02531701 0.6693964 0.15393472\n",
" 0.9307252 0.09181138 0.05571133 0.1261858 0.02687709 0.27069062\n",
" 0.22613294 0.20686075 0.47390068 0.40349996]\n"
]
}
],
"source": [
"print(predictions[:100])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 38,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.\n",
" 1. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 1. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 0.]\n"
]
}
],
"source": [
"print(np.rint(predictions)[:100])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 39,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
" 0. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.\n",
" 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.\n",
" 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 0.]\n"
]
}
],
"source": [
"print(true_answers[:100])"
],
"metadata": {
"collapsed": false
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}