{ "cells": [ { "cell_type": "markdown", "id": "677c5e27", "metadata": {}, "source": [ "Starting with MLE and logistic regression model\n" ] }, { "cell_type": "markdown", "id": "2520b517", "metadata": {}, "source": [ "Prerequisites\n", "Make sure you have the necessary Python libraries installed:\n", "pip install numpy pandas scikit-learn scipy matplotlib statsmodels\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 69, "id": "2e1f9bfa", "metadata": {}, "outputs": [ { "ename": "FileNotFoundError", "evalue": "[Errno 2] No such file or directory: '../data/lung_SUVperc_COMBINED.mat'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "File \u001b[1;32mc:\\Users\\zahra\\anaconda3\\Lib\\site-packages\\scipy\\io\\matlab\\_mio.py:39\u001b[0m, in \u001b[0;36m_open_file\u001b[1;34m(file_like, appendmat, mode)\u001b[0m\n\u001b[0;32m 38\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 39\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(file_like, mode), \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m 40\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 41\u001b[0m \u001b[38;5;66;03m# Probably \"not found\"\u001b[39;00m\n", "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../data/lung_SUVperc_COMBINED'", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[69], line 9\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;66;03m# Load the data\u001b[39;00m\n\u001b[0;32m 8\u001b[0m data_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m../data/\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m----> 9\u001b[0m suv_data \u001b[38;5;241m=\u001b[39m loadmat(data_path \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlung_SUVperc_COMBINED\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 10\u001b[0m lung_suv_selected \u001b[38;5;241m=\u001b[39m suv_data[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlung_SUVperc_COMBINED\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;241m0\u001b[39m:\u001b[38;5;241m58\u001b[39m, :] \u001b[38;5;66;03m# Shape: (58, 17, 100)\u001b[39;00m\n\u001b[0;32m 12\u001b[0m \u001b[38;5;66;03m# Reshape the data to 2D: (samples, features)\u001b[39;00m\n", "File \u001b[1;32mc:\\Users\\zahra\\anaconda3\\Lib\\site-packages\\scipy\\io\\matlab\\_mio.py:225\u001b[0m, in \u001b[0;36mloadmat\u001b[1;34m(file_name, mdict, appendmat, **kwargs)\u001b[0m\n\u001b[0;32m 88\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 89\u001b[0m \u001b[38;5;124;03mLoad MATLAB file.\u001b[39;00m\n\u001b[0;32m 90\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 222\u001b[0m \u001b[38;5;124;03m 3.14159265+3.14159265j])\u001b[39;00m\n\u001b[0;32m 223\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 224\u001b[0m variable_names \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mvariable_names\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 225\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _open_file_context(file_name, appendmat) \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[0;32m 226\u001b[0m MR, _ \u001b[38;5;241m=\u001b[39m mat_reader_factory(f, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 227\u001b[0m matfile_dict \u001b[38;5;241m=\u001b[39m MR\u001b[38;5;241m.\u001b[39mget_variables(variable_names)\n", "File \u001b[1;32mc:\\Users\\zahra\\anaconda3\\Lib\\contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__enter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 135\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkwds, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunc\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 137\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mnext\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgen)\n\u001b[0;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n\u001b[0;32m 139\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgenerator didn\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt yield\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", "File \u001b[1;32mc:\\Users\\zahra\\anaconda3\\Lib\\site-packages\\scipy\\io\\matlab\\_mio.py:17\u001b[0m, in \u001b[0;36m_open_file_context\u001b[1;34m(file_like, appendmat, mode)\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[38;5;129m@contextmanager\u001b[39m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_open_file_context\u001b[39m(file_like, appendmat, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrb\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m---> 17\u001b[0m f, opened \u001b[38;5;241m=\u001b[39m _open_file(file_like, appendmat, mode)\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m f\n", "File \u001b[1;32mc:\\Users\\zahra\\anaconda3\\Lib\\site-packages\\scipy\\io\\matlab\\_mio.py:45\u001b[0m, in \u001b[0;36m_open_file\u001b[1;34m(file_like, appendmat, mode)\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m appendmat \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m file_like\u001b[38;5;241m.\u001b[39mendswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.mat\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m 44\u001b[0m file_like \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.mat\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m---> 45\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(file_like, mode), \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m 46\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 47\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m(\n\u001b[0;32m 48\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mReader needs file name or open file-like object\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 49\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n", "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../data/lung_SUVperc_COMBINED.mat'" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.preprocessing import StandardScaler\n", "from scipy.io import loadmat\n", "\n", "# Load the data\n", "data_path = \"../data/\"\n", "suv_data = loadmat(data_path + 'lung_SUVperc_COMBINED')\n", "lung_suv_selected = suv_data['lung_SUVperc_COMBINED'][0:58, :] # Shape: (58, 17, 100)\n", "\n", "# Reshape the data to 2D: (samples, features)\n", "X = lung_suv_selected.reshape(lung_suv_selected.shape[0], -1) # Shape: (58, 1700)\n", "\n", "# Load the labels\n", "flags_data = loadmat(data_path + \"flags_combined.mat\")\n", "flags_combined = flags_data['flags_combined'].flatten()[:58] # Shape: (58,)\n", "\n", "# Standardize the features\n", "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(X)\n", "\n", "# Select a single feature for visualization (e.g., the first feature)\n", "feature_index = 0\n", "X_feature = X_scaled[:, feature_index].reshape(-1, 1)\n", "\n", "# Fit logistic regression model\n", "model = LogisticRegression()\n", "model.fit(X_feature, flags_combined)\n", "\n", "# Generate a range of values for the selected feature\n", "x_values = np.linspace(X_feature.min(), X_feature.max(), 300).reshape(-1, 1)\n", "probabilities = model.predict_proba(x_values)[:, 1]\n", "\n", "# Plot the sigmoid curve\n", "plt.figure(figsize=(8, 6))\n", "plt.plot(x_values, probabilities, label='Sigmoid Curve')\n", "plt.scatter(X_feature, flags_combined, c=flags_combined, cmap='bwr', edgecolors='k', label='Data Points')\n", "plt.xlabel(f'Feature {feature_index + 1}')\n", "plt.ylabel('Probability of Class 1')\n", "plt.title('Logistic Regression Sigmoid Curve')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "e66de4c4", "metadata": {}, "source": [ "#to chack data" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.12.7" } }, "nbformat": 4, "nbformat_minor": 5 }