diff --git a/tpot_tutorial.ipynb b/tpot_tutorial.ipynb index 3aabfb921e9368a9efed3d8b7e5758c107be3065..d4730f78a05f6d3efdcc197a7c29a663339ba78f 100644 --- a/tpot_tutorial.ipynb +++ b/tpot_tutorial.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "4b3db991", "metadata": {}, "source": [ "### Run this cell to install commands" @@ -9,9 +10,57 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], + "execution_count": 6, + "id": "9849686b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: torch in /opt/miniconda3/lib/python3.11/site-packages (2.1.1+cu118)\n", + "Requirement already satisfied: filelock in /opt/miniconda3/lib/python3.11/site-packages (from torch) (3.13.1)\n", + "Requirement already satisfied: typing-extensions in /opt/miniconda3/lib/python3.11/site-packages (from torch) (4.9.0)\n", + "Requirement already satisfied: sympy in /opt/miniconda3/lib/python3.11/site-packages (from torch) (1.12)\n", + "Requirement already satisfied: networkx in /opt/miniconda3/lib/python3.11/site-packages (from torch) (3.0)\n", + "Requirement already satisfied: jinja2 in /opt/miniconda3/lib/python3.11/site-packages (from torch) (3.1.2)\n", + "Requirement already satisfied: fsspec in /opt/miniconda3/lib/python3.11/site-packages (from torch) (2023.4.0)\n", + "Requirement already satisfied: triton==2.1.0 in /opt/miniconda3/lib/python3.11/site-packages (from torch) (2.1.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /opt/miniconda3/lib/python3.11/site-packages (from jinja2->torch) (2.1.3)\n", + "Requirement already satisfied: mpmath>=0.19 in /opt/miniconda3/lib/python3.11/site-packages (from sympy->torch) (1.3.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: xgboost in /home/kozlow86/.local/lib/python3.11/site-packages (2.0.3)\n", + "Requirement already satisfied: numpy in /opt/miniconda3/lib/python3.11/site-packages (from xgboost) (1.26.2)\n", + "Requirement already satisfied: scipy in /opt/miniconda3/lib/python3.11/site-packages (from xgboost) (1.10.1)\n", + "Note: you may need to restart the kernel to use updated packages.\n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: tpot in /home/kozlow86/.local/lib/python3.11/site-packages (0.12.1)\n", + "Requirement already satisfied: numpy>=1.16.3 in /opt/miniconda3/lib/python3.11/site-packages (from tpot) (1.26.2)\n", + "Requirement already satisfied: scipy>=1.3.1 in /opt/miniconda3/lib/python3.11/site-packages (from tpot) (1.10.1)\n", + "Requirement already satisfied: scikit-learn>=0.22.0 in /opt/miniconda3/lib/python3.11/site-packages (from tpot) (1.3.2)\n", + "Requirement already satisfied: deap>=1.2 in /home/kozlow86/.local/lib/python3.11/site-packages (from tpot) (1.4.1)\n", + "Requirement already satisfied: update-checker>=0.16 in /home/kozlow86/.local/lib/python3.11/site-packages (from tpot) (0.18.0)\n", + "Requirement already satisfied: tqdm>=4.36.1 in /opt/miniconda3/lib/python3.11/site-packages (from tpot) (4.66.1)\n", + "Requirement already satisfied: stopit>=1.1.1 in /home/kozlow86/.local/lib/python3.11/site-packages (from tpot) (1.1.2)\n", + "Requirement already satisfied: pandas>=0.24.2 in /opt/miniconda3/lib/python3.11/site-packages (from tpot) (2.0.3)\n", + "Requirement already satisfied: joblib>=0.13.2 in /opt/miniconda3/lib/python3.11/site-packages (from tpot) (1.3.2)\n", + "Requirement already satisfied: xgboost>=1.1.0 in /home/kozlow86/.local/lib/python3.11/site-packages (from tpot) (2.0.3)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/miniconda3/lib/python3.11/site-packages (from pandas>=0.24.2->tpot) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/miniconda3/lib/python3.11/site-packages (from pandas>=0.24.2->tpot) (2023.3.post1)\n", + "Requirement already satisfied: tzdata>=2022.1 in /opt/miniconda3/lib/python3.11/site-packages (from pandas>=0.24.2->tpot) (2023.3)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/miniconda3/lib/python3.11/site-packages (from scikit-learn>=0.22.0->tpot) (3.2.0)\n", + "Requirement already satisfied: requests>=2.3.0 in /opt/miniconda3/lib/python3.11/site-packages (from update-checker>=0.16->tpot) (2.31.0)\n", + "Requirement already satisfied: six>=1.5 in /opt/miniconda3/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas>=0.24.2->tpot) (1.16.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /opt/miniconda3/lib/python3.11/site-packages (from requests>=2.3.0->update-checker>=0.16->tpot) (2.0.4)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/miniconda3/lib/python3.11/site-packages (from requests>=2.3.0->update-checker>=0.16->tpot) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/miniconda3/lib/python3.11/site-packages (from requests>=2.3.0->update-checker>=0.16->tpot) (1.26.18)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/miniconda3/lib/python3.11/site-packages (from requests>=2.3.0->update-checker>=0.16->tpot) (2023.11.17)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], "source": [ "%pip install torch\n", "%pip install xgboost\n", @@ -20,6 +69,7 @@ }, { "cell_type": "markdown", + "id": "f0f5a4dc", "metadata": {}, "source": [ "* What is TPOT?\n", @@ -48,6 +98,7 @@ }, { "cell_type": "markdown", + "id": "b48af34c", "metadata": {}, "source": [ "### Run this cell to import all of the necessary libraries" @@ -55,7 +106,8 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, + "id": "c1c41528", "metadata": {}, "outputs": [], "source": [ @@ -68,6 +120,7 @@ }, { "cell_type": "markdown", + "id": "4da91ecb", "metadata": {}, "source": [ "## Example 1" @@ -75,9 +128,32 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], + "execution_count": 2, + "id": "cd96a5e7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[5.1, 3.5, 1.4, 0.2],\n", + " [4.9, 3. , 1.4, 0.2],\n", + " [4.7, 3.2, 1.3, 0.2],\n", + " [4.6, 3.1, 1.5, 0.2],\n", + " [5. , 3.6, 1.4, 0.2]]),\n", + " array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]))" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "#load in all of the data\n", "iris = load_iris()\n", @@ -86,9 +162,21 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, + "id": "60d59c8f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "((112, 4), (38, 4), (112,), (38,))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "#split data into a test and train data set\n", "X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, train_size=0.75, test_size=0.25)\n", @@ -97,15 +185,53 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], + "execution_count": 4, + "id": "0316f5a5", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7575a243384549d8aceebdfd353bcd3b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Optimization Progress: 0%| | 0/100 [00:00<?, ?pipeline/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Generation 1 - Current best internal CV score: 0.9739130434782609\n", + "\n", + "Generation 2 - Current best internal CV score: 0.9739130434782609\n", + "\n", + "Generation 3 - Current best internal CV score: 0.9739130434782609\n", + "\n", + "3.09 minutes have elapsed. TPOT will close down.\n", + "TPOT closed during evaluation in one generation.\n", + "WARNING: TPOT may not provide a good pipeline if TPOT is stopped/interrupted in a early generation.\n", + "\n", + "\n", + "TPOT closed prematurely. Will use the current best pipeline.\n", + "\n", + "Best pipeline: MLPClassifier(input_matrix, alpha=0.01, learning_rate_init=0.001)\n", + "0.9736842105263158\n" + ] + } + ], "source": [ "# Fit the model based on the training data, get a score based on testing data.\n", "# Will report the score of the best found pipeline\n", "# Change max_time_mins to a higher time to allow TPOT to run without interruption. #issue number 25\n", - "# It is currently at 2 mins for sake of not taking to long\n", - "tpot = TPOTClassifier(verbosity=2, max_time_mins=3)\n", + "# It is currently at 2 mins for sake of not taking too long\n", + "tpot = TPOTClassifier(verbosity=2, max_time_mins=10) # increased max time to give best results\n", "tpot.fit(X_train, y_train)\n", "print(tpot.score(X_test, y_test))" ] @@ -115,12 +241,13 @@ "id": "22bb780f", "metadata": {}, "source": [ - "Issued warning of TPOT closed prematurely. I am increasing the max_time to 4 so tpot can completely run and the results are more accurate" + "Issued warning of TPOT closed prematurely. I am increasing the max_time to 10 so TPOT can completely run and the results are more accurate" ] }, { "cell_type": "code", "execution_count": 11, + "id": "013af850", "metadata": {}, "outputs": [], "source": [ @@ -130,6 +257,7 @@ }, { "cell_type": "markdown", + "id": "3f331d68", "metadata": {}, "source": [ "## Example 2" @@ -137,9 +265,153 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "id": "2b756a95", + "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>PassengerId</th>\n", + " <th>Survived</th>\n", + " <th>Pclass</th>\n", + " <th>Name</th>\n", + " <th>Sex</th>\n", + " <th>Age</th>\n", + " <th>SibSp</th>\n", + " <th>Parch</th>\n", + " <th>Ticket</th>\n", + " <th>Fare</th>\n", + " <th>Cabin</th>\n", + " <th>Embarked</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>3</td>\n", + " <td>Braund, Mr. Owen Harris</td>\n", + " <td>male</td>\n", + " <td>22.0</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>A/5 21171</td>\n", + " <td>7.2500</td>\n", + " <td>NaN</td>\n", + " <td>S</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>2</td>\n", + " <td>1</td>\n", + " <td>1</td>\n", + " <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n", + " <td>female</td>\n", + " <td>38.0</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>PC 17599</td>\n", + " <td>71.2833</td>\n", + " <td>C85</td>\n", + " <td>C</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>3</td>\n", + " <td>1</td>\n", + " <td>3</td>\n", + " <td>Heikkinen, Miss. Laina</td>\n", + " <td>female</td>\n", + " <td>26.0</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>STON/O2. 3101282</td>\n", + " <td>7.9250</td>\n", + " <td>NaN</td>\n", + " <td>S</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>4</td>\n", + " <td>1</td>\n", + " <td>1</td>\n", + " <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n", + " <td>female</td>\n", + " <td>35.0</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>113803</td>\n", + " <td>53.1000</td>\n", + " <td>C123</td>\n", + " <td>S</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>5</td>\n", + " <td>0</td>\n", + " <td>3</td>\n", + " <td>Allen, Mr. William Henry</td>\n", + " <td>male</td>\n", + " <td>35.0</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>373450</td>\n", + " <td>8.0500</td>\n", + " <td>NaN</td>\n", + " <td>S</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "#read in data\n", "titanic = pd.read_csv('titanic_train.csv')\n", @@ -148,7 +420,8 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, + "id": "1b663c97", "metadata": {}, "outputs": [], "source": [ @@ -158,9 +431,22 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, + "id": "50d6673f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of levels in category 'Name': 891.00 \n", + "Number of levels in category 'Sex': 2.00 \n", + "Number of levels in category 'Ticket': 681.00 \n", + "Number of levels in category 'Cabin': 148.00 \n", + "Number of levels in category 'Embarked': 4.00 \n" + ] + } + ], "source": [ "# Find out how many different categories there are for each of these 5 features\n", "for cat in ['Name', 'Sex', 'Ticket', 'Cabin', 'Embarked']:\n", @@ -169,9 +455,19 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "id": "d160467e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Levels for catgeory 'Sex': ['male' 'female']\n", + "Levels for catgeory 'Embarked': ['S' 'C' 'Q' nan]\n" + ] + } + ], "source": [ "#print out what those categories are for 'Sex' and 'Embarked'\n", "for cat in ['Sex', 'Embarked']:\n", @@ -180,7 +476,8 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 9, + "id": "ab1f5255", "metadata": {}, "outputs": [], "source": [ @@ -191,9 +488,33 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "id": "6f88cded", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PassengerId False\n", + "class False\n", + "Pclass False\n", + "Name False\n", + "Sex False\n", + "Age False\n", + "SibSp False\n", + "Parch False\n", + "Ticket False\n", + "Fare False\n", + "Cabin False\n", + "Embarked False\n", + "dtype: bool" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# fill na values and then double check there are non left\n", "titanic = titanic.fillna(-999)\n", @@ -202,7 +523,8 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 11, + "id": "7b82a7fc", "metadata": {}, "outputs": [], "source": [ @@ -214,16 +536,35 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "id": "6c7468e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [1, 0, 0, ..., 0, 0, 0],\n", + " ...,\n", + " [1, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [1, 0, 0, ..., 0, 0, 0]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "CabinTrans" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 13, + "id": "b9e9c1d2", "metadata": {}, "outputs": [], "source": [ @@ -233,7 +574,8 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 14, + "id": "8c78ab53", "metadata": {}, "outputs": [], "source": [ @@ -243,7 +585,8 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 15, + "id": "2f2c8be2", "metadata": {}, "outputs": [], "source": [ @@ -254,9 +597,21 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], + "execution_count": 16, + "id": "76fc3385", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# make sure there are no nas in the data\n", "np.isnan(titanic_new).any()" @@ -264,16 +619,29 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], + "execution_count": 17, + "id": "d26a0d0f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "156" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "titanic_new[0].size" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 18, + "id": "38fe863d", "metadata": {}, "outputs": [], "source": [ @@ -283,9 +651,21 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], + "execution_count": 19, + "id": "cad1b5b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(668, 223)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# split the data into testing and training- this will give us indices\n", "training_indices, validation_indices = training_indices, testing_indices = train_test_split(titanic.index, stratify = titanic_class, train_size=0.75, test_size=0.25)\n", @@ -294,9 +674,25 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, + "id": "bb29fe1c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "77018f7b307d4184bc84729d4417703e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Optimization Progress: 0%| | 0/40 [00:00<?, ?pipeline/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# create the classifier and fit the model, reports the best pipeline\n", "# Parameters within the TPOT Classifier can be changed to allow for longer run time across more models\n", @@ -309,12 +705,13 @@ "id": "910d6e80", "metadata": {}, "source": [ - "Issued warning of TPOT closed prematurely. I am increasing the max_time so tpot can completely run and the results are more accurate" + "Issued warning of TPOT closed prematurely. I am increasing the max_time_mins so TPOT can completely run and the results are more accurate" ] }, { "cell_type": "code", "execution_count": 28, + "id": "e9f5c9af", "metadata": {}, "outputs": [], "source": [ @@ -325,6 +722,7 @@ { "cell_type": "code", "execution_count": 29, + "id": "61c375c3", "metadata": {}, "outputs": [], "source": [ @@ -335,6 +733,7 @@ { "cell_type": "code", "execution_count": 30, + "id": "f348eb12", "metadata": {}, "outputs": [], "source": [ @@ -346,6 +745,7 @@ { "cell_type": "code", "execution_count": 31, + "id": "64c48124", "metadata": {}, "outputs": [], "source": [ @@ -358,6 +758,7 @@ { "cell_type": "code", "execution_count": 32, + "id": "b051001d", "metadata": {}, "outputs": [], "source": [ @@ -369,6 +770,7 @@ { "cell_type": "code", "execution_count": 33, + "id": "e0b4c999", "metadata": {}, "outputs": [], "source": [ @@ -380,6 +782,7 @@ { "cell_type": "code", "execution_count": 34, + "id": "c931cf65", "metadata": {}, "outputs": [], "source": [ @@ -394,6 +797,7 @@ { "cell_type": "code", "execution_count": 35, + "id": "00d7bd45", "metadata": {}, "outputs": [], "source": [ @@ -404,6 +808,7 @@ { "cell_type": "code", "execution_count": 36, + "id": "db5c1909", "metadata": {}, "outputs": [], "source": [ @@ -413,6 +818,7 @@ { "cell_type": "code", "execution_count": 37, + "id": "3f2f4888", "metadata": {}, "outputs": [], "source": [ @@ -422,6 +828,7 @@ { "cell_type": "code", "execution_count": 38, + "id": "250d23c7", "metadata": {}, "outputs": [], "source": [ @@ -432,6 +839,7 @@ { "cell_type": "code", "execution_count": 40, + "id": "0132c44e", "metadata": {}, "outputs": [], "source": [ @@ -441,6 +849,7 @@ { "cell_type": "code", "execution_count": 41, + "id": "17714990", "metadata": {}, "outputs": [], "source": [ @@ -457,6 +866,7 @@ { "cell_type": "code", "execution_count": 42, + "id": "98bbe243", "metadata": {}, "outputs": [], "source": [ @@ -465,6 +875,7 @@ }, { "cell_type": "markdown", + "id": "a275be3e", "metadata": {}, "source": [ "### References\n", @@ -475,7 +886,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.11 (default)", "language": "python", "name": "python3" }, @@ -489,7 +900,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.11.6" } }, "nbformat": 4,