{"cells":[{"cell_type":"markdown","metadata":{},"source":"## <u>Biological and Artificial Neurons</u>\nBiological neurons communicate using electrical impulses and neurotransmitters, forming complex, interconnected networks that process information.They  enable complex thought and learning.\n\nArtificial neurons, inspired by biological ones, use binary inputs and outputs to perform logical computations like AND, OR, and NOT operations.Ttey provide a simplified mathematical model for computational tasks."},{"cell_type":"markdown","metadata":{},"source":"### <u>The Perceptron</u>\nThe Perceptron is a simple artificial neural network introduced by Frank Rosenblatt in 1957. It consists of threshold logic units (TLUs), where each unit computes a weighted sum of its inputs and applies a step function to determine the output:\n$$\nh_{W,b}(X) = \\phi (XW + b)\n$$\n- X: Input features.  \n- W: Weights matrix.  \n- b: Bias vector.  \n- ϕ: Activation function.  \n\nThe Perceptron learning rule updates weights based on errors, inspired by Hebbian learning. The perceptron learning rule is:\n$$ w_{i,j}^{(t+1)} = w_{i,j}^{(t)} + \\eta (y_j - \\hat{y}_j)x_i $$\nHowever, it is limited to linearly separable problems, leading to the development of Multilayer Perceptrons (MLPs) for solving complex tasks like XOR classification.\n\nPerceptrons do not output probabilities, lack regularization, stop training early after zero errors, and may generalize worse than logistic regression or SVM, but they can train faster."},{"cell_type":"markdown","metadata":{},"source":"### <u>Multilayer Perceptron (MLP) and Backpropagation</u>\n\n**A Multilayer Perceptron (MLP)** is a type of artificial neural network composed of:\n- Input Layer: Takes the input features.\n- Hidden Layers: Contain neurons that process inputs using activation functions.\n- Output Layer: Produces the final prediction.\n\n**Backpropagation Algorithm**\nBackpropagation is the process of updating weights using gradient descent:\n1. Compute the weighted sum of inputs and apply an activation function.THEN Pass results to the next layer until reaching the output.\n2. Compare predicted output with actual values using a loss function.\n3. Compute the gradient of the loss with respect to each weight.THEN Adjust weights using gradient descent.\n\n**Common activation functions**:\n- **Sigmoid**: $\\sigma(z) = \\frac{1}{1 + e^{-z}}$ \n- **Tanh**: $\\tanh(z) = 2\\sigma(2z) - 1$ \n- **ReLU**: $ReLU(z) = \\max(0, z)$ \n\n "},{"cell_type":"markdown","metadata":{},"source":"### <u>Regression and Classification MLPs</u>\n\n**Number of Output Neurons**  \n- Regression: One neuron for a single value or multiple neurons for multi-output.  \n- Classification: One neuron for binary classification, multiple neurons for multiclass classification.\n\n**Activation Function in Output Layer**  \n- Regression: None , or ReLU/Sigmoid/Tanh if bounded output is needed.  \n- Classification: Sigmoid for binary classification, Softmax for multiclass classification.\n\n**Loss Function**  \n- Regression: MSE or Huber.  \n- Classification: log loss.\n\n**Output Interpretation**  \n- Regression: Direct numerical values.  \n- Classification: Probabilities (0-1 for sigmoid, class probabilities summing to 1 for softmax).\n"},{"cell_type":"markdown","metadata":{},"source":"## <u>Implementing MLPs with Keras</u>"},{"cell_type":"code","execution_count":1,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:21:10.530289Z","iopub.status.busy":"2025-09-21T01:21:10.530080Z","iopub.status.idle":"2025-09-21T01:21:31.766320Z","shell.execute_reply":"2025-09-21T01:21:31.765507Z","shell.execute_reply.started":"2025-09-21T01:21:10.530270Z"},"trusted":true},"outputs":[],"source":"import tensorflow as tf"},{"cell_type":"code","execution_count":2,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:30:49.648265Z","iopub.status.busy":"2025-09-21T01:30:49.647659Z","iopub.status.idle":"2025-09-21T01:30:50.301289Z","shell.execute_reply":"2025-09-21T01:30:50.300483Z","shell.execute_reply.started":"2025-09-21T01:30:49.648241Z"},"trusted":true},"outputs":[],"source":"# load the dataset\nmnist = tf.keras.datasets.mnist.load_data()"},{"cell_type":"code","execution_count":3,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:22:15.387323Z","iopub.status.busy":"2025-09-21T01:22:15.387062Z","iopub.status.idle":"2025-09-21T01:22:15.391322Z","shell.execute_reply":"2025-09-21T01:22:15.390726Z","shell.execute_reply.started":"2025-09-21T01:22:15.387303Z"},"trusted":true},"outputs":[],"source":"# split dataset into train ,test sets\n(X_train_full, y_train_full), (X_test, y_test) = mnist\nX_train, y_train = X_train_full[:-5000], y_train_full[:-5000] # actual training\nX_valid, y_valid = X_train_full[-5000:], y_train_full[-5000:] # validation"},{"cell_type":"code","execution_count":4,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:22:17.260413Z","iopub.status.busy":"2025-09-21T01:22:17.259734Z","iopub.status.idle":"2025-09-21T01:22:17.425654Z","shell.execute_reply":"2025-09-21T01:22:17.424876Z","shell.execute_reply.started":"2025-09-21T01:22:17.260387Z"},"trusted":true},"outputs":[],"source":"# scale pixel values between 0 and 1\nX_train, X_valid, X_test = X_train / 255.0, X_valid / 255., X_test / 255.0"},{"cell_type":"code","execution_count":5,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:22:21.516262Z","iopub.status.busy":"2025-09-21T01:22:21.515985Z","iopub.status.idle":"2025-09-21T01:22:25.023194Z","shell.execute_reply":"2025-09-21T01:22:25.022573Z","shell.execute_reply.started":"2025-09-21T01:22:21.516240Z"},"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["c:\\Users\\DELL\\miniconda3\\envs\\workshop_env\\lib\\site-packages\\keras\\src\\layers\\reshaping\\flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n","  super().__init__(**kwargs)\n"]}],"source":"tf.random.set_seed(42) # set random seed to make the results reproducible\n\n# define a neural network with three layers\nmodel = tf.keras.Sequential([ \ntf.keras.layers.Flatten(input_shape=[28, 28]),          \ntf.keras.layers.Dense(300, activation=\"relu\"),          \ntf.keras.layers.Dense(100, activation=\"relu\"),  \ntf.keras.layers.Dense(10, activation=\"softmax\")         \n ])"},{"cell_type":"code","execution_count":6,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:22:26.498847Z","iopub.status.busy":"2025-09-21T01:22:26.498219Z","iopub.status.idle":"2025-09-21T01:22:26.513206Z","shell.execute_reply":"2025-09-21T01:22:26.512590Z","shell.execute_reply.started":"2025-09-21T01:22:26.498823Z"},"trusted":true},"outputs":[{"data":{"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n","</pre>\n"],"text/plain":["\u001b[1mModel: \"sequential\"\u001b[0m\n"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n","┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n","┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n","│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>)            │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                   │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">300</span>)            │       <span style=\"color: #00af00; text-decoration-color: #00af00\">235,500</span> │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>)            │        <span style=\"color: #00af00; text-decoration-color: #00af00\">30,100</span> │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,010</span> │\n","└─────────────────────────────────┴────────────────────────┴───────────────┘\n","</pre>\n"],"text/plain":["┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n","┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n","┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n","│ flatten (\u001b[38;5;33mFlatten\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m)            │             \u001b[38;5;34m0\u001b[0m │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense (\u001b[38;5;33mDense\u001b[0m)                   │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m300\u001b[0m)            │       \u001b[38;5;34m235,500\u001b[0m │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense_1 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m)            │        \u001b[38;5;34m30,100\u001b[0m │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense_2 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m)             │         \u001b[38;5;34m1,010\u001b[0m │\n","└─────────────────────────────────┴────────────────────────┴───────────────┘\n"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">266,610</span> (1.02 MB)\n","</pre>\n"],"text/plain":["\u001b[1m Total params: \u001b[0m\u001b[38;5;34m266,610\u001b[0m (1.02 MB)\n"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">266,610</span> (1.02 MB)\n","</pre>\n"],"text/plain":["\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m266,610\u001b[0m (1.02 MB)\n"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n","</pre>\n"],"text/plain":["\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"]},"metadata":{},"output_type":"display_data"}],"source":"# display all the model’s layers\nmodel.summary()"},{"cell_type":"code","execution_count":7,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:27:05.162802Z","iopub.status.busy":"2025-09-21T01:27:05.162450Z","iopub.status.idle":"2025-09-21T01:27:05.173709Z","shell.execute_reply":"2025-09-21T01:27:05.172967Z","shell.execute_reply.started":"2025-09-21T01:27:05.162748Z"},"trusted":true},"outputs":[],"source":"# configuring the model (loss function , optimizer and tracking )\nmodel.compile(loss=\"sparse_categorical_crossentropy\", \noptimizer=\"sgd\",                                        \nmetrics=[\"accuracy\"])                                  "},{"cell_type":"code","execution_count":8,"metadata":{"execution":{"iopub.execute_input":"2025-09-21T01:27:07.698910Z","iopub.status.busy":"2025-09-21T01:27:07.698609Z","iopub.status.idle":"2025-09-21T01:30:07.022038Z","shell.execute_reply":"2025-09-21T01:30:07.021328Z","shell.execute_reply.started":"2025-09-21T01:27:07.698889Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 8ms/step - accuracy: 0.7307 - loss: 1.0291 - val_accuracy: 0.9334 - val_loss: 0.2547\n","Epoch 2/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9145 - loss: 0.3040 - val_accuracy: 0.9474 - val_loss: 0.1990\n","Epoch 3/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9309 - loss: 0.2441 - val_accuracy: 0.9546 - val_loss: 0.1694\n","Epoch 4/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 4ms/step - accuracy: 0.9408 - loss: 0.2079 - val_accuracy: 0.9604 - val_loss: 0.1494\n","Epoch 5/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9485 - loss: 0.1814 - val_accuracy: 0.9638 - val_loss: 0.1345\n","Epoch 6/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9549 - loss: 0.1605 - val_accuracy: 0.9676 - val_loss: 0.1228\n","Epoch 7/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9598 - loss: 0.1433 - val_accuracy: 0.9698 - val_loss: 0.1136\n","Epoch 8/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9638 - loss: 0.1291 - val_accuracy: 0.9714 - val_loss: 0.1062\n","Epoch 9/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9674 - loss: 0.1170 - val_accuracy: 0.9728 - val_loss: 0.1000\n","Epoch 10/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9707 - loss: 0.1066 - val_accuracy: 0.9734 - val_loss: 0.0952\n","Epoch 11/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9730 - loss: 0.0975 - val_accuracy: 0.9746 - val_loss: 0.0911\n","Epoch 12/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9754 - loss: 0.0896 - val_accuracy: 0.9756 - val_loss: 0.0876\n","Epoch 13/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9776 - loss: 0.0827 - val_accuracy: 0.9766 - val_loss: 0.0848\n","Epoch 14/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9793 - loss: 0.0764 - val_accuracy: 0.9780 - val_loss: 0.0825\n","Epoch 15/15\n","\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 9ms/step - accuracy: 0.9809 - loss: 0.0709 - val_accuracy: 0.9780 - val_loss: 0.0804\n"]}],"source":"#For mnist\n\n# Train dataset for 10 iterations\nhistory = model.fit(X_train, y_train, epochs=15,validation_data=(X_valid, y_valid))"},{"cell_type":"code","execution_count":9,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAqQAAAGyCAYAAAAyIdayAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvfElEQVR4nO3dd3wUReMG8Gfv0htpkAAJvQUIXRBQ6SJgXhBFhAhI5xUUjAhEaf4QQnlBFFAEBVRAUBFEUQEjiNJblN57CRAgvVzu9vfHcLkecmmb5J7v57Of29udu5sMBzyZnZ2RZFmWQURERESkEJXSFSAiIiIix8ZASkRERESKYiAlIiIiIkUxkBIRERGRohhIiYiIiEhRDKREREREpCgGUiIiIiJSFAMpERERESmKgZSIiIiIFMVASkRERESKsjuQ7tq1CxEREahUqRIkScKmTZse+5qdO3eiWbNmcHV1Ra1atbBq1ap8VJWIiIiIyiK7A2lqaioaN26MJUuW5Kn8pUuX0KNHD3To0AFxcXEYN24chg0bhq1bt9pdWSIiIiIqeyRZluV8v1iSsHHjRvTq1ctmmYkTJ2LLli04fvx4zrFXXnkFDx8+xG+//ZbfjyYiIiKiMsKpqD9g79696Ny5s8mxrl27Yty4cTZfk5mZiczMzJznOp0O9+/fR0BAACRJKqqqEhEREVE+ybKM5ORkVKpUCSqVfRfhizyQ3r59G0FBQSbHgoKCkJSUhPT0dLi7u1u8JiYmBu+//35RV42IiIiICtm1a9cQEhJi12uKPJDmR3R0NKKionKeJyYmokqVKjh79iz8/f0VrFnJodFosGPHDnTo0AHOzs5KV6dEYJuYYntYYptYYptYYptYYptYYptYun//PurUqQNvb2+7X1vkgTQ4OBjx8fEmx+Lj4+Hj42O1dxQAXF1d4erqanHc398fAQEBRVLP0kaj0cDDwwMBAQH8i/AI28QU28MS28QS28QS28QS28QS28S2/AyvLPJ5SFu3bo3Y2FiTY9u3b0fr1q2L+qOJiIiIqBSwO5CmpKQgLi4OcXFxAMS0TnFxcbh69SoAcbl94MCBOeVHjRqFixcvYsKECTh9+jQ++eQTfPvtt3jrrbcK5ycgIiIiolLN7kB66NAhNG3aFE2bNgUAREVFoWnTppg6dSoA4NatWznhFACqV6+OLVu2YPv27WjcuDHmz5+Pzz//HF27di2kH4GIiIiISjO7x5C2b98euU1dam0Vpvbt2+Po0aP2fhQREREROQCuZU9EREREimIgJSIiIiJFlch5SImIiIj0ZBnQ6UrWlpUl4cCBIOh0EtRqUUfjTV9va1tZPZeWlv9+TgZSIiIq8/SBRqu13LKzTZ9nZAA3b3rizBlArRbHjIOI8XNb+0VxTsn3yM5W4969pzBnjlqRcFgyOQF4UulKlDDqfL+SgZSIqIyQZUCjAbKyxKPxvvmjfj89XcLBg0HIzpYgSdYDmq3gVtBzxfl+Wq09LekMoHMR/SmVVioApWdhGpXK3k0Wj5IMlfTouZPacD47CypJBxVk8SjJgKxDemoyvHy8IXn7QJIgtocPIGmzIUEHCTKgk3P2JbUaUqWKhrLXrwGZGZBkGZKsE+X0+05qSA3qA3hU9vRJSMlJ4pzRBp0MSS1Bat/e8L4H9kO6Ew/IOkg6fVmt2IcMKbI/9HPXSzv+gHTtijhutgGANHSoqIsESLG/Qzp3xvS8UfmM1/ris1X5+zNjICUiMqLT5T3MlbRz2dn5+YnZywOI0KFW6zcZspwNV1cnqFRSTihRq2F1355zhfU+xfEZxs91umz8888RtGjRDC7OaqhkrSjj4iQeZS1UDxKg0mWLfV222LQa8ehXDqrqVUVZXTZUu3YazhtvumyoqlWBqnNHURY6qObEiECYnQWVNguq7Edls7OgCm8A1fgoQ52f7w4pLdXwlyM727D/xBPA6tWGP/Tq1YH4eOt/eVq2BPbvNzwPrQlcv271uyOXqw9p/wnDgbA2wLnT1r9o1aoBOy4Znrd4ATh72HrZ8uWBLXcMz9v9F9i1y3pZDw/g+1TD8+7vA1d+tV4WAL7sh5xE2udT4Nr3Yl+lApycTLePIgFPT3F+wjZg82bDOWdnk7IJU/7DQEpEypBl0fuk/zff2mb8f4KS57OynPDgQUe4ujrZDHr29aSVfM7OYnNxsf7o7CwjNfUh/P3LwclJBScn42BmuuXnXGl4P5XK8H8zAGg02fjll1/QvXv3olsS0vgvjf7L5+UlNgBISQHOnLH920jDhkC9eqJsfDywbp3lbyrpj/a7dAG6dxdlr18HoqJs/4bTvz+gX7jm2jWgVStAo4GclYWXMzKg1ukg6cPb668DS5aI/TsJQFCQ7Z934EDgyy/FfloW0KKL7bIvvggM7ij2ZQlYNNl22cTngPeiDM//2gWkplova16/tDQgPd16WfOAGhgIZGYaQpizM2S1GskZGfCqWRMmC2W2aQOEhloGO2dnoEIF0/ft3x9o186yrJMTYL4e/MSJwJAh1su6uJiW/fBDYMYMi8CYsxlbswZYu9bw20du5s4Vmy0JCbm/PhcMpEQlmE4n/g1MTxfj2jIyTPfNnxvvp6aqcOJEGHbtUpn0+hV24Mtfr5xSJADejy1lzjTA2Q53Ja2Mk5Np0LJGhK9dj8JXKZ94RZbFFzIzU2ze3ob/qO/dAy5eMpwz3rKygPbtgSpVRNl//0Xdb76Bas8e/d0rpqFt1ChAv/z1338D06fbDnizZgF9+4qy27cDERHiuLWBkR99BLz5ptg/ehR45hnbP+usWUB0tNi/cQMYN852WQ8PQyBNTQW++8522bZtDfuSBNy6JXZhJTBoNIZ94y+kfjMKbyhf3rRs27am541f06qVaR2iokRQMi/r7AzUqGFap1WrxPfAWh38/EzL7tsn3t+8nH4zZmUu9WyNBjse/eJi8jfniy8s29WWqKjHl9HT/xnmRd26eS9rHmYVwkBK9BiybBoAcwuBhX0uK6sgNVcDqFNIrWA/a/932Pp3Py/nCvJa/TlJysaRI/vx9NOt4O7ulKdwl5dQ55DMw5/5Vrcu4OYmyp4+DZw6ZT0IZmaKXp/gYFH211+B77+3/b5LlwKNG4uyy5cDkyebnjdeuGXbNtE7CAA//ACMHGn75/nhh5xAKp04gXrr19su26WLIZDevw/Extou++CBYV+lEnW0Rj+AV8/TEwgJsf3lrFzZUDYwEHjlFdu/nbRrZygbHAwsXmz6F8T4M4wDXlCQCGLOztAA2LF7Nzp06QJnDw9R1t3dUNbXN+//YDk5iSCfV/Pn573sSy/lvWz16nkvS0WOgZRKFa1WhLXUVHG1Rb+lpgJJSRL27q2Ihw8lZGcXXkC09f9HcVOrxb//bm6Gzfi5+TlXVy1u3bqM2rWrwdVVXSQBz9Zmfgm0pNBoZGg099CmjWzRAVKq6O9esvUFbtnScOlt925x6dfWF/6DDwzvu2SJGB9mKwzu22cIQuPHAwsW2K7jyZNAWJjYX7tWXD60pUsXQyD9919gxQrbZe/fN+xnZQF37tgua/yX189PBE5XV8Pm4mLYDwzMKSrXrYtLzz2HKrVrQ60vZxzcHi2dDQBo3lxc8rQWHJ2dgZo1DWXbtAEuX7YeGtVmdyc3ayYumedFlSrAN9/krWy5csDo0Xkr6+wMNGki9jUapJ8/L0Jyqf7LQyUVAykVGp1O/B9nHBLNQ6M9+9bO5R4OnQC0LNKfUaWyLxTaOpef9zAf9vM4Go0Ov/xyHN27V4Gzc/6n4qBc6H/z0Yc7jca0h+nAAXHJ01oY1GpF757e/Pki8Nn6DencOUPK79s398uuSUmG8Weffy4uY9oyYYJh/8wZ0atoi/F4O/PLfGq1acgzviRdrZoIY+YhUL/5+xvKtmsnLkebl9FvDRsayvbtKy5rWyvn4mL6l6ZPH7HlRbNm+HfUKIR07w7148JX5cpiHGBeuLsDVavmrSyRg2EgdRD6y84FCYOPK2drbHhR8fAwbJ6egJubjIyM+6hUyQ/u7qoiC4UlseePIAKecS/T2bNAYqLhi5qeDikpCVUPHICUkCAuE+vNmwdcuGA9DHp7Az//bCjbvTvw11+GUGmsXDng4UPD88mTxbhBa1Qq4L33DF+o3buBjRtt/3wZGYZLpPpL4XrmX1rjsX1Nmog6689be9SLjARatLAdBkNCDGXfe0+EWf058x4+Y0OGmLZ3bp58Umx5ERho0rNJRKUXA2kJl5YmxuKbb/HxKhw/3gBbtqgeGzT1m/HQqqLm5mYIisah0TxE2rNv/NzNzfJmQHFzxt9l4+aMskSjMf0iqtWix0xv82YR4oy71/X7wcGmPXh9+4pLnuZf7rQ0ccfxsWOGsj17irGLRpwANAEgV61qGpC++w44eNB6/QPM5l7MyBB3QJtzcbHsNaxfH0hOtv0bjywbAunQoUCnTrZ/QzJ+78WLgUWLxDkXl9x/Sxo7Vmy2GIfXVq1MbyjJjf5ucCKiQsBAWowyM8WMCNYCpq3Ndq+jGkCtfNXDxaVww6G1c4+bOYJKAFm26EE0CXj+/oYbNwBxGdXabzppaUB4uOlUIDVrAnfvinPmvYhPPSV6GPVGjgRu37Zex8aNTQPp0aPi0rU1aWmmzytXFseMvpg6NzfEJyWhQqNGpuuJDBsGPP+89TBoHrxWrhSX6s270a196RcutF5Xa3r0yHtZH5+8lyUiKgUYSPMpO1uMrbcnXCYn5++zXFwMV6b0m5+fFnfuXETDhjXg46POc7h0d7d/LCKVAFlZ4guUlGT5GBJimKolLU1M/5KcDHVSEtpeuQL1jBmGsNm1q7hLGRBB0XwaFGM9epheqv7gA9u/IZmHweRkyy+8SiW+iK6upsfbtRM9pO7uhi+rfj801LTsokWiLYy/8MZfcGO//25RTa1GgwOPpmkxCaQjRlj/uazhGEAiokLHaAIx9j4x8fGB8u5dw77xTB72UKksw+XjNi8vyyty4oaVk+jevRpvWCmpzENkuXKGMJOcLG42sRYwk5PFmL9Jk0TZe/dM5/AzFxlpCKRqtZgKB2KhP4vRdY/mFARgmEw5O9vw24pxwKtl1gM/cqToVTUPjR4eplPQAMCff4o7cY3L2bq0vG5dbq1oqmvXvJclIqJSo8wFUlkWw7vs6blMSMj/6ix+fpYBsnx52+GyXDlezi7RsrLEbyj6m0ZSUsTlZX1YNA+OHTuK+f8AMUVLu3aG3kHzKQGMVzVJT899QmTjMZbGq3W4u4vnPj6GR/1qLYDofZw5E/D0RLanJ46ePYumTz0FJx8f8VrzYJucrJ+g8/Ft8+GHjy+jp5/uh4iIKA9KVSDduVNCVtbjA2Z+JxP39rav59Lfn5e/S4ysLODKFfhcvgxp924R+IzDY6tWhl7ES5eAN96w3juZmSnuHtbPzXjzZu6rY7i6GgKpi4t4b3Pu7iI4Gt/NXK6cmCpGHyyNQ6a3t+ncha6uYnyIt3fevnDvvgsAkDUa3PzlFzTp1s32vIElZIUOIiJybKUqTr30Ut6r6+aWe0+l+RYQYDm0jRSWliZWd7lzR2x375o+DhxoWJLvyBE4t26NDrbea/JkQyDVaIAtW2x/blKSYd/PT0yCbdwjafxofEdyQACwZ49luLQWIl1dxWTaeZXbWE8iIqJSrlQF0rAwGcHBeQuYHh5K15asSkwUk4XbCpkjRwKvvSbK/vuv6V3e5po2NQTS8uUhu7oi090droGBkMx7HsPDDa+rVEmsNWwrZBpfIi9fHjhyJG8/m5NT7vUlIiIiq0pVIP3rr2yLKQGpBLh3D/jjD0PINA6Yd+4Ab70FjBolyp4+DTz7rO336mDUxxkUJMJjhQoiGFaoYLrfvLmhbI0ayE5KwtZff300D2kuq6t4eeV9km4iIiIqcqUqkFIR0unEnV36IHf7tlg1xjhYGu+/956YXggALl409FRac/WqYT84WCz9ZytkGi8LWL06cONG3uovSVxCiYiIqJRiIC2rZFncqKNSGSb2vnYN+Ppr6wHz3j1g9mzg7bcNZV9/3fb7G09kXqmSWE/aVsg0nj6oalXT1XSIiIjI4TGQlnYXLwLLllmOxbxzR9x5/r//GUJmfLzo2bTl7l3DfkgI0KuXZbjUPxqvaR0SIuadJCIiIsoHBtLS5O5dET6fftpw88zDh8CCBbZfc/++YT80VIydtBUyjeeorFhRXLInIiIiKmIMpKXBv/8CH30kpgnKzBTzYm7aJM5VqQKMH289ZJYvbzrdQFCQuLuciIiIqARhIC2ptFrgp59EEN2503C8RQsxobpeYCAwb16xV4+IiIiosDCQllS9egE//yz21WrgxReBsWPFpXpJEpO7ExEREZUBXFW9pDhzBkhNNTz/z3/E2qSTJonlKNevB9q04dRGREREVOYwkCpJloGtW8WY0Hr1xJRMegMHiqmXYmLEzUhEREREZRQv2SshNRX46ivg44/FykWA6PnU7wNirXMiIiIiB8BAWpxkWVyCX7ZMTNcEiHXTBw8G3njDdAJ5IiIiIgfBQFqcJAk4eVKE0Zo1gTffBF57DfDxUbpmRERERIrhGNKikpEBrFoFPPEEcOWK4fi0aWI6p7NnRSBlGCUiIiIHxx7SwnbrFvDpp8DSpYalOD/5BJgzR+y3aKFc3YiIiIhKIAbSwnLwoJjE/ttvDXOEhoQAY8YAw4YpWzciIiKiEoyBtDCkpgKdOgHJyeJ527ZiEvsXXgCc2MREREREuWFayo+EBOCHH0TPpyQBnp7Af/8rLtePHQs0b650DYmIiIhKDQZSexw/LuYOXb0aSE8Xk9k//bQ4px8jSkRERER2YSB9HJ0O2LJFjA+NjTUcb9oU0GqVqxcRERFRGcFAmpsrV8TY0AsXxHOVSowLHTsWeOopritPREREVAgYSM0lJ4vVkwCxhrwkAb6+wPDhwOjRQNWqilaPiIiIqKxhIAXEkp6//y4uyx86JHpGXV1Fj+jGjUD16uLGJSIiIiIqdI4dSNPSgK+/FjcqnTxpOP7nn8Czz4r9hg2VqRsRERGRg3DMQHr7NvDhh8Dy5cCDB+KYpycweDDwxhtAnTrK1o+IiIjIgThmIE1IAObOFfvVq4sQOniwGCtKRERERMWq7AfSzEyxnOfly8CUKeJYgwbAhAlAmzbA888DarWiVSQiIiJyZGU3kMbHA0uXAp9+KvadncXKShUrivOcyJ6IiIioRCh7gfTIEXG3/Lp1QFaWOFapkpiyyd1d2boRERERkYWyFUi/+goYNMjw/MknxST2L74oekiJiIiIqMQp3YH0/n1xOT4sTDx//nmgXDmgRw8RRFu2VLZ+RERERPRYpTOQnjwp5g79+mugSRNg925x3N8fuH4d8PJStHpERERElHelKpBK27YBK1cC27cbDqamAomJomcUYBglIiIiKmVKVSB16t9f7KhUQM+e4rL8M8+I9eaJiIiIqFQqVYFU9vEBhg8Xd8xXr650dYiIiIioEJSqQJr9779A1apKV4OIiIiICpFK6QrYheNDiYiIiMqc0hVIiYiIiKjMYSAlIiIiIkUxkBIRERGRohhIiYiIiEhRDKREREREpCgGUiIiIiJSFAMpERERESmKgZSIiIiIFMVASkRERESKylcgXbJkCapVqwY3Nze0atUKBw4cyLX8woULUbduXbi7uyM0NBRvvfUWMjIy8lVhIiIiIipb7A6k69evR1RUFKZNm4YjR46gcePG6Nq1K+7cuWO1/Nq1azFp0iRMmzYNp06dwhdffIH169fj3XffLXDliYiIiKj0szuQLliwAMOHD8fgwYNRv359LF26FB4eHlixYoXV8nv27EHbtm3Rv39/VKtWDc8++yz69ev32F5VIiIiInIMTvYUzsrKwuHDhxEdHZ1zTKVSoXPnzti7d6/V17Rp0warV6/GgQMH0LJlS1y8eBG//PILBgwYYPNzMjMzkZmZmfM8KSkJAKDRaKDRaOypcpmlbwe2hwHbxBTbwxLbxBLbxBLbxBLbxBLbxFJB2kKSZVnOa+GbN2+icuXK2LNnD1q3bp1zfMKECfjzzz+xf/9+q6/7+OOPMX78eMiyjOzsbIwaNQqffvqpzc+ZPn063n//fYvja9euhYeHR16rS0RERETFJC0tDf3790diYiJ8fHzseq1dPaT5sXPnTsyaNQuffPIJWrVqhfPnz2Ps2LGYMWMGpkyZYvU10dHRiIqKynmelJSE0NBQdOjQAQEBAUVd5VJBo9Fg+/bt6NKlC5ydnZWuTonANjHF9rDENrHENrHENrHENrHENrGUkJCQ79faFUgDAwOhVqsRHx9vcjw+Ph7BwcFWXzNlyhQMGDAAw4YNAwCEh4cjNTUVI0aMwHvvvQeVynIYq6urK1xdXS2OOzs78w/dDNvEEtvEFNvDEtvEEtvEEtvEEtvEEtvEoCDtYNdNTS4uLmjevDliY2Nzjul0OsTGxppcwjeWlpZmETrVajUAwI7RAkRERERURtl9yT4qKgqDBg1CixYt0LJlSyxcuBCpqakYPHgwAGDgwIGoXLkyYmJiAAARERFYsGABmjZtmnPJfsqUKYiIiMgJpkRERETkuOwOpH379sXdu3cxdepU3L59G02aNMFvv/2GoKAgAMDVq1dNekQnT54MSZIwefJk3LhxA+XLl0dERARmzpxZeD8FEREREZVa+bqpacyYMRgzZozVczt37jT9ACcnTJs2DdOmTcvPRxERERFRGce17ImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREimIgJSIiIiJFMZASERERkaIYSImIiIhIUQykRERERKQoBlIiIiIiUhQDKREREREpioGUiIiIiBTFQEpEREREiipdgfTGDaVrQERERESFrFQFUqcmTYAvvlC6GkRERERUiJyUroA9JFkGRo4EunYFQkKUrg4REVGZIMsysrOzodVqrZ7XaDRwcnJCRkaGzTKOxhHbRK1Ww8nJCZIkFfp7l6pACgDQaoHz5xlIiYiICkFWVhZu3bqFtLQ0m2VkWUZwcDCuXbtWJGGkNHLUNvHw8EDFihXh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TJggHq9fB6pWxTpdPzCQEhERFZAjjavNi8LsNVarcw+/RSE7u+Ch1ng7f17MDiXL1j/P1VX0Ouu/Q3r6HuGUlKL/mfPKyalwQq8I/iFw7hSH1dv9AORvHAcDKREREVlV2nuNnZwKf4yvrUUlDh829BrrdOJKtr5XNjPT8rn59rjzBX0P84W0srPFlppaWC0TDiD/YzAYSImIiMgm9hpbl9vNbyqVGGfq5qZQ5ayQZfHnWNih99gxYMcO273GecVASkRERJRHJfHmt7zQ/zLh4lL4s0LY6jW2BwMpERERUR6V9mEMRUmS5Hz3lCq4EBkRERFR6WM8lZMkweHDqL7XuHHj/F+3Zw8pEREREeWbvtc4OVmL8uXz9x7sISUiIiKiAinoAgAMpERERESkKAZSIiIiIlIUAykRERERKYqBlIiIiIgUxUBKRERERIpiICUiIiIiRTGQEhEREZGiGEiJiIiISFEMpERERESkKAZSIiIiIlIUAykRERERKYqBlIiIiIgUxUBKRERERIpiICUiIiIiRTGQEhEREZGiGEiJiIiISFEMpERERESkKAZSIiIiIlIUAykRERERKYqBlIiIiIgUxUBKRERERIpiICUiIiIiRTGQEhEREZGiGEiJiIiISFEMpERERESkKAZSIiIiIlJUvgLpkiVLUK1aNbi5uaFVq1Y4cOBAruW/++471KtXD25ubggPD8cvv/ySr8oSERERUdljdyBdv349oqKiMG3aNBw5cgSNGzdG165dcefOHavl9+zZg379+mHo0KE4evQoevXqhV69euH48eMFrjwRERERlX52B9IFCxZg+PDhGDx4MOrXr4+lS5fCw8MDK1assFr+o48+wnPPPYd33nkHYWFhmDFjBpo1a4bFixcXuPJEREREVPo52VM4KysLhw8fRnR0dM4xlUqFzp07Y+/evVZfs3fvXkRFRZkc69q1KzZt2mTzczIzM5GZmZnzPDExEQBw//59e6pbpmk0GqSlpSEhIQHOzs5KV6dEYJuYYntYYptYYptYYptYYptYYptY0uc0WZbtfq1dgfTevXvQarUICgoyOR4UFITTp09bfc3t27etlr99+7bNz4mJicH7779vcbxOnTr2VJeIiIiIillCQgLKlStn12vsCqTFJTo62qRX9eHDh6hatSquXr1q9w9YViUlJSE0NBTXrl2Dj4+P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K6Jv376oUaNGnt+jxI4hdXFxQfPmzREbG5tzTKfTITY2lmPhKIcsyxgzZgw2btyIP/74A9WrV1e6SiWSTqdDZmam0tVQTKdOnXDs2DHExcXlbC1atEBkZCTi4uIcPowCQEpKCi5cuICKFSsqXRXFtG3b1mLauLNnz6Jq1aoK1ajkWLlyJSpUqIAePXooXRVFpaWlQaUyjU5qtRo6nU6hGpUsnp6eqFixIh48eICtW7eiZ8+eeX5tie0hBYCoqCgMGjQILVq0QMuWLbFw4UKkpqZi8ODBSldNMSkpKSY9GJcuXUJcXBz8/f1RpUoVBWumjNGjR2Pt2rX48ccf4e3tjdu3bwMAypUrB3d3d4Vrp4zo6Gh069YNVapUQXJyMtauXYudO3di69atSldNMd7e3hbjij09PREQEOCw443Hjx+PiIgIVK1aFTdv3sS0adOgVqvRr18/paummLfeegtt2rTBrFmz8PLLL+PAgQNYtmwZli1bpnTVFKXT6bBy5UoMGjQITk4lOjYUuYiICMycORNVqlRBgwYNcPToUSxYsABDhgxRumqK2rp1K2RZRt26dXH+/Hm88847qFevnn15rXBv/i98ixYtkqtUqSK7uLjILVu2lPft26d0lRS1Y8cOGYDFNmjQIKWrpghrbQFAXrlypdJVU8yQIUPkqlWryi4uLnL58uXlTp06ydu2bVO6WiWOo0/71LdvX7lixYqyi4uLXLlyZblv377y+fPnla6W4n766Se5YcOGsqurq1yvXj152bJlSldJcVu3bpUByGfOnFG6KopLSkqSx44dK1epUkV2c3OTa9SoIb/33ntyZmam0lVT1Pr16+UaNWrILi4ucnBwsDx69Gj54cOHdr2HJMsOvrwAERERESmqxI4hJSIiIiLHwEBKRERERIpiICUiIiIiRTGQEhEREZGiGEiJiIiISFEMpERERESkKAZSIiIiIlIUAykRERERKYqBlIiIiIgUxUBKRERERIpiICUiIiIiRTGQEhEREZGi/h9QhrGrOYjjqgAAAABJRU5ErkJggg==","text/plain":["<Figure size 800x500 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":"# analyze training performance\nimport matplotlib.pyplot as plt\nimport pandas as pd \npd.DataFrame(history.history).plot(figsize=(8, 5), xlim=[0, 9], ylim=[0, 1], grid=True ,style=[\"r--\", \"r--.\", \"b-\", \"b-*\"])\nplt.show()"},{"cell_type":"code","execution_count":10,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 7ms/step - accuracy: 0.9667 - loss: 0.1074\n","Test accuracy: 0.97\n"]}],"source":"loss , acc = model.evaluate(X_test, y_test)\nprint(f\"Test accuracy: {acc:.2f}\")"},{"cell_type":"code","execution_count":14,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 100ms/step\n","[[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n"," [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n"," [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]]\n"]}],"source":"X_new = X_test[:3]\ny_proba = model.predict(X_new)\nprint (y_proba.round()) "},{"cell_type":"code","execution_count":12,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[7 2 1]\n"]}],"source":"import numpy as np\ny_pred = y_proba.argmax(axis=-1)\nprint(y_pred)"},{"cell_type":"code","execution_count":null,"metadata":{"trusted":true},"outputs":[],"source":""}],"metadata":{"kaggle":{"accelerator":"none","dataSources":[{"databundleVersionId":861823,"sourceId":3004,"sourceType":"competition"}],"dockerImageVersionId":31153,"isGpuEnabled":false,"isInternetEnabled":true,"language":"python","sourceType":"notebook"},"kernelspec":{"display_name":"workshop_env","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.10.15"}},"nbformat":4,"nbformat_minor":4}