You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

576 lines
114 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sl</th>\n",
" <th>sw</th>\n",
" <th>pl</th>\n",
" <th>pw</th>\n",
" <th>target</th>\n",
" <th>tNames</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>5.1</td>\n",
" <td>3.5</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>0</td>\n",
" <td>setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4.9</td>\n",
" <td>3.0</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>0</td>\n",
" <td>setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4.7</td>\n",
" <td>3.2</td>\n",
" <td>1.3</td>\n",
" <td>0.2</td>\n",
" <td>0</td>\n",
" <td>setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4.6</td>\n",
" <td>3.1</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" <td>0</td>\n",
" <td>setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5.0</td>\n",
" <td>3.6</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" <td>0</td>\n",
" <td>setosa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>6.7</td>\n",
" <td>3.0</td>\n",
" <td>5.2</td>\n",
" <td>2.3</td>\n",
" <td>2</td>\n",
" <td>virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>6.3</td>\n",
" <td>2.5</td>\n",
" <td>5.0</td>\n",
" <td>1.9</td>\n",
" <td>2</td>\n",
" <td>virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>6.5</td>\n",
" <td>3.0</td>\n",
" <td>5.2</td>\n",
" <td>2.0</td>\n",
" <td>2</td>\n",
" <td>virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>6.2</td>\n",
" <td>3.4</td>\n",
" <td>5.4</td>\n",
" <td>2.3</td>\n",
" <td>2</td>\n",
" <td>virginica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>5.9</td>\n",
" <td>3.0</td>\n",
" <td>5.1</td>\n",
" <td>1.8</td>\n",
" <td>2</td>\n",
" <td>virginica</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 6 columns</p>\n",
"</div>"
],
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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": [
"<Figure size 640x480 with 1 Axes>"
]
},
"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
}