From 8491fa6aebbadd96400e4edb5039b28cf64d2dec Mon Sep 17 00:00:00 2001 From: Sofia Samaniego Date: Tue, 30 Jun 2026 20:49:35 -0600 Subject: [PATCH] init: primer commit del modulo 2 - Logistic Regressor From Scratch --- README.md | 365 ++++++++++++++ README_files/README_13_0.png | Bin 0 -> 27796 bytes README_files/README_23_0.png | Bin 0 -> 25240 bytes README_files/README_9_0.png | Bin 0 -> 20279 bytes logistic-regressor-scratch/iris_basic.csv | 151 ++++++ logistic-regressor-scratch/main.ipynb | 575 ++++++++++++++++++++++ 6 files changed, 1091 insertions(+) create mode 100644 README.md create mode 100644 README_files/README_13_0.png create mode 100644 README_files/README_23_0.png create mode 100644 README_files/README_9_0.png create mode 100644 logistic-regressor-scratch/iris_basic.csv create mode 100644 logistic-regressor-scratch/main.ipynb diff --git a/README.md b/README.md new file mode 100644 index 0000000..fbbe782 --- /dev/null +++ b/README.md @@ -0,0 +1,365 @@ +# Development of a Modular Python Library from Scratch for Automated ROI Segmentation in Thermal Images + +# Module 2: Logistic Regressor From Scratch + +Author: Sofia Samaniego Lopez + +Institution: Universidad Autonoma de Baja California (UABC) + +Advisor: Dr. Gerardo Marx Chavez Campos + +This notebook presents **Module 2** of the library's development: the implementation of a **Logistic Regression Classifier from scratch**. + +To ensure a deep understanding of the underlying mechanics, this module avoids high-level machine learning "black-box" libraries. Instead, it builds the optimization algorithm using fundamental mathematical operations via **NumPy**. It covers the definition of the Sigmoid activation function, the formulation of the Log-Loss (Cross-Entropy) cost function, and the iterative optimization of weights using Gradient Descent. + +The classic Iris dataset is utilized to evaluate the model's capacity to estimate probabilities and establish a linear decision boundary for binary classification based on morphological features. + +## 1. Environment Setup & Data Loading +Importing core libraries for data manipulation (`pandas`), mathematical operations (`numpy`), and visualization (`matplotlib`). The Iris dataset is loaded to extract the target variables. + + +```python +!pip3 install pandas +!pip3 install numpy +!pip3 install matplotlib + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +``` + + Requirement already satisfied: pandas in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (3.0.3) + Requirement already satisfied: numpy>=2.3.3 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from pandas) (2.5.0) + Requirement already satisfied: python-dateutil>=2.8.2 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from pandas) (2.9.0.post0) + Requirement already satisfied: tzdata in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from pandas) (2026.2) + Requirement already satisfied: six>=1.5 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0) + Requirement already satisfied: numpy in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (2.5.0) + Requirement already satisfied: matplotlib in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (3.11.0) + Requirement already satisfied: contourpy>=1.0.1 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (1.3.3) + Requirement already satisfied: cycler>=0.10 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (0.12.1) + Requirement already satisfied: fonttools>=4.22.0 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (4.63.0) + Requirement already satisfied: kiwisolver>=1.3.1 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (1.5.0) + Requirement already satisfied: numpy>=1.25 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (2.5.0) + Requirement already satisfied: packaging>=20.0 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (26.2) + Requirement already satisfied: pillow>=9 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (12.2.0) + Requirement already satisfied: pyparsing>=3 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (3.3.2) + Requirement already satisfied: python-dateutil>=2.7 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from matplotlib) (2.9.0.post0) + Requirement already satisfied: six>=1.5 in c:\Users\sofia\Logistic-Regressor-From_Scratch\.venv\Lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0) + + + +```python +df = pd.read_csv('iris_basic.csv') +df +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
slswplpwtargettNames
05.13.51.40.20setosa
14.93.01.40.20setosa
24.73.21.30.20setosa
34.63.11.50.20setosa
45.03.61.40.20setosa
.....................
1456.73.05.22.32virginica
1466.32.55.01.92virginica
1476.53.05.22.02virginica
1486.23.45.42.32virginica
1495.93.05.11.82virginica
+

150 rows × 6 columns

+
+ + + +## 2. Binary Classification Setup & Data Visualization +Extracting the 'Petal Width' ($pw$) as the independent feature ($x$) and the target class ($y$). + + + + +```python +x = df['pw'].to_numpy().reshape(-1, 1) +y = df['target'].to_numpy().reshape(-1, 1) + +# Convert target to binary: 1 if setosa (class 0), 0 otherwise +y = (y==0).astype(float) + +``` + + +```python +# Adding visual noise (Jitter) to observe point density +yJitter = y+np.random.uniform(-0.2,0.2,size=y.shape) +plt.plot(x,yJitter,'og', alpha=0.1) +plt.show() +``` + + + +![png](README_files/README_9_0.png) + + + +**Understanding the Jitter Plot:** +In binary classification, true labels are strictly `0` or `1`. If plotted directly, data points overlap perfectly, masking the true density of the samples. By adding uniform random noise (*jitter*) to the y-axis, the points spread out vertically, allowing us to visually inspect the data distribution and density for both classes. + +## 3. The Sigmoid Activation Function +The mathematical core of logistic regression. Linear regression outputs continuous values from $-\infty$ to $+\infty$. The Sigmoid function smoothly maps any real-valued number into a probability range bounded between $0$ and $1$. +Formula: +$$\sigma(z) = \frac{1}{1+e^{-z}}$$ +*(Note: `np.clip` is used to bound extreme values and prevent overflow errors during exponential calculation).* + + +```python +def sigmoid(z): + sig= 1/(1+np.exp(-z)) + return sig +``` + + +```python +xNew = np.linspace(-5,5,100) +model = sigmoid(xNew) +plt.plot(xNew,model) +plt.plot(x,yJitter,'og', alpha=0.1) +plt.show() +``` + + + +![png](README_files/README_13_0.png) + + + +This plot illustrates the model's core activation function alongside the empirical distribution of the Iris dataset. + +* **Sigmoid Activation Curve:** The green line represents the non-linear transformation $\sigma(z) = \frac{1}{1+e^{-z}}$. This function maps input features into a probability space between $0$ and $1$, providing the mathematical foundation for the model's confidence levels. +* **Data Distribution (Jittered):** The green markers represent the actual feature values. As binary classes are constrained to $\{0, 1\}$, random vertical noise (jitter) is applied to the data points to prevent overlap, revealing the density and separation between the two classes. + +By overlaying the Sigmoid curve on the jittered data, we can visually inspect how well the model's probability estimates align with the observed class clusters. + + +```python +def sigmoid(z): + # Clip limits z to avoid exp overflow + z = np.clip(z, -500, 500) + sig= 1/(1+np.exp(-z)) + return sig +``` + +## 4. Cost Function: Log-Loss (Cross-Entropy) +This function calculates the error between the model's predicted probabilities ($p$) and the true binary labels ($y$). +Probabilities are clipped using a tiny epsilon ($\epsilon$) to prevent mathematical undefined errors (like $\log(0)$), which would break the algorithm. + + +```python +def logLoss(y, p, eps=1e-12): + p = np.clip(p, eps, 1-eps) + loss = -np.mean(y*np.log(p) + (1-y)*np.log(1-p)) + return loss +``` + +## 5. Model Training via Gradient Descent +Instead of solving an equation directly, the model learns iteratively. +1. **Initialization:** Random weights ($\theta_0$ for bias, $\theta_1$ for the feature) are generated. +2. **Forward Pass:** Predictions are computed using the dot product and the Sigmoid function. +3. **Gradient Calculation:** The error gradient is calculated across all samples. +4. **Update:** Weights are adjusted in the opposite direction of the gradient, scaled by the learning rate (`lr`). + + +```python +lr = 0.2 +epochs = 1000 + +# Add a column of ones to X for the bias term (intercept) +X = np.column_stack([np.ones_like(x), x]) +m = X.shape[0] + +# Random weight initialization +theta = np.random.rand(2,1) +theta +``` + + + + + array([[0.83841703], + [0.1412671 ]]) + + + + +```python +# Training loop +for i in range(epochs): + z = X @ theta + h = sigmoid(z) # Predicted probability + + # Gradient computation and weight update + grad = X.T @ (h-y) / m + theta -= lr * grad + +theta0, theta1 = theta[0,0], theta[1,0] +print(f"Optimized Bias (Theta 0): {theta0}") +print(f"Optimized Weight (Theta 1): {theta1}") +``` + + Optimized Bias (Theta 0): 4.309159539504179 + Optimized Weight (Theta 1): -6.028218019470694 + + +## 6. Inference and Decision Boundary Visualization +Functions to compute continuous probabilities and absolute binary classes based on a `0.5` threshold. + + + + +```python +def predictProba(x, theta0, theta1): + x = np.array(x, float).reshape(-1) + model = sigmoid(theta0 + theta1 * x) + return model + +def predict(x, theta0, theta1, thresh=0.5): + model = (predictProba >= thresh).astype(int) + # Returns 1 if probability >= threshold, else 0 + + +``` + + +```python +# Plotting the empirical data alongside the optimized Sigmoid curve +xNew = np.linspace(0,2.5,100) +p = predictProba(xNew, theta0, theta1) +plt.plot(xNew, p, ':g') +plt.plot(x,yJitter,'og', alpha=0.1) +plt.show() +``` + + + +![png](README_files/README_23_0.png) + + + +**Understanding the Final Plot:** +The green dotted line represents the trained Sigmoid curve. It illustrates the model's probability estimation across different Petal Widths. Where the curve crosses the $0.5$ probability mark on the y-axis, the model sets its hard mathematical boundary, switching its classification verdict from Class 0 to Class 1. diff --git a/README_files/README_13_0.png b/README_files/README_13_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7655cc84428395538d72ce991bbe3eef335f0c GIT binary patch literal 27796 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 X4s$XMlm-7J;>r_c&BqmrRw4fbjq*;? literal 0 HcmV?d00001 diff --git a/README_files/README_9_0.png b/README_files/README_9_0.png new file mode 100644 index 0000000000000000000000000000000000000000..69951a8ac8b835298d898ace7de6a5c77ac94a3e GIT binary patch literal 20279 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 literal 0 HcmV?d00001 diff --git a/logistic-regressor-scratch/iris_basic.csv b/logistic-regressor-scratch/iris_basic.csv new file mode 100644 index 0000000..3e0132c --- /dev/null +++ b/logistic-regressor-scratch/iris_basic.csv @@ -0,0 +1,151 @@ +sl,sw,pl,pw,target,tNames +5.1,3.5,1.4,0.2,0,setosa +4.9,3.0,1.4,0.2,0,setosa +4.7,3.2,1.3,0.2,0,setosa +4.6,3.1,1.5,0.2,0,setosa +5.0,3.6,1.4,0.2,0,setosa +5.4,3.9,1.7,0.4,0,setosa +4.6,3.4,1.4,0.3,0,setosa +5.0,3.4,1.5,0.2,0,setosa +4.4,2.9,1.4,0.2,0,setosa +4.9,3.1,1.5,0.1,0,setosa +5.4,3.7,1.5,0.2,0,setosa +4.8,3.4,1.6,0.2,0,setosa +4.8,3.0,1.4,0.1,0,setosa +4.3,3.0,1.1,0.1,0,setosa +5.8,4.0,1.2,0.2,0,setosa +5.7,4.4,1.5,0.4,0,setosa +5.4,3.9,1.3,0.4,0,setosa +5.1,3.5,1.4,0.3,0,setosa +5.7,3.8,1.7,0.3,0,setosa +5.1,3.8,1.5,0.3,0,setosa +5.4,3.4,1.7,0.2,0,setosa +5.1,3.7,1.5,0.4,0,setosa +4.6,3.6,1.0,0.2,0,setosa +5.1,3.3,1.7,0.5,0,setosa +4.8,3.4,1.9,0.2,0,setosa +5.0,3.0,1.6,0.2,0,setosa +5.0,3.4,1.6,0.4,0,setosa +5.2,3.5,1.5,0.2,0,setosa +5.2,3.4,1.4,0.2,0,setosa +4.7,3.2,1.6,0.2,0,setosa +4.8,3.1,1.6,0.2,0,setosa +5.4,3.4,1.5,0.4,0,setosa +5.2,4.1,1.5,0.1,0,setosa +5.5,4.2,1.4,0.2,0,setosa +4.9,3.1,1.5,0.2,0,setosa +5.0,3.2,1.2,0.2,0,setosa +5.5,3.5,1.3,0.2,0,setosa +4.9,3.6,1.4,0.1,0,setosa +4.4,3.0,1.3,0.2,0,setosa +5.1,3.4,1.5,0.2,0,setosa +5.0,3.5,1.3,0.3,0,setosa +4.5,2.3,1.3,0.3,0,setosa +4.4,3.2,1.3,0.2,0,setosa +5.0,3.5,1.6,0.6,0,setosa +5.1,3.8,1.9,0.4,0,setosa +4.8,3.0,1.4,0.3,0,setosa +5.1,3.8,1.6,0.2,0,setosa +4.6,3.2,1.4,0.2,0,setosa +5.3,3.7,1.5,0.2,0,setosa +5.0,3.3,1.4,0.2,0,setosa +7.0,3.2,4.7,1.4,1,versicolor +6.4,3.2,4.5,1.5,1,versicolor +6.9,3.1,4.9,1.5,1,versicolor +5.5,2.3,4.0,1.3,1,versicolor +6.5,2.8,4.6,1.5,1,versicolor +5.7,2.8,4.5,1.3,1,versicolor +6.3,3.3,4.7,1.6,1,versicolor +4.9,2.4,3.3,1.0,1,versicolor +6.6,2.9,4.6,1.3,1,versicolor +5.2,2.7,3.9,1.4,1,versicolor +5.0,2.0,3.5,1.0,1,versicolor +5.9,3.0,4.2,1.5,1,versicolor +6.0,2.2,4.0,1.0,1,versicolor +6.1,2.9,4.7,1.4,1,versicolor +5.6,2.9,3.6,1.3,1,versicolor +6.7,3.1,4.4,1.4,1,versicolor +5.6,3.0,4.5,1.5,1,versicolor +5.8,2.7,4.1,1.0,1,versicolor +6.2,2.2,4.5,1.5,1,versicolor +5.6,2.5,3.9,1.1,1,versicolor +5.9,3.2,4.8,1.8,1,versicolor +6.1,2.8,4.0,1.3,1,versicolor +6.3,2.5,4.9,1.5,1,versicolor +6.1,2.8,4.7,1.2,1,versicolor +6.4,2.9,4.3,1.3,1,versicolor +6.6,3.0,4.4,1.4,1,versicolor +6.8,2.8,4.8,1.4,1,versicolor +6.7,3.0,5.0,1.7,1,versicolor +6.0,2.9,4.5,1.5,1,versicolor +5.7,2.6,3.5,1.0,1,versicolor +5.5,2.4,3.8,1.1,1,versicolor +5.5,2.4,3.7,1.0,1,versicolor +5.8,2.7,3.9,1.2,1,versicolor +6.0,2.7,5.1,1.6,1,versicolor +5.4,3.0,4.5,1.5,1,versicolor +6.0,3.4,4.5,1.6,1,versicolor +6.7,3.1,4.7,1.5,1,versicolor +6.3,2.3,4.4,1.3,1,versicolor +5.6,3.0,4.1,1.3,1,versicolor +5.5,2.5,4.0,1.3,1,versicolor +5.5,2.6,4.4,1.2,1,versicolor +6.1,3.0,4.6,1.4,1,versicolor +5.8,2.6,4.0,1.2,1,versicolor +5.0,2.3,3.3,1.0,1,versicolor +5.6,2.7,4.2,1.3,1,versicolor +5.7,3.0,4.2,1.2,1,versicolor +5.7,2.9,4.2,1.3,1,versicolor +6.2,2.9,4.3,1.3,1,versicolor +5.1,2.5,3.0,1.1,1,versicolor +5.7,2.8,4.1,1.3,1,versicolor +6.3,3.3,6.0,2.5,2,virginica +5.8,2.7,5.1,1.9,2,virginica +7.1,3.0,5.9,2.1,2,virginica +6.3,2.9,5.6,1.8,2,virginica +6.5,3.0,5.8,2.2,2,virginica +7.6,3.0,6.6,2.1,2,virginica +4.9,2.5,4.5,1.7,2,virginica +7.3,2.9,6.3,1.8,2,virginica +6.7,2.5,5.8,1.8,2,virginica +7.2,3.6,6.1,2.5,2,virginica +6.5,3.2,5.1,2.0,2,virginica +6.4,2.7,5.3,1.9,2,virginica +6.8,3.0,5.5,2.1,2,virginica +5.7,2.5,5.0,2.0,2,virginica +5.8,2.8,5.1,2.4,2,virginica +6.4,3.2,5.3,2.3,2,virginica +6.5,3.0,5.5,1.8,2,virginica +7.7,3.8,6.7,2.2,2,virginica +7.7,2.6,6.9,2.3,2,virginica +6.0,2.2,5.0,1.5,2,virginica +6.9,3.2,5.7,2.3,2,virginica +5.6,2.8,4.9,2.0,2,virginica +7.7,2.8,6.7,2.0,2,virginica +6.3,2.7,4.9,1.8,2,virginica +6.7,3.3,5.7,2.1,2,virginica +7.2,3.2,6.0,1.8,2,virginica +6.2,2.8,4.8,1.8,2,virginica +6.1,3.0,4.9,1.8,2,virginica +6.4,2.8,5.6,2.1,2,virginica +7.2,3.0,5.8,1.6,2,virginica +7.4,2.8,6.1,1.9,2,virginica +7.9,3.8,6.4,2.0,2,virginica +6.4,2.8,5.6,2.2,2,virginica +6.3,2.8,5.1,1.5,2,virginica +6.1,2.6,5.6,1.4,2,virginica +7.7,3.0,6.1,2.3,2,virginica +6.3,3.4,5.6,2.4,2,virginica +6.4,3.1,5.5,1.8,2,virginica +6.0,3.0,4.8,1.8,2,virginica +6.9,3.1,5.4,2.1,2,virginica +6.7,3.1,5.6,2.4,2,virginica +6.9,3.1,5.1,2.3,2,virginica +5.8,2.7,5.1,1.9,2,virginica +6.8,3.2,5.9,2.3,2,virginica +6.7,3.3,5.7,2.5,2,virginica +6.7,3.0,5.2,2.3,2,virginica +6.3,2.5,5.0,1.9,2,virginica +6.5,3.0,5.2,2.0,2,virginica +6.2,3.4,5.4,2.3,2,virginica +5.9,3.0,5.1,1.8,2,virginica diff --git a/logistic-regressor-scratch/main.ipynb b/logistic-regressor-scratch/main.ipynb new file mode 100644 index 0000000..d3c2dab --- /dev/null +++ b/logistic-regressor-scratch/main.ipynb @@ -0,0 +1,575 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a67223e8", + "metadata": {}, + "source": [ + "# Development of a Modular Python Library from Scratch for Automated ROI Segmentation in Thermal Images" + ] + }, + { + "cell_type": "markdown", + "id": "d207e40a", + "metadata": {}, + "source": [ + "# Module 2: Logistic Regressor From Scratch" + ] + }, + { + "cell_type": "markdown", + "id": "771dee37", + "metadata": {}, + "source": [ + "Author: Sofia Samaniego Lopez\n", + "\n", + "Institution: Universidad Autonoma de Baja California (UABC)\n", + "\n", + "Advisor: Dr. Gerardo Marx Chavez Campos" + ] + }, + { + "cell_type": "markdown", + "id": "a09130b5", + "metadata": {}, + "source": [ + "This notebook presents **Module 2** of the library's development: the implementation of a **Logistic Regression Classifier from scratch**.\n", + "\n", + "To ensure a deep understanding of the underlying mechanics, this module avoids high-level machine learning \"black-box\" libraries. Instead, it builds the optimization algorithm using fundamental mathematical operations via **NumPy**. It covers the definition of the Sigmoid activation function, the formulation of the Log-Loss (Cross-Entropy) cost function, and the iterative optimization of weights using Gradient Descent. \n", + "\n", + "The classic Iris dataset is utilized to evaluate the model's capacity to estimate probabilities and establish a linear decision boundary for binary classification based on morphological features." + ] + }, + { + "cell_type": "markdown", + "id": "5a856f2a", + "metadata": {}, + "source": [ + "## 1. Environment Setup & Data Loading\n", + "Importing core libraries for data manipulation (`pandas`), mathematical operations (`numpy`), and visualization (`matplotlib`). The Iris dataset is loaded to extract the target variables." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d8b1c513", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (3.0.3)\n", + "Requirement already satisfied: numpy>=2.3.3 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from pandas) (2.5.0)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: tzdata in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from pandas) (2026.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n", + "Requirement already satisfied: numpy in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (2.5.0)\n", + "Requirement already satisfied: matplotlib in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (3.11.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (1.3.3)\n", + "Requirement already satisfied: cycler>=0.10 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (4.63.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (1.5.0)\n", + "Requirement already satisfied: numpy>=1.25 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (2.5.0)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (26.2)\n", + "Requirement already satisfied: pillow>=9 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (12.2.0)\n", + "Requirement already satisfied: pyparsing>=3 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (3.3.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: six>=1.5 in c:\\Users\\sofia\\Logistic-Regressor-From_Scratch\\.venv\\Lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)\n" + ] + } + ], + "source": [ + "!pip3 install pandas\n", + "!pip3 install numpy\n", + "!pip3 install matplotlib\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "36ebd91e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
slswplpwtargettNames
05.13.51.40.20setosa
14.93.01.40.20setosa
24.73.21.30.20setosa
34.63.11.50.20setosa
45.03.61.40.20setosa
.....................
1456.73.05.22.32virginica
1466.32.55.01.92virginica
1476.53.05.22.02virginica
1486.23.45.42.32virginica
1495.93.05.11.82virginica
\n", + "

150 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " sl sw pl pw target tNames\n", + "0 5.1 3.5 1.4 0.2 0 setosa\n", + "1 4.9 3.0 1.4 0.2 0 setosa\n", + "2 4.7 3.2 1.3 0.2 0 setosa\n", + "3 4.6 3.1 1.5 0.2 0 setosa\n", + "4 5.0 3.6 1.4 0.2 0 setosa\n", + ".. ... ... ... ... ... ...\n", + "145 6.7 3.0 5.2 2.3 2 virginica\n", + "146 6.3 2.5 5.0 1.9 2 virginica\n", + "147 6.5 3.0 5.2 2.0 2 virginica\n", + "148 6.2 3.4 5.4 2.3 2 virginica\n", + "149 5.9 3.0 5.1 1.8 2 virginica\n", + "\n", + "[150 rows x 6 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('iris_basic.csv')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "id": "4970b1b5", + "metadata": {}, + "source": [ + "## 2. Binary Classification Setup & Data Visualization\n", + "Extracting the 'Petal Width' ($pw$) as the independent feature ($x$) and the target class ($y$). \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "710dded0", + "metadata": {}, + "outputs": [], + "source": [ + "x = df['pw'].to_numpy().reshape(-1, 1)\n", + "y = df['target'].to_numpy().reshape(-1, 1)\n", + "\n", + "# Convert target to binary: 1 if setosa (class 0), 0 otherwise\n", + "y = (y==0).astype(float)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4500fbe1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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QZ8qAAAo9p6XTZs22ZFHHml/+MMf7MADD7Rf//rXdswxx1hXV9eUj+3t7bV3vvOd9tvf/tbuv//+IE8TAABESKDByxVXXGFz5syxO+64wy666CK75557LB6P29VXXz3lYz/xiU/Y6aefbitWrAjyFAEAQMQEGrwoaDnnnHOsvHzX6NSsWbPsrLPOsttuu22Pj/vZz35mjz/+uH3lK18J8vQAAEAEBZbzMjAw4IaNlixZMm6/tm+66aZJH/fiiy/apz/9abvvvvusqqoqo981ODjofjzq3QEAAIUpsJ6X/v7+ZG9Lqrq6uuSxiYaGhlyey6WXXmqHHHJIxr9r9erVLgnY+2lpaZnh2QMAgKILXmpra620tNQ6OzvH7d+xY8eks41+85vf2NNPP21//vOf7QMf+ID7efLJJ+2xxx5z/25vb0/7uFWrVrkkYO+ntbU1kNcEAAAKeNiooqLCli9fbn/961/H7f/LX/4yaa/K4Ycfbtdcc824fWvXrnXPdcopp1gsFkv7OA0vZTrEBAAAoi3QOi/vete77Hvf+57rGVmwYIG98MILduedd9q3v/3t5H1uueUWNx1a99t7771dD0uqX/7yly5ombgfAAAUp0BnG33mM5+xgw8+2NV6eetb32rHH3+8vfnNbx4XiKhnRbOLAAAA8t7zUl1d7Wq7rFmzxl555RX7t3/7NzvqqKPG3efss8+2Aw44YNLnUH2YsrKyIE8TAABESEkikUhYgdFUaSUFK3m3vr4+36cDAAB8bL9ZmBEAAEQKwQsAAIgUghcAABApBC8AACBSCF4AAECkELwAAIBIIXgBAACRQvACAAAiheAFAABECsELAACIFIIXAAAQKQQvAAAgUgheAABApBC8AACASCF4AQAAkULwAgAAIoXgBQAARArBCwAAiBSCFwAAECkELwAAIFIIXgAAQKQQvAAAgEgheAEAAJFC8AIAACKF4AUAAEQKwQsAAIgUghcAABApBC8AACBSCF4AAECkELwAAIBIIXgBAACRQvACAAAiheAFAABECsELAACIFIIXAAAQKQQvAAAgUnISvOzYscOefvppi8fjGT9m48aNtn79ehsdHQ303AAAQLQEGrwkEgn71Kc+ZYsWLbKzzz7b5s+fb1/60pf2+Jgf/ehHtt9++9lxxx1np5xyiu211152ww03BHmaAAAgQsqDfPLv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Xuqut/dz//33J+9zzz33uPs8/fTTbntoaChx7LHHJg477LDEd7/73cQHPvCBRHV1deKRRx7humfoox/9aKK0tDTx5S9/edx1f+ihh8ZNY9d1b21tddvve9/7Eu9617vce12fM4ceeqj7zHn55ZcTQYl0wq584xvfsOOOO84VIVLircbYTj311ORxdReqwI4SijJ9DKZ23XXXuWmJ6lLUrCNNvU3tudLYs667192oMWtNYVSVXfUEqICUZh1p5hcypzF/Jdp6U0j1bV7J0O94xzvcthLPdd1Tp5jqm+ePfvQje/jhh91xfaNS8igyp88I9SZ6nyO67o2Nja6CqCgpWtddvY/y7//+76634I477nD5YCrepYRTPQaZUdVzXVN9XqRONVcu0SmnnOL+rUJquo93XVW8Tp9J+mxR6Qv9PVSegV7GzCkpWp8nqlCsH4/aTFXnlpaWFnfdvfIBP/7xj5M9ZOpl/NjHPmbvf//7gytQpxIdimACe3YAAACfRTrnBQAAFB+CFwAAECkELwAAIFIIXgAAQKQQvAAAgEgheAEAAJFC8AIAACKF4AUAAEQKwQsAAIgUghcAABApBC8AACBSCF4AAIBFyf8HBat7sEkUIaQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Adding visual noise (Jitter) to observe point density\n", + "yJitter = y+np.random.uniform(-0.2,0.2,size=y.shape)\n", + "plt.plot(x,yJitter,'og', alpha=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cd9ac6e", + "metadata": {}, + "source": [ + "**Understanding the Jitter Plot:**\n", + "In binary classification, true labels are strictly `0` or `1`. If plotted directly, data points overlap perfectly, masking the true density of the samples. By adding uniform random noise (*jitter*) to the y-axis, the points spread out vertically, allowing us to visually inspect the data distribution and density for both classes." + ] + }, + { + "cell_type": "markdown", + "id": "309e6cd4", + "metadata": {}, + "source": [ + "## 3. The Sigmoid Activation Function\n", + "The mathematical core of logistic regression. Linear regression outputs continuous values from $-\\infty$ to $+\\infty$. The Sigmoid function smoothly maps any real-valued number into a probability range bounded between $0$ and $1$. \n", + "Formula:\n", + "$$\\sigma(z) = \\frac{1}{1+e^{-z}}$$\n", + "*(Note: `np.clip` is used to bound extreme values and prevent overflow errors during exponential calculation).*" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5851ebeb", + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " sig= 1/(1+np.exp(-z))\n", + " return sig" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "280b4e7b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbABJREFUeJztnQd4pAW1/k8yfZJMerLJJpstbKFsZZcuIFKkIyBNBAHbVWyAF1GuF/TKehWFix1R/oAi0lSaCNJhEVi2Ura3ZDe9TSbTy/95T/YbJ7Opu5lMZvL+7v2ema/Ol0828+ac95yTE4vFYkIIIYQQkiHkpvsGCCGEEEJGA8ULIYQQQjIKihdCCCGEZBQUL4QQQgjJKCheCCGEEJJRULwQQgghJKOgeCGEEEJIRkHxQgghhJCMwixZSDQalT179khBQYHk5OSk+3YIIYQQMgLQN7enp0eqq6slNzd3cokXCJfa2tp03wYhhBBC9oP6+nqpqamZXOIFERfjh3e5XOm+HUIIIYSMALfbrcEH43t8UokXI1UE4ULxQgghhGQWw1k+aNglhBBCSEZB8UIIIYSQjILihRBCCCEZBcULIYQQQjIKihdCCCGEZBQUL4QQQgjJKCheCCGEEJJRULwQQgghJKMYlyZ1W7ZskTVr1sgRRxwh06ZNG/b43t5eWb16tYRCIZk/f76UlZWNx20SQgghZLJHXlatWiWnnXaafPzjH5dPfvKT8uqrrw57zve+9z2ZM2eOfOtb35JbbrlF6urq5Mc//nEqb5MQksEEwgHxhXz6OtS2kZxHCMkMUhp5aW9vl2984xsqYIaaDplIRUWFbNiwIT7X4K9//at84hOfkBNPPFGWLVuWytslhGQQ/rBfOrwd0hPskUg0IqZck1hMFpGYSCgaim8rsBZIibNE7Gb7oOclH0MImcTi5ZRTThn1OV/84hf7rZ933nlitVo1jUTxQggxBMhu9259zbPmiSXXomJkU9smicViMrNkphTaC1XEdPo7xRf2yVTXVD03+bzkYyhgCJn4TPjBjK+//roEg0E59NBDBz0mEAjokjiVkhCSvSByAgFS7CiOb/MGvWIz2/R9b7BXCmwFYjVZxeqwSqevU88ByeclH1Ptqk7DT0QIyZpqo87OTrn66qvlzDPPlGOPPXbQ45YvXy6FhYXxBeO0CSHZCTwqiLIgcpK4zRPyiNPi1AXvE70sOLbd165L4nmJYDuuSw8MIROfCSteED05/fTTpaioSB588MEhj73pppuku7s7vtTX14/bfRJCxpdoLKpeFaR8ErdFo1Ex55p10fVY9N/7o1HpCfRoRCbxvESwHddNPI8QMjGZkGmjnp4erVAKh8Pyz3/+U1wu15DH22w2XQgh2U9uTq6abOFVQcrH2IaigHA0/O/1nFxNEXX5utTT4gl6JCcnR5fyvPJ9vC24Hq6L8wghE5u0/yv94IMP5IknnoivezweFS7wuTz//PMaeSGEEAP4WlAdhChK4rZ8S754Q15dJCrqYdnStkW6A90aUakpqJFKZ6U0eZqkqadJhU0i6pOxFsR9M4SQSRp5aWlp6dfb5Z133hG73S4zZsyQww8/XLc9/PDDcuedd0pXV5eun3322bJu3Tq544475IUXXoife8ghh+hCCCEoa0Z1EASKUTXktDplW+c2aXI3ic1ik55Qj/ZxKbeXS11JnRQ7+0y6kVhEWr2tGmWpcdVoxAXCBZEYXJcQMsnFS3Nzszz00EP6/oILLpDdu3fr+sknnxwXLxAk5557bvycqqoq7Qvz7LPP9rvWRRddRPFCCFEgNFDWbPRr8Ua90hvq1WiKxWzRlLMv6BOTmKQn3CNtvW0yrXCalk9PKZgiphyTCh+bySYOi0OK7cXs80JIBpETQ1OELANmX1Qdwbw7nF+GEJLZoDoIJtu1jWtla9dW7fOyu2e3tHhaNCpT7ixXn8vs4tkyv2q+noNjWntbVdDgGKaKCMms7+8JadglhJCRAuHh9ruloadBBQmESaGtUHJjuRLNiUq7t13FC8y904unS4G9QFNFiLhQuBCSmaTdsEsIIQcKqox2uXdJJBKRyvxKcZgdYjabdTsqi2DYRTQmHOurRqI5l5DMhpEXQkjGg+66vYG+aiF4WWDmDYaDfX6YoFdyJVe8Aa+4fX3dt2nOJSSzYeSFEJLxoNII5tum3qZ4IzqXzSVljjLdj+1IJ6EXDMy5nGFESGZD8UIIyXjQVbfQUagTpXvDvZoegljJyc0Rs8msHpjpJdNlZvFMnV3E4YuEZDZMGxFCssK0W+4oF1+BTyxika5Al7hjbrHmWKXCXiEhe0im5k8Vl53Vh4RkAxQvhJCMB6XSUwunahWRN+yVIkeRRlzCkbAEY0Fxmp26n3OLCMkOKF4IIRkP5hEV2YtkXvk87bC7x7tHDbxoWFedVy1TXFM0VcS5RYRkBxQvhJDsmXcU6pXy/HKJ5cQkEAmoiVdLpWORfeYWGc3tIGjYpI6QzILihRCSNRVHXW1dWh6db83XBQKm3l2vwgVmXYARAsZYAfR/wYwj7MdcIxp5CckMKF4IIVkB+rmgOV0wEpTGnkatODLnmKXMWaazjLTTruRIm7dNBYwx0BE+mU5/X28YllATkhlQvBBCMh6kgCBKgtGgpoCq8qtUqPgjfvEEPNLS2yIdvg7t/YI0UV1xnZZSQ8RgvdhRrM3tEJFBKTUhZGJD8UIIyXjgXYHwgFiBaEGvl0AooIIEaSEIlGgkqk3qEIVZ37ReIy/oD4Nt+ZZ8TTshlQQhRA8MIRMbihdCSMYTioSkO9itqR+IE6SPfFGfpoQ8IY923UUDO0/Yo2XToVhIpuZOlaqCKp1/1B3oFl/IpwKG5dSETHzYYZcQkvFYTBYJhUPqe0FqCL6XNl+bVh9BtECgoGwaBt02f5tGYjxBj4oenFtoL9RjewI9LKcmJANg5IUQkvGoCLFYxBq2yo7OHSpednTvkFg0pukhu8muZdM5OTmSZ8mTaDSqBl5MoAZWs1UkJ90/BSFkpFC8EEIyHkRP7Ll2aY+26zqMuEgDQbTAA4M0UZ4pT1xWl/piWrwtGqWBsHFYHGISk5ZKo2SaaSNCJj5MGxFCMh6kgWC8RXoIERS8t+ZaNU2EhnUQJGbpM+fivZEugmEX4iYmMS2tNsy9hJCJDSMvhJDsAamfqIjVZNUhjDDqIgKDlBGESjAc1JLp2sJajbag+y4iL2hoV99dr7OQWGlEyMSH4oUQkvEgmgIfi9PkFJu9T6jA2wKhgu2oJsKkaaSGiu3F0tHbIYWOQnEH3NLt79boC0y7ZrOZpdKEZAAUL4SQjAdpIKR+qlxVGj1BnxdEVJxhp3bZrcir0DLqAkuBBHIDcSMvKpFwXq7kquCJRCL0vBCSAVC8EEKyw7BrtqvwwGDGwnChvp9aMFXTRo2eRhUnaEBnt9jl4PKDNdpiDGZEtRE69KJJHT0vhEx8KF4IIRkPBAdSQp3eTk0DwXiL/4MHBsIEM4vQuA5pIoiYAX0tsXTcOSFkf6B4IYRkPBAjZY4yNei6fW5tUBeMBcWaY9XtLodLKvMqNVWEEmkIHKfFqUIGFUrekFc9MuywS0hmQPFCCMkKIDyQIvJH/TKlYIpWGAUiAe2kawlZVLhgXAC8MBAwGBuA41E+XWgr1PORSmLaiJCJD8ULISQrgCApshfpAmGCvi3wwtS6arXjLqIyKKFGlAXiBv4Xw/OCyA2GOKISiaXShEx8KF4IIRkPhAjMtvC9QKC4/W6JxCKaEkKjuk5/p+xx71HRAm8LIjIljhLtwItoDIQLDL84nxAy8aF4IYRkPIigQKRgafI2aeTFH/JLY0+jjgqAvwWRGEfAoWXRiMTA74Iyaph7EXGBcIGAIYRMfCheCCEZD1I/iLK0ultVyECsoPIITeoARE2xs1jyLfkqYuB1seRaZHrR9HjaiBCSOXCIByEk44H4QHO6Ln+XdsqNxWI6fBGmXUyOxjBGdNrNs+XpfpPJJK29rRQuhGQoFC+EkKzwvKC1f5GtSMug4X9Rg67Zqu8LbAWaHkK6CGC6dE+gRyMwhJDMg+KFEJLx6NToHLPUFNZo2TPGBUCYQKxgJADGA5hNZrb+JyRLoOeFEJLxwLeiXXVzTVpRhIZzGMYIEVOaV6qvkZxIvIcLOu0iGoOeL4SQzIORF0JIVnheCqwFmioCBfYCNeOackwqVJAiwngANKFDWgmRGkRpaNQlJDOheCGEZAVGqTN6tiBdhFRReV65eAIe7eWCEml020Wfl9rCWqkuqE73LRNC9hOmjQghWQGECwYwdng7pN3XrqmiYkexzjaKSl8nXXTcLXWUqtBBFEbHA7BUmpCMg+KFEJLVggZiBXON0HkXQiUmMRU4qEJC/xf4ZJByYpM6QjKHlKaNIpGIPPnkk3LGGWfIlClT5LHHHhvReX//+9/l+OOPl7q6Ojn55JNlxYoVqbxNQkgWgE66u927dRQAzLjo74JXrLd52yQnJ0eFi3EM/C7o+aJzjfyduh3XIIRMcvHyf//3f/Kb3/xGvvSlL0lzc7P4fMP3VHjjjTfknHPOkbPOOkueffZZWbJkiQqYDRs2pPJWCSEZDqIpEB9IFSHKArGCV6xjO/aP5BhCyMQnJ4ZWlCkCHS0xbl4/KCdHHnjgAbn88suHPAeiBREbRF8MFixYIEceeaT89re/HdHnut1uKSwslO7ubnG5XAf4UxBCMqFJ3Y6uHRpFgRhJnhgNAy8qjgCiMTgmGRyD81ClxCokQtLDSL+/Uxp5MYTLaHjttdfklFNO6bfttNNOk1dffXUM74wQkrWDGXuapN5dH1+wju0w8GLBTKOBwHYch2sRQiY2E8qw29PTo6qrsrKy33as79mzZ9DzAoGALga4BiFkcoBoCRZvyCut3r7BjJgYDTGC92hWB3MuGtchooKy6YEiL9gO867RyI4QMnGZUOLFyGBhRkkiWEcqaTCWL18ut956a8rvjxAycTA8KkZZ9Jb2LdqQDh12MTnaSBs5zU4VL7OKZmnlEcy5Vse+4gUN7ortxf1SRsnpJ0KyiVgsJoFwVLzBiPQGwvrqDfa9+vA+FBH/3m2+UFT8WN+7+EIR+cpJs6W2xJmWe59Q4iU/P1/sdru0tbX1297a2ioVFRWDnnfTTTfJdddd1y/yUltbm9J7JYSkV7hs69gmzZ5m7eESjoalw9+hFUOYJj27dLYOX8RxjZ5GseXaJCIRLZn2hX3ayA7vEZ1BxAXCBWXVKJc2rs9yajLRhYcvFJFuX0i6vCF9dWPxh/W1B6/+kHj8YfEE9r4PhHUdQgXvIVLC0f23vV68bBrFi+GRWbp0qbz++uvy5S9/Of6A4Hc54ogjBn2ANptNF0LI5GCPe4/s7Nopdotd8i35Kl7QdA6CBVGYdm+7jgbA75Tq/Gotke4N9Gq6yGhkh2iMN+rVVBEiLkafF6PkGq+JAgcRGwgfnI/jCBlLItGYdPQGpc0TkHZPUNp7+16xrb03KJ1YvMYSkm5vSIKRsfNn2S25kmc1i8NqEqfVJA68t+SKU19NYrdgW278PZaqwvT9O0h75OX222/XKqKNGzfq+rXXXitXXnmlPPfcc2rcfeihh7TPy4svvpjuWyWETACQymlwN4jJZNI+LbotEtBUUVl+me6HkCl3lvdVH5mt4g16dTQAhI3L7pJqV/WgKaHEcmoDiB6kmhCxwX6cT8hIiEKUeIPS1O2Xxm6/NLn90uL2S7MuAX1tU5GC/x5H/0zNuTlS5LSIy2GRQodFCuwWcdnNul6AV7tF8m1mfY9XLHl7l773ECtmMeXmZNT/oCkVL6gc+uQnPxlfhzC54YYb5FOf+pT85Cc/0W0ej0d7wBhcfPHFsmvXLrnooovUhFtQUKDi5oQTTkjlrRJCMgS09EfZc6mzNL4NBl0IjHAkLE6rU7p93bodwsUog0a0BOMBDJI9LBAzuDY8NCinHghEYhCxwbH0wBAjYgJBsqvdK/WdXtnd6ZPdXT5p6PTKni6/ipaRRkhycjCjyyql+VYpzbNJib5apWTvUuzsW4qcFinOs0qRw6JRErQimWyktM9LMBiUjo59mz45nc54/TbEi9fr3cfTAoOuUe892pJr9nkhJHvp8nXJG7veUPGSKE52dO6QnlCPBENB8Uf8cviUw8VhdWgVEoYyFjuLZW7p3H1ER6K/Bd6Xxp5GmZI/RY9PTg/h1yWmUs8oniEOi2Ncf26SXoGyp8sn29t6+y31HV5p6PQNK06gLcrzbZpmqXQZi00qXHapKLBJOZZ8mwoUs2lyV7u5R9jnJaWRF6vVqmMBhjPpYkkGIeHi4n+HbQkhBEA0IDKCyqIyc1nf7xqTVYrsRRKJRfSPJmuOVYLRoORGcqXQViiSIzqgcSDhkuxvgbcF0RekolC5lChgWE6d/SJlR3uvbGrqkc0tHtnS4tHXba0ercoZDIspR2qKnVJT7NBlapFDpuqrU6qLIFDsYjVPblGSdZ4XQggZDRAgNYU1sqltk0ZBnBanpo3wihlGZpNZZpXM0k65EDMw8yZWEiWyj7/FJGreRW8YiBdEeSBghiqnJpkJqm3e390t7+1xy4ZGt2xo6pFNzT2DihSrKVfqSp0yoyxPl+llebo+rcQpVYWOjPOMZDoUL4SQjKO6oFr9KS2eFjXiIi2EkmmYdKcWTJXSvFJNJSVXEiUC34o2r7Pm9dte5ChSQeMJeTQKg4gOUtfJ5dQkc0Bfkvd2d8ua+i5Z29CtomV7e68MZJpANc3synyZXVGgrweV5+srIisUKBMHihdCSMYBEYHoCoSJ0aQOZlw0oYO4QLXRcM3ljJECyeMCcG1EWzq9ndLkaZIuf5cKnMFEEJl4wDC7ckeHrNzRKavrO2VDY8+A/UyqC+1ySHWhHFrtkoOrCmTuFJdGUihSJj4UL4SQjAQiAiXLMO7uTxdcHI/IzEDjAnBtRG9gCK511arPhqmiiQlM1DvbvfLG1jZ5e3ufYIF4SQam2EW1RbrMn9onWErzmf7LVCheCCEZzUCiYiRt/bG9wFow5LgARHKQRiITi5Yev7y2qU1WbG2XN7e2yZ5uf7/9iJwcVu2Sw+tK5PC6Ylk0rUijLJOxpDhboXghhGQNo23rj+0jGRdA0ksoEpXVu7rk5Y0t8sqmVnl/T//hu6j2WTytWI6aWSpHzijR6AqasJHshf/rEkKygtG29Ud0BimHMmeZipXBxgWQ9FUDvbKxVZ77oEle2tCiM3sSQernuNllcsysUllaV6Jt7cnkgeKFEJIVJJY9u/1u6Y316nwjrCe29R8sOoPGdPC+cIJ0+ujyBuUf7zfJM+ub5M2t7f2avxU7LXL8nHI5YU65vpbRrzKpoXghhGQ8RtkzxMi6pnXa7wWzjsw5Zo2soLQa+9EXBvuGis7QmDu+YBryc+83ydPrG+X1zW39qoLQT+WUQyp1WTKtmFVAJA7FCyEk44E5F6XNO7t3ijfslSJbUXxCdKOnUUVLXWGdNrPj0MWJ4WFBSujx1Q3yzw9a+kVYDq5yyZnzp8jHD5sis8rzabIlA0LxQgjJeJDq2d2zW9xBt0wrnBbfjiGNWHZ175KdXTslz5bHoYtp5MNGtzy8sl6eWLNH2nuD8e1zKvPlrAXVcuaCKhUshAwHxQshJOMxJkLbTfZBxU1noFMjMCWOgSuIkEKCYRdRHDJ2+IIReXLdHvnT27u0YsigLN8q5y6aKucvmSqHVhfykZNRQfFCCMl4ML8IE6RNYtKBjQ6zQ1NEmCjd2tsq4XBYfFGf7OnZo514y/PK96kk4tDFsQXDDO9/c6c8tqpBevZWCplzc9S/8smlNXL87PJJP0GZ7D8UL4SQjAdCJc+Sp8IkHAlLV6BLIzGItEDIFOUViSvqklJ7qbb8h7E3eWI0hy4eOCg9f31Lm/z+9e3y0sbW+PbaEodcesQ0ufDwGp2wTMiBQvFCCMl4XHaXVDgrZFvXNi17hoDBzCO8YlgjhjfCCzOjdIY09TRJq7dVS6RrXDVsSjcGBMNR+cvqBrnnte2yucWj29DM9mPzKuSKo6fLcQeVSS6nLpMxhOKFEJIVVBdWy5qmNbKhbYOWO3sCHvWvYFtlXqVMmdoXaUHEBf1f0PvFZrLp3CI2pds/vMGwPPjWLhUtTe6+Fv15VpN8cmmtXHnMdC11JiQVULwQQrICb9CrlUTl0XJp722XHn+POC1OHdyI7UgjAQiYmsIaFTiIxqDfC3u7jL43y30rdsi9b2yXTm9It1UU2OSzH5khlxwxTVz2/pO6CRlrKF4IIVlRbdTgblDT7nTb9L4p0aY+oTLFOUVCsZD2e0HUBUIF5lxEXChcRkdvICz/b8UO+c0rW+Pt+utKnfLFE2Zp1ZDNzBb9ZHygeCGEZDyIqrR729WI68vxSZG9SM2j6KrbE+qRnFiO+l/8Ib+KF5pzR/l8gxH5w792yq9e2Sode/uzHFSRL1856SA5c34Vq4bIuEPxQgjJCiBU4HGx5lqlLdgmgWBA3CG3BEIByTHliCXHIsFIUL0unBg9MiLRmDy+qkF+8tymuKdleqlTvn7yHDl7YTXb9ZO0QfFCCMl40IQOvV6ae5slV3IlGA32RVuiYekKd+lIgBJ7iaaL0OOFE6OHB3OGfvDMh9oVF0wtcsjXTp4t5y+eykgLSTsUL4SQjAf9XSBgmj3NOgsH0RcMZcRwRggZf9AvRSVFUuuqlcqCynTf7oRmS4tH/ufpD+TlvX1aCuxm+epJs+WKY+roaSETBooXQkjGE4qEND2EEuhYNCYhCUlUopomwqBG+F1aPa3S0NMgkViEkZdBzLh3vbhZG8yFIjHthvvpo+tUuBTnWcf/f1RChoDihRCS8cDr4o/4xWVzacQFDep6o73iC/ok35ovueZcjcxgX6e/U3xhn0x1Td1nRMBkBMbmp9c3yv889WHc14LmcjefdQj7tJAJC8ULISQrSqURUZGYaFk0hi+iogj+F5RN50iOfkmDYkexmnY7vB1S7aqWycyudq98+y/rtaW/0cb/v886VE4+hKk1MrGheCGEZDwof0ZkxZgOjcgLIiwQLph5hLSSemHMfekP9HdBdRJEz2RsUBeOROXeN3bIT57fKP5QVKzmXPnSibO0X4vdwl4tZOJD8UIIyXggXNB0rsndJDaLTdv9Y3YRBjYGIgEVKUgRIQJjCBxv1KvppskGqodufGydrGvo1vWjZ5bK8vPny3S28icZBMULISQrqo3yLfmSb89XYYJIC4QJUkmYKg2vC/bjOICSaYgbI1ozGQhFovKLl7bIz1/cIuFoTKuIbj7zYLloaa1GpQjJJCheCCEZDaIqbr9bIy6YVYQuuoFoQP0vvohPCq2Fug+jAyBqEKGZbB12t7Z65Lo/r5G1e6Mtpx1aKd879zCpdNGwTDITihdCSEaCxnMw3cK7AjGCwYww6GJ+EcYFFFgLpNvfLXaLXWy5NvW5IGs0mTrswqT8wL92ym3PfKjeFpfdLN8/7zA5d9HUdN8aIQcExQshJCOFy273bn2FKEGqCJ1zWzwtGoWZ4pqi6SKURHd6O7WM2mwya+Sl1FE6Kfq8tPYE5PpH1sqrm/qazX1kdpn86MIFUlXoSPetEXLAULwQQjIORFwgXFD2rJhEKvMq1cMC8YLF7DBrtdGsklnarK4ir0J7u0yGVNEbW9rkaw+tkTYPqqly5abT58kVR0+X3Fx6W0h2QPFCCMk4jwtSRZoG2rsOcy68LEgVwXwK34vL6hKLuW9sQKG9UHu6ZLtwQQn0XS9slp+9tEXQ1mZuZYH8/LLFMruyIN23RsiYQvFCCMkotIooGtGlydsknpBHt0GkRKNR8QV80tTbpNEWdNetcPZFXLI9TdTU7ZevPrRa3t7eoeuXHlEr3z3rUHFY2beFZB8UL4SQjJwg3epuVdHitDi1nwtMuw3uBh3GWJVfJQeVHCQmk0mPbfe2q3jJVgHz1rZ2+fKDq6TNE5Q8q0luO38+Tbkkq6F4IYRkFEj9YNBil79Lagtr49u9Ia+KE6SUbCabFDmL4vuydRwAqon+34od8oOnP9TeLfOmFMivLj+cM4lI1pNy8eL3++WJJ56QnTt3yuzZs+Xss8/Wv4aGorW1Vf7+979LS0uLVFdXy5lnnimFhYWpvlVCSAYAj4vZbJYiW5GWQiPyggiMO+DWpnTwukQkIt2+vWXSZltWjgPwBSPynb+sl8dX79b1cxZWyw8vmC9OK/8mJdlPSttLdnV1yZFHHim33nqr7NixQ66//no56aSTJBAIDHrOSy+9JHV1dfKnP/1Jmpqa5Fe/+pVMnz5d1qxZk8pbJYRkCBAq6JhbU1gjhbZCbf+P6iJUHxkppDZvm+zq3iX17npp6mmKe2SyZRzAni6fXPjrFSpcTLk52in3/y5ZROFCJg0plejLly8Xt9st69atk4KCAhUj8+bNU0Hy9a9/fcBzfvjDH6rAeeqpp+Jh0WXLlskdd9wh9913XypvlxCSIZ4XtPbHgoZ0iKagnwuESW+oV3u5ILrisrkkNzdXugPd0hPokWJncVaMA1hT3yWfu3+l9nEpzbPKzy5bLMfMKkv3bREyrqT0X/Kjjz4qF110kQoXMGXKFE0bYftg5Ofna0jYAGWPSDMZ1yCETG4gTFASDYOusV5kL9LfFUgNoRkdUkoYCYBZRiiT7gp0STgczviU0dPrGuXi37ypwgX+lr9deyyFC5mUpCzyEgwGZfv27TJnzpx+27EOP8tg/OQnP5GrrrpKLrjgAjnkkENk5cqVUllZKbfccsug5yANlZiKQrSHEJK9oEOuds/1daqfBSXSMQwzyunzxDjyHBq1RaURjLwQNxA1mep5wc+CoYq3P7dJ10+aVyF3XbpY8m30t5DJScr+y+/t7dV/cMlG26KiIvF4PEOe193drdEXvIcQQeTF6/UOmZ6Cr4YQMjlAVRF6tyTONoKAmVs8V3Jyc3RqNLZrgzpboUZfjGZ2mTgN+sbH1snjq/qMudccN0O+fcbB6nUhZLKSMvHidDoHjIJAmOTl9XXGHIjLLrtMFi1a1M/fctppp8kXvvCFQSM2N910k1x33XXxdXxmbe2/SygJIdkpYFD6rJ6XkE9TRAW2Ah0JYAgViBdEWtCwDh6ZTPO89AbC8h9/XKXziSBWbj3nULn8qLp03xYhaSdl/5JtNptWCW3ZsqXf9s2bN8vcuXMHPCcSicj69evlhBNO6Lf9+OOPl1WrVg35WS6Xq99CCJkcqOfFUaQDFxN9MBgXYKSIsB0+mUxKGcHXcsnd/1Lh4rCY5J4rl1K4ELKXlP4Zcv7558vDDz8cT/mgf8uTTz6p2w1effVVuf322/U90kOzZs2SN954o991VqxYsY93hhBCEjEmRcMHg0gL0tZ4xTq2Y3+msLO9V0uh1+/ulpI8q/zp80fJR+dWpPu2CJkw5MTwLzxFdHR0yLHHHit2u13Ln59++mkpLi6WF198URyOvrHsMOLeeeed2hMGQNygQunkk0+WBQsWyL/+9S9555135Nlnn5VjjjlmRJ+LtBG8NkhRMQpDyOQBvV4MHwz6uiBVhIiLIWwygfd2d8tn7n1bW/3Xljjk/quPZMdcMmlwj/D7O6XiBSDq8sgjj8iuXbu0wy6qiCwWS3w/hMybb74p3/nOd+LbGhoaVKw0NzfL1KlT5ayzzpKyspH3MaB4IWRyk+x5yRTe3dkhn7n3Henxh+XQapfce9UyqSjIDNFFSFaJl3RA8UIIyTRe39ymzed8oYgcMb1EfveZpVJg//cfeoRMBtwjFC9sEkAIIWnm+Q+a5ct/XCXBSFQ+MrtM7v70UnFYh54BR8hkhuKFEELSyBNr98g3/rxGItGYnHZopTafs5kpXAgZCooXQghJE39bs1uFSzQmcv7iqfKjCxeI2ZRZvWgISQcUL4QQkmbhcsmyWrntE/Mll11zCRkRlPiEEDLOULgQcmBQvBBCyDhC4ULIgUPxQggh48STe825TBURcmBQvBBCyDjwzw+a48Ll4qX0uBByIFC8EELIODSg+9KDqyQcjcknFk+V5efTnEvIgUDxQgghKWTljg7tnBsMR7WPy48vXMCqIkIOEIoXQghJEesbuuWqe9/Rlv8nzCnXBnTs40LIgUPxQgghKWBLi0eu+P1b0hMIyxEzSuTXlx/OzrmEjBEUL4QQMsY0dvvkyt+/LZ3ekCyoKZTfXclZRYSMJRQvhBAyhnR5gypcdnf5ZGZZntz7mWWcDk3IGEPxQgghY4QvGJFr7lspm5o9Uumyyf3XHCGl+TY+X0LGGIoXQggZA0KRqFz74Cp5d2enuOxmuf/qI6Wm2MlnS0gKoHghhJADJBaLyc1/eU9e2NAiNnOu/O4zy2TulAI+V0JSBMULIYQcID9/cYv8eWW9YCj0zy9bIsuml/CZEpJCKF4IIeQAeOzdBvnJ85v0/ffOPUxOOaSSz5OQFEPxQggh+8mKLW1y42Pr9P0XTpgplx9Vx2dJyDhA8UIIIfvBxqYe+cIf3tV5RWctqJIbT5vH50jIOEHxQggho6TF7Zer7n1bevxhOWJ6idz+yYWcV0TIOELxQggho8AfiuigxT3dfplZnid3X3G42C0mPkNCxhGKF0IIGSHRaEyuf2StrG3oliKnRX5/5TIpclr5/AgZZyheCCFkhNz5wmZ5el2jWEw5Omhxelkenx0haYDihRBCRsBfV++Wu17YrO9/8In5ctTMUj43QtIExQshhAwDWv7/Z0JJ9EVLa/nMCEkjFC+EEDIEe7p88oUH3pVgOKoN6FgSTUj6oXghhJAhKosgXNo8AZk3pUDuvHgRS6IJmQBQvBBCyCDDFv/z0XWyfne3FDst8tsrlkqezcxnRcgEgOKFEEIG4DevbpMn1u4Rc26O/PJTh0ttiZPPiZAJAsULIYQk8dKGFvnfZzfo+/8++xA5ehYriwiZSFC8EEJIAltbPfLVP62WWEzk0iNqOWyRkAkIxQshhOzFEwirQbcnEJaldcVy6zmHSU5ODp8PIRMMihdCCNlr0L3h4bWypcUjlS6b/PLyJWI181ckIRMR/sskhBAR+eXLW+XZ95u09f+vLj9cKgrsfC6ETHbx4vP5Rn1ONBqVcDickvshhBCDVza1yu3PbdT3SBUtmVbMh0PIZBYvP/vZz6SiokIKCgqkpqZG/vjHPw57ztatW+Wcc84Rp9MpZWVlcuWVV0pXV1eqb5UQMgnZ1e6NG3QvWVYrlx05Ld23RAhJp3j5y1/+IjfccIPcc889Gnn53ve+p0LkjTfeGPSc5uZmOe6448TlckljY6N0dHTIxz/+cVmxYkUqb5UQMgnxBSPyhT+8K92+kCysLZJbzz003bdECBkBOTG41FLECSecIFOmTJE///nP8W3HHnus1NbWykMPPTTgOV/72tdU9GzZskWsVut+fa7b7ZbCwkLp7u5WEUQIIQMadB9ZJ4+tapDSPKs89dXjpKrQwQdFSBoZ6fd3bip/MbzzzjvykY98ZB9B89Zbbw163lNPPSXnnXeeCpdAIJCq2yOETHL+9Ha9CpfcHJGfXbqYwoWQDCJl4qWnp0dTRfCsJAL/S0tLy6Dn7dy5U2w2mxxzzDGquqDArrnmmiE9LxA5UGuJCyGEDMba+i655Yn39f03T5snxxzU//cUIWSSG3ZRMZQIqoeGa/oEk+8tt9wifr9fVq5cKa+++qp8+ctfHvT45cuXq8gxFqSlCCFkIDp6g/KlP66SYCQqpx5SKV88YSYfFCEZRsrEC6qLsMCAmwiiLtXV1YOeh32nn366nHrqqSpyZs+eLddee608+eSTmooaiJtuuknzY8ZSX18/5j8PISTziURj8rWHVsvuLp9ML3XK7RctZAddQjKQlIkXCA+Yc1944YV+259//nmtJjJAdAWCI9ETk+x1wTHwwAwWsUGaCSmmxIUQQpL52Yub5bXNbWK35GojOpfdwodESAaS0rTRjTfeKM8++6zcddddsn37dvnud78rH374oVx33XXxY374wx9KXV1dfP0///M/5ZVXXpG7775b9uzZo2LnjjvukKuuuiqVt0oIyXJe3dQq//fCZn1/2yfmy8FV/COHkEwlpeLlxBNPlEcffVQeeOABOeqoo+TFF1+Uv//973LYYYfFj7Hb7epTMZg/f74eg2Z2S5YsUTEDsXPbbbel8lYJIVlMY7dPvv7nNfFJ0ecvqUn3LRFCJmqfl3TBPi+EEINQJCqX3P0veXdnpxxS5ZLHv3SM2C0mPiBCJiBp7/NCCCETgR89u0GFS4HdLL+6fAmFCyFZAMULISRr+cf7TfLb17br+x9fuFDqSvPSfUuEkDGA4oUQkrUDF294ZK2+/+xxM+Tjh01J9y0RQsYIihdCSNYRCEfkyw+ukh5/WJZMK5IbT5+X7lsihIwhFC+EkKxj+TMbZP3ubilyWuTnly0Ri4m/6gjJJvgvmhCSVTyzvlH+34od+v6OixZJdREnRROSbVC8EEKyhp3tvXLjo+v0/RdPmCUfnVeR7lsihKQAihdCSFbgD+31uQTCsrSuWK4/dU66b4kQkiIoXgghWcFtz3wo7+12S0meVX522WL6XAjJYiheCCFZ4XO5/82d+v4nFy2UqkL6XAjJZiheCCFZ43P5jxNnyUfn0udCSLZD8UIIyeh+Ltc+uPrfPpdT6HMhZDJA8UIIyYp+LndduljM7OdCyKSA4oUQkpE8+96/+7n89KKF7OdCyCSC4oUQknHUd3jlm3t9Lp8/fqacNK8y3bdECBlHKF4IIRlFMByVa/fOLVo8rUi+edrcdN8SIWScoXghhGQU//vsBlnb0C2FDov87FL2cyFkMkLxQgjJGJ7/oFl+9/p2ff/jCxdITbEz3bdECEkDFC+EkIxgd5dPbnhkrb6/+tgZcuqhU9J9S4SQNEHxQgiZ8IQiUfnKg6uk2xeSBTWF8q3T56X7lgghaYTihRAy4bn9uY2yaleXFNjM8vNLl4jVzF9dhExm+BuAEDKheWlDi/zmlW36/n8vXCDTSulzIWSyQ/FCCJmwNHb75LqH1+j7K46ukzPmV6X7lgghEwCKF0LIhCQcicpX/7RaOr0hObTaJd8+4+B03xIhZIJA8UIImZDc8c9N8s6OTsm3meUXly0Ru8WU7lsihEwQKF4IIROOVze1yi9f3qrvf3jBfJlelpfuWyKETCAoXgghE4pmt1++8ec1EouJfOrIaXLWgup03xIhZIJB8UIImVA+l6/8abW09wbl4CqX/NdZh6T7lgghExCKF0LIhPK5vL29Q30uv/wUfS6EkIGheCGETAhe3tgiv3ipz+ey/Pz5MoM+F0LIIFC8EEImRD8X+FzA5UdNk7MX0udCCBkcihdCSPp9Lg/+u5/LzWfS50IIGRqKF0JIWrn9uU2ycmenzi2iz4UQMhIoXgghaeOFD5vl169sjc8tqitlPxdCyPBQvBBC0kJ9h1eue3itvv/MMdM5t4gQMmIoXggh404gHJEvP7hKun0hWVRbxLlFhJBRQfFCCBl3fvD0h7KuoVuKnBb5xaeWiNXMX0WEkJFjlhTT3Nwsv/vd72Tnzp0ye/Zs+dznPieFhYUjOnfdunXy05/+VJYtWyZf/vKXU32rhJBx4Mm1e+T+N3fq+zsuXiRTixx87oSQUZHSP3d2794tixcvlldeeUXmzZsnjz/+uBxxxBHS3d097Lm9vb1yySWXyHPPPScvvfRSKm+TEDJObGnxyLceW6fvr/3oQfLRuRV89oSQiSVevve970lpaak8/fTT8o1vfEOef/55cbvdcueddw577rXXXiunn366LFmyJJW3SAgZJ3oDYfniH96V3mBEjp5ZKt84ZQ6fPSFk4okXiJYLLrhAzOa+7FReXp6cffbZ8uSTTw553oMPPiirVq2S2267LZW3RwgZJ2KxmNz42DqNvFS6bHLXpYvFlJvD508ImVieF7/fr2mj6dOn99uO9UceeWTQ87Zs2SJf//rX5cUXXxSbzTaizwoEAroYILpDCJk43PvGDnlqXaOYc3O0EV15wcj+bRNCyLhGXnw+XzzakkhBQUF8XzLBYFB9LjfffLMcdthhI/6s5cuXqwnYWGpraw/w7gkhY8XKHR1y2zMf6vvvnHmwHF5XwodLCJmY4iU/P19yc3Olq6ur3/aOjo5Bq43+8Y9/yPr16+Xdd9+Vz3zmM7qsXbtWVq5cqe/b2toGPO+mm25SE7Cx1NfXp+RnIoSMjpYev3zpj6skHI3JOQurtRkdIYRM2LSRxWKRuXPnyvvvv99v+3vvvTdoVGXhwoXym9/8pt+2NWvW6LVOPPFEsdvtA56H9NJIU0yEkPEhtHfgYktPQGZX5Mvy8+dLTg59LoSQCd7n5dJLL5Vf/vKXGhmprKyUzZs3yzPPPCN33XVX/Ji//vWvWg6N46ZNm6YRlkQeffRRFS3J2wkhExukit7a3iH5NrP86vLDJc+W8rZShJBJQkqrjW644QY59NBDtdfLueeeK0cffbScddZZ/YQIIiuoLiKEZA9/Wd2gJl3wk4sWykEV+em+JUJIFpHSP4UcDof2dlmxYoXs2rVL/uu//kuWLl3a75jzzjtP5swZvN8D+sOYTKZU3iYhZAx5f0+33PT4+ngjutMOncLnSwgZU3JiaMCQZaBUGqZgmHddLle6b4eQSUNnb1DO/vnr0tDpkxPmlMvvP7OM/VwIIWP+/c1paISQMSESjclXH1qtwmVaiVPuuoSN6AghqYHihRAyJvzo2Q3y2uY2cVhM8ptPHy6FTgufLCEkJVC8EELGxKD7m1e36fsfXbhADq5iupYQkjooXgghB8S6hi658bE+g+6XTpwlZy+s5hMlhKQUihdCyH7T4vbL5+9/V4LhqHxsXoXccOpcPk1CSMqheCGE7BeBcES++Id3pcnt1z4ud16ySHI5KZoQMg5QvBBCRg06LPzXX9+TVbu6xGU3y2+vWCoFdhp0CSHjA8ULIWTU/Pa1bfLwygZBoOXnly2RGWX9p8cTQkgqoXghhIyK5z9oluV/36Dvv3vWIXL8nHI+QULIuELxQggZVev/rz20WtCX+/KjpsmVx0zn0yOEjDsUL4SQEVcWffa+leINRuQjs8vkv88+VHJycvj0CCHjDsULIWRY/KGIfO6Bd6Wx2y+zyvPU52Ix8dcHISQ98LcPIWTYmUVff2iNrK3vkmKnRYctFjpYWUQISR8UL4SQIbntmQ/l2febxGrKld98eqnUlbKyiBCSXiheCCGDcu8b2+V3r2/X97dftFCOmFHCp0UISTsUL4SQAfnH+03yvac+0Pc3fnyenMOZRYSQCQLFCyFkH1bv6pSv/qmvJPpTR06TL54wk0+JEDJhoHghhPRjW6tHrrlvpQTCUTlpXoXceg5LogkhEwuKF0JInGa3Xz79u7elozco86cWys8uXSxmlkQTQiYYFC+EEKXbF5Irf/+27O7y6ayie69aJnk2M58OIWTCQfFCCNEmdJ+97x3Z0NQj5QU2uf/qI6Qs38YnQwiZkFC8EDLJCUeicu2Dq+WdHZ1SYDercKktcab7tgghZFAoXgiZxESjMfnW4+vlnx82i9WcK/dcsVQOrnKl+7YIIWRIKF4ImaTEYjG59cn35dF3G8SUmyM/v3SxHDmzNN23RQghw0LxQsgkFS7/++xGue/NnYLB0Ld/coGceuiUdN8WIYSMCIoXQiYhv3hpi/z6la36/gfnzZdPLK5J9y0RQsiIoXghZJLx+9e3y+3PbdL3N595sFx25LR03xIhhIwKihdCJhEPvLkjPq/o6yfPls9+hG3/CSGZB8ULIZNIuPzX397X9184YaZ87WOz031LhBCyX1C8EDLZhMvxM+VbH58nOXDqEkJIBkLxQshkEy6nU7gQQjIbihdCspj7VlC4EEKyD05dIyRL+eXLW+RHz27U94y4EEKyCYoXQrKwAd3tz22UX7zU18flqycdJN84ZQ49LoSQrIHihZAsm1WEUuj/t2KHrt90+jz5wgmz0n1bhBAyplC8EJJF06G//Zf18vDKBl3//nmHyaePqkv3bRFCSGaKl46ODtm9e7fU1dWJyzWyibUNDQ0SCoVk2rRpYjKZUn6PhGQy/lBEvvKn1fL8B82SmyPy4wsXygWHs+U/ISQ7yU117v1rX/uaVFVVyXnnnScVFRXy/e9/f8hz7r33XjnooIPkqKOOkhNPPFGmTp0qDz30UCpvk5CMpssblE/d85YKF6s5V375qcMpXAghWU1KIy+//e1vVYysXLlS5s+fL6+88oqcfPLJsnDhQjnnnHMGPGfLli3y/PPPy4wZM3T95z//uXz605/W8w899NBU3i4hGUdDp1eu/P3bsrW1V1x2s9xz5TI5YkZJum+LTHAC4YBEY1HJzckVm9mWsnMISRU5MYRHUsSyZctUdPz+97+PbzvttNPEZrPJE088MaJrRKNRcTgcKmI+97nPjegct9sthYWF0t3dPeI0FSGZxoeNbvnMvW9LszsgVYV2ue/qI2ROZUG6b4ukkJEIiKGO8Yf90uHtkJ5gj0SiETHlmqTAWiAlzhKxm+0DXm9/ziFkfxnp93fKIi+RSETWrl0rV199db/tRx55ZD8xMxwffPCBBINBmT59egrukpDM5KUNLepx8QTCMrsiX4VLdZEj3bdFxpBEERKT2LACYjiRgf273bv1Nc+aJ5Zci4SiIen0d4ov7JOprqn7iJH9OYeQ8SBl4qWnp0cNt6Wlpf22l5WVSXt7+4iu4ff75ZprrlHB87GPfWzQ4wKBgC6Jyo2QbASBUpRBf/+pDyQaEzlyRonc/emlUui0pPvWyBiRLELC0bB4Ah6xW+1S4igZUECA4UQGron9xY7i+GdZTVaxOqzS6evU/dWu6n73sj/nEJLRhl2Lpe+XaaKoAD6fL75vKCB8LrroImlra5PHHntMcnMHv9Xly5drmMlYamtrx+AnIGTilUJ/92/vy61P9gmXi5bWyAPXHEnhkkUYkQ6IDqR8Cu2FKj5afa3iD/n7lrBfRSwEhSF0EkUGxAWGbuLVOKbR3ahiCMLGiOr4Qj59BdiO/cY6cPvd0uptFXPuwH/jDnQOIRkfecnLy5OSkhLZs2dPv+1YR/nzcMLl4osvlvfee09efvllrTgaiptuukmuu+66fpEXChiSTXT7QnLtg6vktc1tgmHQmAr9+eNnsmtulpEc6YAwCEQCUmwvVlHT5GnS6Av+mMu35KuwwHaslzr7R7kTRUa3v1sFD45v8jaJJ+SJp6RwHYgkRHmwzRBEEC47u3dKoa1QeoO9UuQo6pciQnTHG/XqOQY09ZKsqDZCqufpp5+WG2+8MW6+feaZZ+SMM87oJ2ZaWlpk0aJFuh4Oh+WSSy6RNWvWqHAZTugAGICxEJKNbGzqkc8/sFJ2tnvFYTHJnZcsktMOnZLu2yJjDL74E6MjQMVEyC/ekFfCsbD+DrWZbBKKhWRrx1YJRUJ6nIqKmEixs3gfDwpEBoRLMBKUBneDXtNpcaqQQUqqO9CtnwuBhGPavG0qYHCdIluRChwcg21TCqbEr4+0FHw12E9TL8mqPi8333yzlkl/9atf1fLnK6+8UhvWXX/99fFj7r77bu3nYvCpT31KnnvuObn99ttV1OB8LMkRHEImA0+t2yPn/eINFS5TixzyyBePpnDJUiAqEP2A2DCAMPAEPZo6grgw5Zg0EgO/ieSIRCSixzisDmn3tUtTT5MKiUQgMhwWh16/y9+lURaLyaJRO7xiHdvDkbBGWIzIT4GtQPKt+Xo+jsHndvm64tfFsTAEw0ycnOrCK9YNHw4hGRV5WbBggbz22msqRG655RaZPXu2rFixol80pbq6WhYvXtyvs+7cuXPltttu63etz3/+87oQMln8LT/+x0b5zavbdP24g8rkrksXS0meNd23RlIERAgiGRAL8KsYQBzg/xElQXqoJ9CjERKXzaWCw2K2qLCBwDEEBiIkiSLDaXaK0+qUonCRppASIy+I6iDCAiEEAQTRYoBUEcQHzoGo0shQIE/PQwQGlUw09ZKs6/OSLtjnhWQyLT1++fpDa2TF1r6qvC+cMFO+eepcMZtSGiglE4A97j0asTA8LzDVbu3cqq8dvg71n0DM5EquRGIRjZwgqlLjqlHRAi8LojMzimao0IFwUZHhKJHGnkaNiECIqOclGo17ZxAtwXZQmV/Zz0sF8aLXDnqkK9AldYV1Uu4sV+GSIzmyo2uHXjdRcBlAZCEdNr1oOhvbkczo80IIGT2vbW6Vb/x5jbR5guK0mnRG0ZkLqvgoJwkQBIigIC0E7wvEAcQIlhJ7iUZLYKQ1UjqIoCB95DA7xF5gl05vp5p6kQbC+YjIGCIDUR0siMokG2shMiCEQHLkB+IH5yDiA5EDYeSy932pQFQlp7oSGcjUS8hYQPFCyARJE93xz03yy5e3CmKh86YUyM8vWyIHVeSn+9bIOAKhYPRkMfq8QADkWnKlrrhOguGgWM1WPc6oIiq09nlMQGleqe6vddVqRCaxwy78KYjqoEdLcuddRGhKHX3VSsYxySBVhIiLIVwADMMQO4jKJKab4vsTTL2EjCUUL4Skmd1dPvn6Q6vlnR2dun7ZkdPku2cdInYLp6lPRiBM0PjNiI5AzKACCFEOCBZEYOBNgZhA5RF8KckiJHHbYFEdo5FdPLXk7JuJNZJjEquLEO3xhD1SnV+9Tzk1zkP0h7OQyFhD8UJImoDd7C+rd8t//+196QmEJd9mluXnz5ezF7JjabZxIP1PkqMx2rATlpSYaG8XCBikfZIFxnDXQToHUREjtWSIjuGOSR4ZUFtUqyXY9e56TS3VFNboOcPdDyEHAsULIWmgszco3/nrenlmfZOuL55WJHdctEiml/27xwfJfIwIBSIlSLHAV4LIyP4OQoRYgQiaGZmp4gDHIHU0kAgZSVRnIDE13DH7VBeZRGoLa/Ued3bt1H04f7ifk5ADgeKFkDQMVfzPx9ZJa09AzLk58vWTZ8sXT5jFaqIsA1/i2zq2SbOnWaLSJwIgBtp627SiZ2bJzCEHIcKcC/8KBEzijCJ4WbBo75UDiOgMx0DXG6iRXiK4L2/YO+TIAHbhJWMBxQsh40RHb1AHKiJVBGDGRbRlfk0h/zfI0rJnRCLsFnu8lb/RV0W3m+0qYBJBVMMoWW4Ptfdr4Y8vfVQVJQ5CHK1gOdBOuAM10sM10RwPPWaK7EViC9lU3CRPnmYXXjKWULwQMg7elifW7pHvPfmBtPcGdTbR1cfOkG+eNpem3CwFQgM+EJPJpBESA+1oaypUEyz244vdECA4B8ZcCIuBWvhDxJi95j6fyxCiZbDIRrJXJXHyNEqrqwqq9DOHuvZAjfTQAwbCBT8nUmP4mSFWtMvu3snTEEfDTb1meomMBooXQlJcSfTdv74nL2xo0fW5lQXywwvmy+Jpe/0CJCtBZRDMq4MNS3RZXdLubdfjDLEAwYEveqSYEquFDMEDkaD7BxmEiOZ1Q0VVBuqEi3NxjT2ePdLiaZEqV9WQkRjca2LJNc5FwzvtNyOiUSU00jN+psTJ08mfDfGDaxgCJzGiRMhwULwQkgIC4Yjc89p2+dmLm8UfiorFlCPXfnS2/MeJs8RqZs8Lsi+IWvgjfm0+NxD4skc/FRyHDriJQgVDGz0BT7y6JzmyUeYs28er0i/dYyuKi6LhoiGJJdcQSPj8WG5M013Jpdu4j65Ql/hz/P0iUIkkChyWVJORQvFCyBjzyqZWueWJ92V7W6+uHzG9RH7wicNkduW+TbxIdgLjKpq2uQNuKTOX7bMf27EfxyVGWCAWUPbslL5IRiLYjv0YC5CcgmnobtDOu2giBxECcZMY2UA6KtmrkpjuQWoTAgJpKtzXUNGQxJJrVFF5g30ddFHtlNznBQIK94LrswsvGUsoXggZI3a09cryv38o/3i/WdfLC2zynTMOlnMXVfebFUOyH0QQ0O9kU9umAQch4sse+xMjDUj9IKqBpm8DnYMRAcXOYvWnJKZgELEIRAMyJX+KHpc8mFEjG4EefW94VXr8PSo8jM/XoY85ufFOuMNFQ4xyaqTF8ix56slBBVUyKOfGAEkIr+SxAwbswkv2B4oXQsagZ8tdL26WP/xrp4QiMTHl5shnjpmuJdAF9oFnvpDsp7qgWj0t8JIg3YNhiloyLbnaFwX7E4FIKHOUqZBAAzp4SXA+mtLBR4LGdAWWAhUCiekfCCEMWTRbzCp4cF6i6MA+pJpQqYThjrg2hEtDT4N6b3xBn14bURvjnJHOJMLxEDExd0yjNRBbEFmIDhmTp2EERpRmsLED7MJL9geKF0IOwNdy/4qd6mtx+8O67cS55fLtMw6WOUwRTXrwxT2rZJamU0bapM7wkxgpoWQhgLQMpkMnpmA0YpKbq8dAPOB8iA5jGjREgz/k13ORboJ4QgTHZXGpsIFZF9GTaYXThoyGDFbFhPtCBGZb+zap99ZLMBoUa65VKpwVcd/MSEcTEDJSKF4IGSWhSFQeWdkgP39xs+zp9us2DFL8zpkHy0dml/N5kgHTKyNpJpfcwh9RlsTuucZ06MQUDK6HPjBI3SDygs/AeRAK8LRA/CClBHGD9CWEA+4F1UloKFeVX6XbEeUxTLWJ0ZDh+rNgPyqnbBabzCieETfx4vOwHceMdDQBISOF4oWQUUx+/uuaPfJ/L2yS+g6fbpvisst1p86RC5Zgngt9LWRgRlNFM1x7/sRSZQNEVbR6yNPU530JejVVhUgPhA2iHS3eFo2uwBeDFBLEBFJaEDEQNFqNFMiLR3kgKobqDWNUJA1Ugm2QaPwdyWgCQkYKxQshwxAMQ7Tsll+/vFW27a0gKsu3yZdOnKUToDn9mYwFyV/qg32xD5SCwTno5FvuKNdUE0QM1uGVgbBBtU+iLwYRGQiYaUXTNLUEoYPIDTrkwvtiREPQJXio/iyN7kZNEw02LmAg4y8FCxkLKF4IGQRfMCIPvbNLfvvqtnh6qNhp0TlEnz66TpxW/vMhB85gaRl88UMoJEYoIAIgRNC3xRjMaKRgpuRNkZLyEvW34BwIEQgY47yBfDEo1UZlEqqRkDKaUTRDXHbXiOYYYXtrb6uKovK8ch3QmMxIjb+EjBb+9iUkiTZPQP74r11y35s7dB6RUfb82eNmyKeOqpN8G//ZkLFhoLQMBMPGto2ankEUxGl1avoHVULYlihwkCJKFjjBcJ9PBsfaxT6oLybRjAtRg88yhMtgc4wS7xsl3bu7d2sFFSqcBuvzkmz8JWQs4G9hQvby/p5uufeNHfLEmj0SjPT9pVhb4tBICzwtTA+RsSbZL2JEYVC6jMUw1qJfDCIuGOSoM4SSfCfJxlqkdJAKQjm2ISgSfTEljhI18iLikuhxGW6OUWJnXgiWAnuBOM1O6Qn1qDDCPkRyDAHDMmiSKiheiEz2cufn3m/WHi1vbe+Ib19UWyRXHzdDzjhsiphN/KuRpOK/vX3TMslDDnvDvSoejKgKxAA64Bq+k2ZPs+S4c7SaCV10jQgO+sig6269u14/o8YFQ7mpr1liVLTfi5p+k0qak0HUBUIosQGdcY/YF/fU9MR0GwQTIjKleaUsgyYpheKFTNpuuH96e5c88m5DPDWEaqEz5lfJVcdOlyUcnEhSTHJaJnnIIbwp6LQbyAlol1pgNKBDNMbo4QJTLYQHIiV1xXV9URKTSG1RrRT4CrSPS31XvUZWYtGY1BbXal+XxB4yiSXNiREcVC1h7AA+C0MbIXbwmbhvzGAyojqIthj3g8iO1Wwdsp8NIQcKxQuZNHgCYfn7+kZ5bFWD/Gvbv6MslS6bXLxsmlx6RK1UFf571gwhqSQ5LZPYKRdop90c0XQRhAxAmgiLEf2ACMFxqPjRKqOepnjaxhAViMRAkGBooslhGrCkGREccYsagRMjOBAo8NxAIO3q3qU+GxiC4bVBoztDmBifBZMwxhfUumr7DWgkZKyheCFZTSQakze3tqtgefa9JvGFIrod0fMT5pTLZUdMk5PmVTA1RFLKQL1N8JrYsyWxUy4MuujHgvb9ECYqZPYKHrff3S+1hG1oXofUEQY+Js82ggBBAzpMrE6e7JzYhRcCBfcEERSP4KCvjK1A5pbPVYGjxl9rfjx1lQzuH6InceAkIamA4oVkpWB5Z0eHPL2uUf7+XqO0efrSQmBmWZ5ccHiNnLd4qkwt4i9YklqG606b3LMlz5ynowQgXhApqcivUHEBMyxAbxaIGSO1BIGD6xkCZ6DZRoNNdjaMt/EITiSsnXnNJnO/CI4BIja4rsPqUD8L5xSRdELxQrKmkdxb29vl+Q+aNcLS0hOI7ytyWuTsBdVy/pKpasTlhGcyHoykO21y23xELrTSKCYaSYGAQdqmpbdFxQfKkX0+n8RyY+qHSRY48MYgypLYV0UnO++N4CRWDiWag2G0VZGDCI6jL4KD7rvo32JEi4yeLUV5RXp9ziki6YTihWQs3b6QvLqpVQXLSxtbpGfvcETgspvltEOnyFkLq+WYWaViYcUQGWcGapuf2J02uW0+0kGInkwtmKqve3r26DGIwswpm6OCpjfUq9EW9FaBkEGkBaIGrzpjyNeuaR+IEERRjMGHMNsmTnY2zME4ttXTKk29TWrGhShRQ3BOTEUQRAwa3aFHDEQUIkf4LKSFOKeIpBOKF5IxRKMxeX+PW17Z1CIvb2yV1fVdmiIyKMu3ysfmVcpph1XKcQeVi9XMEmeSHkbSndZom4/KocTUEgRKe2+7vkKkILqCSdAzS2fKVPNUFQ+oAAKYVwSTLyI2lhyLvofYgJBJHnyYmKLCPl/Qp5+JBZGZqoIqrRRCTxmkkQodhXqfWvUU6NboD0SUkY7a3zlFnG1ExgKKFzJhwV+UO9u9smJru7yxtU3+tbVd2veWNRvMKs+Tkw+ulFMPrZRFtcUcjkgmBEN1pwVGCgZRFPRcMVJLKE3e3L5ZIyjoeIuqHYib+p566Qp0yZLqJZpO2tm1U5qDzZriQUQE50PIwP8yt2yupo+SBUViiqrR0yi73Lv0PqcXTtfOujgWQgX34Yv4xBLsm5mU+O8R0Z9ERjOnaDj/DyGjgeKFTKjIytZWj7yzo1MNt29ta4/PFDLIs5rkmIPK5MS55XL87HKpLekzLhIykRisO62B4TGBryQcC8dTSxu7NqoPZU7pHO29grJlNIhD07n67nrZ1r4tXpKMBakfLPg8CB0AYTDiap8EMYKxArgXCByIG9wfOvAaAx7RrRfbEs3AY+3/IWSkULyQtNHjD8m6hm5ZvatT1tR3ybs7O6XTG+p3jNWUK4unFckxs8rkmINKZWFNEdNBZMKTXAadXJoMP4vR2wWpHYiNUDgkbb42TQshbeQOuTU9hBLnIluRlig3eBrUj4LoC85PTsHA55I8xXkwATGtcJqKEzSxwzm4JoSTWcx9HXlzTCoqcD+4FiIvMAnvz5DFkfp/CBkpFC9k3BrEfdjolvd2d8t7u92yrqFLtrR6BJHoRBwWk4qVpdNL5IjpJXJ4XbE4rAOMqyVkgpNcBo2ISIO7QZu4QYyU5ZWpiIG3JdIT0cgD0kimsElCsZDYTXY13ppzzOIOutXTgv0BR19rfpAsUIaa4pwoILTk2eLQ0muIoubeZgn1hLTjLuYVaUffHIkLlwMZsjga/89oIzpk8kLxQsY89bO7y6dCZUNTj2xocsuGxh7Z3t67j1ABNcUOLV9ePK1YlkwrksOmFrIyiGQFyWXQje5G8YQ98e6zECb4soYhF6IEFUboXovICjrdYh1iAa32EaWAYRa9WHCOkY5KjrwMJjAGEhAQRRioiFLrxC68EDBYCq2F/cTE/g5ZHKn/Z38iOmTyQvFC9nugYX2HV7a19moEZUuzRza3eNSz4g32dbFNpqrQLodWF8phU11yWHWhLJpWJGX5/EuLZC+JZdAQB1XmKu1Oa4ASZFTyaHO5oEeFByIxQNM7lry4ZwbCBtOgS+wlfZOn9846MsQLrgXQuj9ZYBgCAkuTt28itBpofR3S4+/Rfi4QM4i4NPY0ai8kZ0FfGTYEkVFynTx5eiz8P/sb0SGTG4oXMii+YETqO71a8bOrw6tiZXtbry4NnfhLaeDz4FM5qCJf5k0pkHlVBTJ3iksOqXJJeQGFCpmcoFcLIgxI0SSCCAxEBMQBSpchIiKeiGzr2iYlthLJz8vXCiRUGkFYqLHVYpeurq4+nwqqjfb2eMEEafhsZpbM3OfzIQwQyWl1t6qQwTkQRkhNoe2/zi2yFWgqC9VKSBnhnrAP936gQxZRxZQ8nfpAIzpkckPxMonTO229AWnq9sueLr80dfs03aNLp08aOn37lCUng8qf6WV5MrsiX8XKQRUF+lpX6mTqh5AEPAGPmmMR+SjNK41vNwYatva2ajQEKaJpRX1GWphvYfjFF39VfpX2YTGmPkP0xKuNgh7t86LVRjmiYgf7EoEwQMpJhyYW9lUlgXxbvi7bOrZJhbNCq5yMvjO90hcB2l+M0miUfeMe8QqzMiJREHEHGtEhkxuKlyzDH4qo6GjrCUibJyCte1/RLr/Z7dfXFjfW/RKKDBI6SaDAblYxUleSp2XJeI/5QDPK8jSSwlb7hAwOxALKm9GDBeXHKEdGX5VpxdPiQxLx5Y0vc4gHNKVDV1tEKNp62/QLHhEbREQQuUAaB/sRNUGkBOko+FNQGYReLYNVG2HdbDarURgVQ4i8QBQhGgO/DXrK5NvzVXAYU6Vx/f0tacb5EESI3OBn0tRRjkl/JqTF0EUY/WkSm+gRMqHEy5o1a+SnP/2p7Ny5U2bPni3f+ta35KCDDhrzc7IxMuIJhqXbG9I2+Fi6vCHp8gX1tbM3qGXFnd6gipWO3oB0eNAOfGC/yUDk5ohUFNhlSqFdqovsUlXo0GGFU4sdaqStKXJKoXNgkx0hZHjhsmrPqnh6Z07JHE3tbOrcJO3+dlk0ZZF+gSe28AeBjoBsbN0Y/9JHmgdVSbZcm+TZ8rSVP45HN114RZDWwXEQIRBEiO4km1+xDk9LTWGNihdEbND+HxEb9HDBeRA46C0zFiXNmFCNRnrGaAEIJQgm3Dcqp/A6vWg6U0VkYoqX9957T4477ji54oorVIDcf//9ctRRR6k4qampGbNzJgpoVe8LRcQbDKtfpDfQ9x6CojcQ1nJhvPa9j4gnEBKPv2+72x/W2TzofeL2oTlUeMDqnJFgMeWoEbZvseprpcsuFS6bipVK1971ApuYOfOHkJSAiAuES2Kapq6oTlM62zq3yQctH8j8KfP7RR8gHJC2iRMTjaZAVCASgpQTypuxjkgIPC5oHgcRA+MvPg/XSza/GqZZLEhTDdQfBhEcREUSDcX7U9KM/SgJN5lM8egSgMgqNBVqJAf9awby5hAyUnJi2vM5NVx88cWye/duef3113U9EonI3Llz5eyzz5Y77rhjzM5Jxu12S2FhoXR3d4vL5Rqzn+fWJ9+XTc09Kkx8oagEQnjtW1Bhg8nGYw3m8xQ7LVLosEiRwyouh0XXi/OsUuy0xt9DpJTk2aQkz6pDCZnOISR9IJ2zon6FpoMQXUkG3g/4Wo6pPUbK88v7fekbaSNDYGBwItr1A0RJUDKNFBREC47FXCLjGujCW1tQK0umLhkwGoL0T2JUxQBRFYgnfCYEx0C/P4wmdTOKZwzZwRc/2xu73uhrpGfet7oIqTOIr2OnHaveHUL25/s7pZGXF154Qb75zW/G16HEzzzzTPnnP/85pueMF+gGiy6ww4F/93lWszZXg6nVYTVLvs0keTazLvlWszhtJimwW6TAZlZfST4Wm1nFictuEZfDrK92Cxu0EZJpwEsSjAYH9XKgckinOuea+hlbd3Xt0lSLMSkar73h3niVUoe/QwUNIi4QLvCk4DqOoEPTRfC0wNsyUHQkuWme4Wcx0lboLYPBjCxpJplAysRLb2+vtLe3S3V1//wo1uFlGatzQCAQ0CVRuaWCa086SFM6EBToBItXuyVXnHsFCrbhvc2cy8gHIZMYeDysuVYVJgNFXrAd+yFyjJb9hi8EqRyYXdFlF34RREtg5oUhVwca5pg06oLIDdI88JBADMFXY3hXBmr4ltw0D43hkidPQ8gkjzQYbUkzojJqJg64pcxcts9+bMf+Ec9fImQ8xUso1Dejxmbr/x+6w+GI7xuLc8Dy5cvl1ltvlVTz0bkVKf8MQkjmA6EBwYFp0AOJF0RZkN7RrroJLfsjElFxgS67Eu1L1UAsQFBohMXi0C64EB1IFSHiAiEwzTVN2/rDuzJUwzejaV6y52Wk0ZnhSpqN66JfDQy7A1U2YT+Mw+zrQg6ElLU0LCgoEIvFIh0dfZ0gDRBZKS0tHbNzwE033aT5MWOpr68fo5+CEEL2j5mlMzW9Ax8Keq+gOgivWMf2qYVT+7Xsx5d5JByJR1IgSsISFqfZKWaTWY9F1AVddiECjK672oV3r7cEIgPXHk4YYL8KoaTjjOgMIiwQIhAfeMX6UGXSEGDw1Ozo2iHbO7er4IHIgr8FPV7gAcIrDMgwMCNyRMiEjLzAq7JgwQJ555135Itf/GJ8+1tvvSWLFy8es3OMSE1ytIYQQtIJqoqWVC+J93mBXwWpIkRcIGzw5Q7jqjHzByIBvwMhXJBaQfdbpIkgYlBJhAZ0qERCtRF6saxtXKuiBtEZREtyJVfnFO1Pw7fESMxg0Rmsa3l1UrQmeVq1Ea3RqFLQr8IK54xFp15CxsWwe80112i58/XXXy+HHHKIVhDBkPvII4/Ej7nnnnvkz3/+szz//PMjPocQQjJGwExdopEHfJkjfYKUUlysJMz80V4se7vpws+CkQAa9XAUy6ySWRLD0NOe3WrqhZiBHwaN5SAODI8Lhj2OBEOYIM2EaA2iOuqnyTVp5CZRYBhRlcGOSZxWbYCfBzOWkH5C2gjvk0UPIRNWvCB6gr4tiJpMnz5dTbdI8Zx33nnxYxoaGjTSMppzCCEkkzAESyL4IocIMAyy+HJH0zjDzwIdgv0YCwBxsLV9q/ZHwSgBNLA7qOQgFQWIzBjCYLhGckZlkxp2g169HiIlaJAHs29yN10wUFTFOAYVSsnTqvfpDRPo6w1Dgy7JmD4vBq2trSpSIEaKi/v3GMD2pqYmWbp06YjPSVefF0IIGUuSUy7tve1q5kWKBWklo6Hc+ub10tzbLJV5lep7QdQEBl74XeZXzo83g0MkBccP1L12wM/y96WtjM8yoi0QQfC56Pv97A2Dz+n0dmr5NQQYPjM5qkPIhOzzYlBeXq7LQKBr7kCdc4c6hxBCsoHk8mVEXjTzExNt8gZR8UHzBypcphX2zUOC3wUiANEcjA1AVc+CKQv0ehAiKIEeqFQ6Mb0DwYH+MWh6B6EEYy6ay0HAABU3vnZ9b3TcTfbAGFEVYKS+jGNCkZB0+DrUpIu+NUif4Wcb7YwkQgaDgxkJISSNJBtkZ0Zmxn0oiJQ09jZKTUGNVORVqKcF4gH+GYgONKWDmIGnBmIGImKgUmlcOzG9g88xPDYAvhREcozmdpoeivS1p4DPpcnbpPsN8QK/DYQUokDqe/F1qODSY6JRXcd5uCdEcCBgwGhnJBEyGBQvhBAyATDSPPCGGM3mMIUZIwNQXqxRGURFzHlaTp04kBFVQBAKgzWSg+iAmDAqmyBMkGKC7wXDHiFicA0jYgMRhPfGlGl8VmK/FmOOEtJW2N7S0yKBaECrifRaYZ9eG9VRiBjtz4wkQoaC4oUQQlLMYE3hhkINvbYCFQeJnXohUiBednbuFG/Yq71eMK0aU6wHK5U2BjMijQOBgwgJojWNoUaZkjdFHFaHiiMch8/CtXF8i6dFmr3NclDxQRphga8FQsYes8uG1g19Yw4CHvFGvNqPBmmkYCyo10AjOlwPoqjfgMYhUluEjBSKF0IISRGJ1T2DlSKPplMvmr5BCIUjYY1q4LrYb6SDBiuVNlJBG9s2agoHggiN4jDgcY9nj+TEcmRO6RwJRAKyo3OH9o6BL8Uf8Us4FtZjIHhQxo31+q56/SwIGYwxgHcGPyf60yByhIG6WPIcef3SUWCw1BYho4HihRBCUsBgzdtGa1pFQztMkkZTOvR06fH3SHewWyw5Fqlx1ciiKYvUEDtsqXQOhsb+W9zg+HJnuXpU0FMGIiPsCatJuK64TgWM1W/VtA8iKk29TdrvBREamHMxXRriCT8Loj86wiDg0bQShNWmzk1SG67VqEtilGWkM5IIGQqKF0IISQGDNW8bqWnVSDUhwoF0kDauC3apGdZitqggQvQE4sAQAoP5SbAOn8v04unqRYFQ0W65ubnaAA+denEMoiGocjIqh4x0k85RsjrE4/foOcbPhH3dnm5p87Wp/6XIURSfeh3yhWRT+yaZVjRNe9IYDfFGMiOJkOGgeCGEkDEmubonmaFMq8mpJhhm8Xp4zeEqYOBHgWDBIMbkEueB/CRaFh3sVbGCgYnwqSR7cBBlafY0x68BsB1VRTDnFpoKVZz4gr6+L45cs6aIsN8X8Uk4HJb8vHy9DiZdI3VUZ62TDYEN0uXtiqeTEidYE3IgULwQQsgYk1zdk8xgptXEVJOWMcdEq4kQ7WjqadKhjEXOIk3tDFTinOgnSRRBEC5oFofjEEVJFg84D/4V4z0iLwCRFFwHIgn3Cq8NuvuiBwyEC66DcmncE8zAeI/UFFJR8MbMLJ6p56G5HkQLU0VkrKB4IYSQMcZItyQKgUQGM61CbOgQxphIe6hdIx3wu8CU2xPrUbGQGA1JLnE2/CTwnCT6bfKt+WrGhYCJxCL9uuka56HMGRjjCgCOQYoIjfB2dO8Qe65dP9MWskntlNq4EENUBp+FcQMQVLGcmLgsLjUHwwcz0ARrQg4EihdCCBljkucWJTOQaVX7uvja1JCL6AbEDSIsiGZ0BjpVJEDswKRrREOwDZEOmGSNdv2IcAzkt0HKCNEgCAxcE6XMEFHJPhQYcHEtiB4cj3JpCJ9ZxbPUYwOh1NDdoIIGnh0IF5Rs4xq4t7K8Mp2IDXMx+tSg3JtzjchYQ/FCCCEpAGIgUQgY1UaDmVYhCgzRAZMu2vcj/YJrQEQgegLBglQMIifwumA8ALYDw0+Ccwfy2+AzcR5EEe4JwmkgH0riuILGnkZNB9W6ajWFZByDa8N7g3vA58NEDMFSUVChYkYb2e1NNUEkMepCxhqKF0IIGYe5RfC4QDgMZlpFNRBKoJEqwnEOs0PMZrP6XXZ37ZbGYKMadVG1Y6RhIAyQUoKAMCZXI400mN/GiI4gooMSaIiQZGFhjCtAEzsIKQxVNOYbJR4zo2SGGojRHwbVUBAy+BncEbdGjnIlVzsDI1pDyFhD8UIIIeM0t2ioDrs6Kdrv0UgHSpoNEMmoK6mTza2btcwZ4gQiAeZZiBt01oU4wnkQRSPx20D8DCRcEoGBFwLIiOzssz/XouknCCpEZSDSYOTFveFceGhYWURSBcULIYSkmKFEglEVhBQQPDLooosut/COGCkYbJtaOFX7sUAUoBwZAmWw5nej9dscqOkY14JIQ4+Y0Y5BIGR/oHghhJAJ0oW30lmpXhcYZJt7m3VqNCp2jOgHfCWoFkI10VDN70brtxkr0zEh4wXFCyGEpInEqiCkloqdxZIbyJW8WF9DOJQdI5qB6AuiGYjEIOqS7EExgFBB6gbnlTnLVGCMxG8zGCMVQQc6w4mQ0ULxQggh4wyECrwrEBqGEEEEA03o8OUPkH7RLra2fCmx94kE+Etw7kBmXAiITm+n9nKB7wRiAwJiSv4UjczsTypnJKbjsZrhRMhooHghhJBxIjFCgegFSpEhLhBxwRe80dEWaaMplil9Lf2d5doYDvsRTVFxkuRDwTnowItuu0gzYVAjqpQSBcT+pneGMx0f6AwnQvYHihdCCBkHBopQQFy0+9tVrCDqgiodiACIFuxDFAZiITHSAdGT7ENBmTKugWsW2gpVwICxFBADiZ8DmeFEyIFA8UIIIePAPhEKU19judbeVtnj3iONnkb1t0CsYAQA/C0zimbsEzVJ9qGgkZ0hdGDsRfRmOAExktLt5GMGOmd/ZzgRcqBQvBBCSIoZLEKBfiuYU4Qlz5wn1lyrftHXu+vjhteBmsgZPhR4ZtAoDj1eagpq4umnwQSEkbYaqh9LsvkWAxYxNRpl2khfJZpx93eGEyEHCsULIYSkmMEiFEgPwYTrsrqkxduiQsRhdWg7fskRbUoH/8pQQBgY840GwhAQ6Mzb4G7QWUVGB1y8Yv4QOuTOKpmlxyemtnQWUnerdAW69D7QnVfHC4xxTxlCRgvFCyGEpJiBIhSIxsBga4gTRDbgS8FYAHzZQ2wM5BdJ9M6gUgleGYiXoSZGQ0Ag2lLfXa/XQloKURQIHm/Iq9sRBUIfmcTUVpO3SQUO2vxjVhEWXH+se8oQMloYyyOEkBRjNHzDFzqAIIFo8If8KiLwHiIEQibuJ4lG9XhEZwbzzkAIQbhgYjSqkjAxutXTKrFYTMWPMWkaogKToCGiEOlBugjn4RXr2L6tY5sKHCO1ZYgr9IwBeMU6tid6aTAIEhEYCCTsg8DRnjX2YpZJk5TByAshhIwDiEAgvbKxdaNGMzCbCNGSdm+7RjMMoy2ECaqHcCzEDQSGipsDmBiN6yAlBUPwQLhsLjUNq5fFURJPdUFAmS19XxMQWYiwGObbRC8NPmukM5wIGQsoXgghZJyA+DCwmq36pQ+zrcT692tB2TP8JugBg9SQ4TExmtiNdmI0xMtwQHBgMVJbup6bq6klCCijy69hvh3IjEvBQsYLihdCCBkHkO7BTKK55XPjEQqIE0RKjHQPohtIzRjTnFE9lNjwDROk92diNLZBBLmDbikzl+1zHrYjQoNhkEhV4fMMbwwqoQpNhRr9QQ8Z47o045J0Qs8LIYSMc6m0kdaB3wTpHogYDGJEibQpx6QiIdl4i3PhY0E5teGdSQbbkfpJjoBgHVGZSCSinhSUScMXg1esYzv2VxVU6WdCKOGz1A8juWroNfwyiV6a/THjGqMRDO8MIfsDIy+EEJJi8GUNYaHpHtPA6R6ICSyV+ZXxDrmJGB6Torwiifqio67ugScFaalmT7OmqiBG1J8iuVJXVKf7k2cZIUWF6A8EEaqhIDj2Z8Aj4PBGMpZQvBBCSIpIbAqHOUbwruCLH+bcxC9+iA8jKgOfyUAYHhNU/SBqM9SwxIHA9pklM7WiCd18jRLsqvyqfucNNsvoQMy4HN5IxhqKF0IISQHJ/ViQGoKIgYcE2xLTQoiaoNMtGKrhG4SLISAOpLpHS6ylr1R6MAZKPe0vHN5IxhqKF0IISQHJX9hIv6CKCAtMuZ3eTinNK90n3TNQw7cOX4f4g35N4yAFldiiH1GY/RFTxrUTu+WOJg00Uji8kaQCGnYJIWQcvrCNXiww48KUix4v6L2S2MzN8JwkNnxzB9xa6gwfjMvuUtMsoiAQHYYYGQkDNbfDK9aN9FYqGMnwRuzn8EYyGhh5IYSQcfrCNgQMfCcoe8YMo+Qp0MmeE/R9gdiJT6Pem/ZBaglVQBAeuA6EzUSMfnB4I0kFFC+EEDLGDPeFDVMuBMNQKR/DJBuMBvcRHYjI7OzaqcZbRGWmFk6VmvwamVnaZ8gdbfQjcRTBWIsXYzQChzeSsYTihRBCxpix+sIeSHRAuKxvXi+9oV5NQeWZ88Rpdkp9T71Of15SvWQfATOYmBpqFMFY+l84vJFknHhB34J33nlHdu7cKbNnz5ZFixYNe05XV5esXLlSQqGQLFy4UKqrq1N9m4QQMqaMxRf2QKIDERcIl+qCam0yh4kD6MaL6yGNtK19myyZumRYMdVvFEFs31EEY2ngTe4fM9LybkLSIl78fr+cd955snr1alm6dKm8+eabcvrpp8sDDzwwaC+Db3/723L//ffLvHnzxGQyyWuvvabbbr755lTeKiGEjClj8YWdLDrcfre0edukyNYXWYHIcFldOicJoNy6xduixyV7YJLFFKqd0KwO0RaMAUgeRYD7hvdmLJ8HhzeSjBAvP/3pT2XNmjW6VFVVycaNG2XJkiVy3333yVVXXTXgOYjObNq0SZzOvjHszzzzjJx55ply8skny1FHHZXK2yWEkDFlLL6wE0UHIjBGszpUIUFsJIoUfF6Hv0OHKA4lptBvBtVOqGBC6im5aV4qDbwc3kgmfKn0H//4R7n44otVuIC5c+dq5AXbBwOixhAu4IwzzhCr1Srr1q1L5a0SQkjKMGYZ7c8Xd2L5NPwvwXBQhQUiLhV5Ff2uiVQQZh9hwONQYgrVSZhjNKNoxj4zlADLl8mkFS/wq2zYsEEOO+ywftvnz58v69evH/F1Xn75ZQkGg3reYAQCAXG73f0WQgjJFgzRcVjFYbKgcoHYTDYpzy/fRwwholLhrBiybBoYk6eHG0WASBEhGZ82Wrt27bDC45RTTpHKykrxeDxafldc/O/eBKCkpES6u7tH9HltbW1y9dVXyyc+8Qk5+uijBz1u+fLlcuutt47wpyCEkMwEYuXgioM1jQRzLjwuEDaIuEC4wB+DcumRXIfly2TSiJfNmzfLs88+O+Qxhx9+uIoXu70vDAkRk0hPT484HI4RVRyddtppmnKCgXcobrrpJrnuuuvi64i81NbWDvsZhBCSaaAMGuXQqCqCORceF6SKagtqB+3zMhAsXyaTRrxceOGFuowECBQID5RIJ4L1mTNnDitcEMGx2WwqlvLz84c8HsdhIYSQSSNgpi7RqiKYc+FxGS5VlAzLl0kmk9KEJqqEHn/8cYlEIrru9XrliSee0O0GMOI+/PDD8XWklE499VSxWCwqXAoKClJ5i4QQkrFAsCCCMlrhkuylmV40XWYUz9BXrLPvCpno5MTQRS5F1NfXy7Jly7Q8GlVGECmNjY3atM7wwtxyyy1y5513arQFHHvssSpofvSjH/UTLgsWLNBlJCBtVFhYqELI5dq/f9SEEEIIGV9G+v2d0j4v8J2gQd3dd9+tvV4QcfnCF77Qz8QLQYJyagOUU8+YMUPeeOONftdC+fRIxQshhBBCspeURl7SBSMvhBBCSPZ+f7OInxBCCCEZBcULIYQQQjIKihdCCCGEZBQUL4QQQgjJKCheCCGEEJJRULwQQgghJKNIaZ+XdGFUf3O6NCGEEJI5GN/bw3VxyUrxguGPgMMZCSGEkMz8Hke/l0nVpC4ajcqePXt0vEBOTo5MZowJ2xjVwFEJfNbZAP+b5nPOJvjfc38gSSBcqqurJTc3d3JFXvAD19TUpPs2JhQQLhQvfNbZBP+b5nPOJvjf878ZKuJiQMMuIYQQQjIKihdCCCGEZBQUL1mOzWaT//7v/9ZXwmedDfC/aT7nbIL/Pe8fWWnYJYQQQkj2wsgLIYQQQjIKihdCCCGEZBQUL4QQQgjJKLKyzwsZGWhc98Ybb8ghhxwiCxYs4GMbYzwej6xatUp8Pp8+36qqKj7jA2Tr1q2yfv16qaiokKOOOmrIJlZk/4AN8r333pMdO3ZIXV0dfzeMA++8847+t33SSSfpf9tkeCheJinBYFDOP/98WbdunXzjG9/gL6gxZvny5fKLX/xCZs6cKXa7XV5//XW5/vrr5fvf//5Yf9Sk4eabb5Y77rhDjjnmGPnwww+1A+c//vEPKS4uTvetZQ34Y+ZLX/qSCpjp06frl+qMGTPkySeflNLS0nTfXlayadMm+fjHPy4dHR3y0ksvUbyMEP7ZMkn51re+JQsXLtRfTGTsqayslA8++EBeffVVee655+Tpp5+W//mf/5EXX3yRj3s/ePnll+UHP/iBPPvss/L888/rs+3u7pZvf/vbfJ5jCKKEf/zjH/WPmieeeEK/WDs7O+Wb3/wmn3MKCAQCcskll+jvYzI6KF4mIc8884w89dRTcuedd6b7VrKWq6++ut84ho9+9KMaIVizZk1a7ytT+cMf/iDLli2Tj3zkI7qOZ/vZz35WHnzwQZ1lRsaGk08+WQ477LD4OubDnXLKKfzvNkVAFOKPyE9+8pOp+oishWmjSQYGVuKX/l/+8hfJz89P9+1MGuB9wV+wiV8MZOTA55L87ObPn69D7Xbt2qUpDjL2RCIRjXotWrSIj3eMQWQLf0iuXr1a2tvb+XxHCcVLhvPmm2/Kzp07hzzm3HPPFYfDoX+hXn755fIf//EfcuSRR47bPWYD8FisXbt2yGOOP/549WEkgy/YT3/60/Kxj31M/4olowcpopKSkn7bDA9GV1cXH2kKfUbbt2+XRx99lM94DGloaJDPfe5z8te//lWjWxQvo4fiJcOBoW7FihVDHnPqqaeqeLn//vs1l33NNdfIQw89pPswehxfzA8//LBcdNFF43TXmcfmzZv1F81QzJ07dx/x0tvbK2eeeaZYrVZ55JFHJCcnJ8V3mr0t1FG9lYixDkM0GXt+8pOfaGoZEYI5c+bwEY8hN9xwgxx88MH6hyeW1tZW3Q5PnMlkiqdHyeBQvGQ4X/3qV3UZCWVlZZrTRuWAAcQLvpj/9re/UbwMwTnnnKPLaDCECyIv+KXEqpj9Z9asWZoeSgS/9PGLHuW8ZGyBaEHUBellRgvHHqQ8gfEHEX5XAFQlIp1P8TI8nG00yZk3b56cd9558sMf/jDdt5JVeL1eOeOMM9Tn8sILL6hwJPvPPffcI1/5yle0N5HxLE8//XQJh8NafUTGjrvuuktuvPFGefzxx/UZk9SDnjqo/ESp9IknnshHPgIYeSEkBVx44YXy1ltvye233y7//Oc/+4lFmh9HzxVXXCF33323RgFgOMezRRk6FjJ2oHrra1/7mlx11VXqMzLSy0g7wztHyESB4mWSg7QGSvXI2FJTU6O/7F977bV+288++2yKl/0AniFUvfz617+Wt99+W/vooIILPiMydiCSdfHFF2vkMNHjVVRURPGSQvLy8vS5s7vuyGHaiBBCCCEZBZvUEUIIISSjoHghhBBCSEZB8UIIIYSQjILihRBCCCEZBcULIYQQQjIKihdCCCGEZBQUL4QQQgjJKCheCCGEEJJRULwQQgghJKOgeCGEEEJIRkHxQgghhJCMguKFEEIIIZJJ/H9ytAABOhp3FgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "xNew = np.linspace(-5,5,100)\n", + "model = sigmoid(xNew)\n", + "plt.plot(xNew,model)\n", + "plt.plot(x,yJitter,'og', alpha=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "72ed6164", + "metadata": {}, + "source": [ + "This plot illustrates the model's core activation function alongside the empirical distribution of the Iris dataset. \n", + "\n", + "* **Sigmoid Activation Curve:** The green line represents the non-linear transformation $\\sigma(z) = \\frac{1}{1+e^{-z}}$. This function maps input features into a probability space between $0$ and $1$, providing the mathematical foundation for the model's confidence levels. \n", + "* **Data Distribution (Jittered):** The green markers represent the actual feature values. As binary classes are constrained to $\\{0, 1\\}$, random vertical noise (jitter) is applied to the data points to prevent overlap, revealing the density and separation between the two classes.\n", + "\n", + "By overlaying the Sigmoid curve on the jittered data, we can visually inspect how well the model's probability estimates align with the observed class clusters." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4b4fc484", + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " # Clip limits z to avoid exp overflow\n", + " z = np.clip(z, -500, 500)\n", + " sig= 1/(1+np.exp(-z))\n", + " return sig" + ] + }, + { + "cell_type": "markdown", + "id": "d5d9c6e0", + "metadata": {}, + "source": [ + "## 4. Cost Function: Log-Loss (Cross-Entropy)\n", + "This function calculates the error between the model's predicted probabilities ($p$) and the true binary labels ($y$). \n", + "Probabilities are clipped using a tiny epsilon ($\\epsilon$) to prevent mathematical undefined errors (like $\\log(0)$), which would break the algorithm." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bc2a760a", + "metadata": {}, + "outputs": [], + "source": [ + "def logLoss(y, p, eps=1e-12):\n", + " p = np.clip(p, eps, 1-eps)\n", + " loss = -np.mean(y*np.log(p) + (1-y)*np.log(1-p))\n", + " return loss" + ] + }, + { + "cell_type": "markdown", + "id": "8fca79ab", + "metadata": {}, + "source": [ + "## 5. Model Training via Gradient Descent\n", + "Instead of solving an equation directly, the model learns iteratively. \n", + "1. **Initialization:** Random weights ($\\theta_0$ for bias, $\\theta_1$ for the feature) are generated.\n", + "2. **Forward Pass:** Predictions are computed using the dot product and the Sigmoid function.\n", + "3. **Gradient Calculation:** The error gradient is calculated across all samples.\n", + "4. **Update:** Weights are adjusted in the opposite direction of the gradient, scaled by the learning rate (`lr`)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ec4b7253", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.83841703],\n", + " [0.1412671 ]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lr = 0.2\n", + "epochs = 1000\n", + "\n", + "# Add a column of ones to X for the bias term (intercept)\n", + "X = np.column_stack([np.ones_like(x), x])\n", + "m = X.shape[0]\n", + "\n", + "# Random weight initialization\n", + "theta = np.random.rand(2,1)\n", + "theta" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "bd0e0175", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimized Bias (Theta 0): 4.309159539504179\n", + "Optimized Weight (Theta 1): -6.028218019470694\n" + ] + } + ], + "source": [ + "# Training loop\n", + "for i in range(epochs):\n", + " z = X @ theta\n", + " h = sigmoid(z) # Predicted probability\n", + "\n", + " # Gradient computation and weight update\n", + " grad = X.T @ (h-y) / m\n", + " theta -= lr * grad\n", + "\n", + "theta0, theta1 = theta[0,0], theta[1,0]\n", + "print(f\"Optimized Bias (Theta 0): {theta0}\")\n", + "print(f\"Optimized Weight (Theta 1): {theta1}\")" + ] + }, + { + "cell_type": "markdown", + "id": "389f57c6", + "metadata": {}, + "source": [ + "## 6. Inference and Decision Boundary Visualization\n", + "Functions to compute continuous probabilities and absolute binary classes based on a `0.5` threshold.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f1156c02", + "metadata": {}, + "outputs": [], + "source": [ + "def predictProba(x, theta0, theta1):\n", + " x = np.array(x, float).reshape(-1)\n", + " model = sigmoid(theta0 + theta1 * x)\n", + " return model\n", + "\n", + "def predict(x, theta0, theta1, thresh=0.5):\n", + " model = (predictProba >= thresh).astype(int)\n", + " # Returns 1 if probability >= threshold, else 0\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "243d0514", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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WqS2a5CIu3DhQvttDCmNHTtWIiMjVeCSmJjoy0MkIvI5BCzoaWDgom9uEYWuMBuqyPlITk6ODBs2TE2PxiwjBCnHjh1TReu0XJjHH39cZs+erXpbYOTIkSqg+cc//uEUuAwaNEhdPIFho+TkZBUIJSXxVw4REZEZeNp++3SeHvJOUKBuzpw5qtYLelxuv/12pyReBCSYTq3BdOru3bvLqlWrnJ4L06c9DV6IiIgoePm05yVQ2PNCREQUvO03J9ETERGRqTB4ISIiIlNh8EJERESmwuCFiIiITIXBCxEREZkKgxciIiIyFXOux94MbfY3V5cmIiIyD63dbq6KS1AGL1j8Ebg4IxERkTnbcdR7CakidQ0NDXL06FG1vEBYWJhuz6utVo1lD7jsgO/wPPsPzzXPczDh59n85xkhCQKXjIwMCQ8PD62eF7zgzp07++z58WYxePE9nmf/4bnmeQ4m/Dyb+zw31eOiYcIuERERmQqDFyIiIjIVBi9eiI6Olscee0xdk+/wPPsPzzXPczDh5zl0znNQJuwSERFR8GLPCxEREZkKgxciIiIyFQYvREREZCpBWeelNQ4ePCibN2+W9PR0Offcc8VisfjkMaGusLBQ1qxZoxK+Ro4cKXFxcU0WHVy4cOFp28855xzJysry8ZGaW319vaxYsUJOnDgh11xzjUePqaiokJUrV0pNTY2cd9550qZNG58fZzBYt26dHDhwQMaPH99snYpVq1apAl+O2rVrJxdddJGPj9L8xdE2btwotbW1MmjQIGnfvr1Hj8NjsrOzpVevXjJgwACfH6fZVVdXy6ZNm6SoqEjOOOMM6datW5P3P3LkiPz444+nbb/yyislNjbWNweJhF066e9//7stLi7OdvHFF9u6dOliGzRokO348eO6PybUffLJJ7aEhATbyJEjbQMGDLB17NjRtmnTpkbvX1lZiaRydY6nTp1qv6xYscKvx202s2fPtnXr1s2WlZVls1gsHj1mw4YNtvbt26vP8XnnnWdLTEy0ff755z4/VjP77LPPbGeeeaatZ8+e6nO6bdu2Zh8zZcoUW48ePZw+z0888YRfjtes/vd//9eWkZFhGzVqlO2iiy6yxcbG2p566qkmH1NVVWWbMGGCLT093TZ27FhbcnKy7eabb7bV19f77bjN5s0337R17drVNnz4cNv48eNt8fHxtmnTpjV5zvBvICIiwunzjEthYaHPjpPByyk//fST+uL5+uuv1e3y8nL1BX7jjTfq+phQhw9zUlKSbebMmfZtv/3tb1UQ01zw8uOPP/rpKIPDK6+8Yjt48KDt7bff9ih4aWhosPXt29d2ww032Lc99thjtpSUFFtxcbGPj9a8FixYoIJvXLwJXm6//Xa/HF+wmDNnjq2srMx+e9GiRep8r127ttHH4HumXbt2tiNHjqjbO3bsUEHPO++845djNqMPPvjA6Qc4zllMTIwKapoKXhDk+BODl1PuueceW79+/U778sebhsZTr8eEOjSkUVFRNqvVat+2evVq9SW0efPmJoOXF198UfUCbN26VTW05Pk59yR4Wb9+vTrPP//8s1OwiV9U7733Hk93M7wNXiZPnqy+9FeuXOn074E8h++S119/vdH9/fv3t/3P//yP07arrrrKNmbMGJ5mLwwePPi08+gIn2MEhd98843tq6++smVnZ9t8jQm7p2zbtu20sdCBAwdKVVWV7N27V7fHhDqcs65du6pFMx3PmbavKXPnzpXXX39dRo8eLeeff74cPnzY58cbSrTz7/iZRr5Lp06dmn1vyHurV6+WN954Q2677Tbp3r27fPrppzyNXvjhhx9UXlZjOSx1dXXy66+/uv2O5ufZc1jk2N15dJeb+Pe//13+7//+T+UW3X777WqbrzB4OaWkpOS0xMS0tDR1XVxcrNtjQp27c5aQkCBRUVGNnjMkQC9btkwlRX/11VcqMERS6a233uqnow6d9yY+Pl69F66faX6e9TV9+nSVsPvll1/Kjh071O2bbrpJJZWSZwn/06ZNkyuuuEIllbtTVlamGk9339H8PHsGidE33nij9OjRQ26++eZG79e7d2/ZvXu3fP/99+qCyRjz58+X559/XnyFwcspmPWCD7sj7XZMTIxujwl17s4Z/oHgF1Rj5ywyMlLGjBljv52amir333+/fPvtt1JZWenzYw4VeG9wPl1/LeH94udZX/g843OtefTRR9W/g+XLl+v8l4IzyB43bpya3fnee+81ej+tdL2772h+nj2bqXjDDTfIvn375IsvvmjynGFGUpcuXey3hwwZIpMnT5bFixeLrzB4OQWR5aFDh5xOjvYrqLHpuC15TKjDOcO0OvzDaM05wzLsaGQxlY/0e29wTh2H49D1jm5jfp59C71daBzy8/N9/JfMP1V67NixEh4eLkuXLnUafnaFKbodO3Z0+x3Nz7NngcvatWvlu+++a3aqdGPf0b78PDN4OeWyyy5TXV1oWDUffvihjBgxwt7tWFBQIAsWLFA1Mzx9DDlDDQz8ckKvieM5S0lJsXf/osHEed6/f7+6nZube9ppRH4AcjEyMjJ4ilsBv4xQzwGQR4TG4KOPPrLvx7BGeXm5et+o5VA3B/V2ADlxrsMWGBYtLS2VYcOG8TQ3E7jAN99847aWzvbt251yh/AdjdvajyX0LOIzP2HCBJ7nRuBcYagIOVkYAnIX6OEHDr6jtZ7vY8eOOe3HsP6SJUt8+3n2eUqwSdTV1dkuvPBClZ2OWS1/+MMfVCY7ZgJoMFUXpwyzMjx9DJ3uzjvvtLVt29Y2a9Ys2yOPPGKLjIxU0yA1paWl6jy/8cYb6va8efNUTZinn35a3Q+zNJDZjgx3atyaNWts//rXv2zTp0+3hYeHq//GJT8/334f1HPArDnH2XLR0dG2Rx991PaPf/zDlpaW5rSfTrdz5051XvH5xOcWn2vc3r17t/0+V155papPAgUFBWpK+kMPPaSmnz788MOq7tFNN93E09uECy64QJ2n1157zf5ZxsVxdhem9qOWiwazXvBdc/nll6vPNt6D7t27+7T+iNndcccd6vsCNcwcz7Nju/bRRx+pz3pOTo66jc/uddddZ3v55ZdVfamBAweqGlMo1eArrLDrkBSKbsg5c+bI+vXrVVLXzz//7JRh3bZtW5k6daq9V8WTx9DpXnrpJfUrH70vGJfGOfzNb35j349cAJxnDGMAEsVQTRM9Anv27JGhQ4eqRLDMzEye3ibgs6hVvbz66qvl888/V/89ePBglS8AEydOVOPTmjvuuEPNFPjkk0/Ur6uXX35ZvRfUOHwmtXOLc7VhwwZ1wfcEziVccMEFqgcL8D2BHtt33nlH/brFe/HZZ5855XXR6TB0gZ5WDGM4ioiIsH/n4nrKlCn2fcjDQM/ia6+9poZAcI7xGWfPeOOQU4jvi61bt6qLBiMKqIYO+O7FZ12rjD5v3jz597//rXoXMfR85513yu9+9zvfVdcVkTBEMD57diIiIiKdMeeFiIiITIXBCxEREZkKgxciIiIyFQYvREREZCoMXoiIiMhUGLwQERGRqTB4ISIiIlNh8EJERESmwuCFiIiITIXBCxEREZkKgxciIiIyFQYvREREJGby/wEpzIaPa1t9PQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plotting the empirical data alongside the optimized Sigmoid curve\n", + "xNew = np.linspace(0,2.5,100)\n", + "p = predictProba(xNew, theta0, theta1)\n", + "plt.plot(xNew, p, ':g')\n", + "plt.plot(x,yJitter,'og', alpha=0.1)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "2dd324d3", + "metadata": {}, + "source": [ + "**Understanding the Final Plot:**\n", + "The green dotted line represents the trained Sigmoid curve. It illustrates the model's probability estimation across different Petal Widths. Where the curve crosses the $0.5$ probability mark on the y-axis, the model sets its hard mathematical boundary, switching its classification verdict from Class 0 to Class 1." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.14.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}