{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "mQSys62efhoG"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sb\n",
        "\n",
        "from imblearn.over_sampling import RandomOverSampler\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.preprocessing import LabelEncoder, MinMaxScaler\n",
        "from sklearn.feature_selection import SelectKBest, chi2\n",
        "from tqdm.notebook import tqdm\n",
        "from sklearn import metrics\n",
        "from sklearn.svm import SVC\n",
        "from xgboost import XGBClassifier\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings('ignore')"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df = pd.read_csv('/content/parkinson_disease.csv')"
      ],
      "metadata": {
        "id": "U4xaCAKSgxsP"
      },
      "execution_count": 7,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "pd.set_option('display.max_columns', 10)\n",
        "df.head(5)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 236
        },
        "id": "hBeAwdnzg3io",
        "outputId": "b88ac480-3e2c-40c6-de3e-5b62d276e766"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "   id  gender      PPE      DFA     RPDE  ...  tqwt_kurtosisValue_dec_33  \\\n",
              "0   0       1  0.85247  0.71826  0.57227  ...                     4.4625   \n",
              "1   0       1  0.76686  0.69481  0.53966  ...                     9.5082   \n",
              "2   0       1  0.85083  0.67604  0.58982  ...                     4.8066   \n",
              "3   1       0  0.41121  0.79672  0.59257  ...                     4.6857   \n",
              "4   1       0  0.32790  0.79782  0.53028  ...                    11.6891   \n",
              "\n",
              "   tqwt_kurtosisValue_dec_34  tqwt_kurtosisValue_dec_35  \\\n",
              "0                     2.6202                     3.0004   \n",
              "1                     6.5245                     6.3431   \n",
              "2                     2.9199                     3.1495   \n",
              "3                     4.8460                     6.2650   \n",
              "4                     8.2103                     5.0559   \n",
              "\n",
              "   tqwt_kurtosisValue_dec_36  class  \n",
              "0                    18.9405      1  \n",
              "1                    45.1780      1  \n",
              "2                     4.7666      1  \n",
              "3                     4.0603      1  \n",
              "4                     6.1164      1  \n",
              "\n",
              "[5 rows x 755 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-8257ba8c-be50-44d9-afb1-bdad24d887c0\" class=\"colab-df-container\">\n",
              "    <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>id</th>\n",
              "      <th>gender</th>\n",
              "      <th>PPE</th>\n",
              "      <th>DFA</th>\n",
              "      <th>RPDE</th>\n",
              "      <th>...</th>\n",
              "      <th>tqwt_kurtosisValue_dec_33</th>\n",
              "      <th>tqwt_kurtosisValue_dec_34</th>\n",
              "      <th>tqwt_kurtosisValue_dec_35</th>\n",
              "      <th>tqwt_kurtosisValue_dec_36</th>\n",
              "      <th>class</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>0.85247</td>\n",
              "      <td>0.71826</td>\n",
              "      <td>0.57227</td>\n",
              "      <td>...</td>\n",
              "      <td>4.4625</td>\n",
              "      <td>2.6202</td>\n",
              "      <td>3.0004</td>\n",
              "      <td>18.9405</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>0.76686</td>\n",
              "      <td>0.69481</td>\n",
              "      <td>0.53966</td>\n",
              "      <td>...</td>\n",
              "      <td>9.5082</td>\n",
              "      <td>6.5245</td>\n",
              "      <td>6.3431</td>\n",
              "      <td>45.1780</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>0.85083</td>\n",
              "      <td>0.67604</td>\n",
              "      <td>0.58982</td>\n",
              "      <td>...</td>\n",
              "      <td>4.8066</td>\n",
              "      <td>2.9199</td>\n",
              "      <td>3.1495</td>\n",
              "      <td>4.7666</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>0.41121</td>\n",
              "      <td>0.79672</td>\n",
              "      <td>0.59257</td>\n",
              "      <td>...</td>\n",
              "      <td>4.6857</td>\n",
              "      <td>4.8460</td>\n",
              "      <td>6.2650</td>\n",
              "      <td>4.0603</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>0.32790</td>\n",
              "      <td>0.79782</td>\n",
              "      <td>0.53028</td>\n",
              "      <td>...</td>\n",
              "      <td>11.6891</td>\n",
              "      <td>8.2103</td>\n",
              "      <td>5.0559</td>\n",
              "      <td>6.1164</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5 rows × 755 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-8257ba8c-be50-44d9-afb1-bdad24d887c0')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-8257ba8c-be50-44d9-afb1-bdad24d887c0 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-8257ba8c-be50-44d9-afb1-bdad24d887c0');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-c4ed5dc1-011c-4e6d-a08a-071203778f6d\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c4ed5dc1-011c-4e6d-a08a-071203778f6d')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-c4ed5dc1-011c-4e6d-a08a-071203778f6d button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "df"
            }
          },
          "metadata": {},
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df.shape"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7zlWkzd8g4gY",
        "outputId": "a25c4022-f3d5-4497-9ef2-5c8e625f7f5f"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(756, 755)"
            ]
          },
          "metadata": {},
          "execution_count": 9
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df.info()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Kb1NtiPONQDR",
        "outputId": "2ad3f8b6-8f9a-49b9-e2e3-f045c685f3c7"
      },
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'pandas.core.frame.DataFrame'>\n",
            "RangeIndex: 756 entries, 0 to 755\n",
            "Columns: 755 entries, id to class\n",
            "dtypes: float64(749), int64(6)\n",
            "memory usage: 4.4 MB\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df.describe().T"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 424
        },
        "id": "_cLS3vt6g5Yu",
        "outputId": "023640cc-3999-49ad-8d85-a306f698f515"
      },
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                           count        mean        std       min        25%  \\\n",
              "id                         756.0  125.500000  72.793721  0.000000  62.750000   \n",
              "gender                     756.0    0.515873   0.500079  0.000000   0.000000   \n",
              "PPE                        756.0    0.746284   0.169294  0.041551   0.762833   \n",
              "DFA                        756.0    0.700414   0.069718  0.543500   0.647053   \n",
              "RPDE                       756.0    0.489058   0.137442  0.154300   0.386537   \n",
              "...                          ...         ...        ...       ...        ...   \n",
              "tqwt_kurtosisValue_dec_33  756.0   12.375335  16.341665  1.628700   3.114375   \n",
              "tqwt_kurtosisValue_dec_34  756.0   14.799230  15.722502  1.861700   3.665925   \n",
              "tqwt_kurtosisValue_dec_35  756.0   14.751559  14.432979  1.955900   3.741275   \n",
              "tqwt_kurtosisValue_dec_36  756.0   31.481110  34.230991  2.364000   3.948750   \n",
              "class                      756.0    0.746032   0.435568  0.000000   0.000000   \n",
              "\n",
              "                                  50%         75%        max  \n",
              "id                         125.500000  188.250000  251.00000  \n",
              "gender                       1.000000    1.000000    1.00000  \n",
              "PPE                          0.809655    0.834315    0.90766  \n",
              "DFA                          0.700525    0.754985    0.85264  \n",
              "RPDE                         0.484355    0.586515    0.87123  \n",
              "...                               ...         ...        ...  \n",
              "tqwt_kurtosisValue_dec_33    4.741450   12.201325   73.53220  \n",
              "tqwt_kurtosisValue_dec_34    6.725700   21.922050   62.00730  \n",
              "tqwt_kurtosisValue_dec_35    7.334250   22.495175   57.54430  \n",
              "tqwt_kurtosisValue_dec_36   10.637250   61.125325  156.42370  \n",
              "class                        1.000000    1.000000    1.00000  \n",
              "\n",
              "[755 rows x 8 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-7833b06a-986a-4974-9a23-94422b784417\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>id</th>\n",
              "      <td>756.0</td>\n",
              "      <td>125.500000</td>\n",
              "      <td>72.793721</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>62.750000</td>\n",
              "      <td>125.500000</td>\n",
              "      <td>188.250000</td>\n",
              "      <td>251.00000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>gender</th>\n",
              "      <td>756.0</td>\n",
              "      <td>0.515873</td>\n",
              "      <td>0.500079</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.00000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>PPE</th>\n",
              "      <td>756.0</td>\n",
              "      <td>0.746284</td>\n",
              "      <td>0.169294</td>\n",
              "      <td>0.041551</td>\n",
              "      <td>0.762833</td>\n",
              "      <td>0.809655</td>\n",
              "      <td>0.834315</td>\n",
              "      <td>0.90766</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>DFA</th>\n",
              "      <td>756.0</td>\n",
              "      <td>0.700414</td>\n",
              "      <td>0.069718</td>\n",
              "      <td>0.543500</td>\n",
              "      <td>0.647053</td>\n",
              "      <td>0.700525</td>\n",
              "      <td>0.754985</td>\n",
              "      <td>0.85264</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>RPDE</th>\n",
              "      <td>756.0</td>\n",
              "      <td>0.489058</td>\n",
              "      <td>0.137442</td>\n",
              "      <td>0.154300</td>\n",
              "      <td>0.386537</td>\n",
              "      <td>0.484355</td>\n",
              "      <td>0.586515</td>\n",
              "      <td>0.87123</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",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tqwt_kurtosisValue_dec_33</th>\n",
              "      <td>756.0</td>\n",
              "      <td>12.375335</td>\n",
              "      <td>16.341665</td>\n",
              "      <td>1.628700</td>\n",
              "      <td>3.114375</td>\n",
              "      <td>4.741450</td>\n",
              "      <td>12.201325</td>\n",
              "      <td>73.53220</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tqwt_kurtosisValue_dec_34</th>\n",
              "      <td>756.0</td>\n",
              "      <td>14.799230</td>\n",
              "      <td>15.722502</td>\n",
              "      <td>1.861700</td>\n",
              "      <td>3.665925</td>\n",
              "      <td>6.725700</td>\n",
              "      <td>21.922050</td>\n",
              "      <td>62.00730</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tqwt_kurtosisValue_dec_35</th>\n",
              "      <td>756.0</td>\n",
              "      <td>14.751559</td>\n",
              "      <td>14.432979</td>\n",
              "      <td>1.955900</td>\n",
              "      <td>3.741275</td>\n",
              "      <td>7.334250</td>\n",
              "      <td>22.495175</td>\n",
              "      <td>57.54430</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tqwt_kurtosisValue_dec_36</th>\n",
              "      <td>756.0</td>\n",
              "      <td>31.481110</td>\n",
              "      <td>34.230991</td>\n",
              "      <td>2.364000</td>\n",
              "      <td>3.948750</td>\n",
              "      <td>10.637250</td>\n",
              "      <td>61.125325</td>\n",
              "      <td>156.42370</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>class</th>\n",
              "      <td>756.0</td>\n",
              "      <td>0.746032</td>\n",
              "      <td>0.435568</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.00000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>755 rows × 8 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7833b06a-986a-4974-9a23-94422b784417')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-7833b06a-986a-4974-9a23-94422b784417 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-7833b06a-986a-4974-9a23-94422b784417');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-00974c3b-9500-473f-b34a-4ca3931a3fa7\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-00974c3b-9500-473f-b34a-4ca3931a3fa7')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-00974c3b-9500-473f-b34a-4ca3931a3fa7 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"df\",\n  \"rows\": 755,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 756.0,\n        \"max\": 756.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          756.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 374622395.71923405,\n        \"min\": -9029632763.215609,\n        \"max\": 12099556.09835979,\n        \"num_unique_values\": 755,\n        \"samples\": [\n          -4143374.954075397\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 236810548.13221908,\n        \"min\": 5.7338262951403425e-21,\n        \"max\": 5703424049.268989,\n        \"num_unique_values\": 755,\n        \"samples\": [\n          487675.08280652296\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2578254179.0303726,\n        \"min\": -62062235037.0,\n        \"max\": 2213588.67,\n        \"num_unique_values\": 743,\n        \"samples\": [\n          -0.3828\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 473008476.38622814,\n        \"min\": -11400959583.75,\n        \"max\": 7183016.246,\n        \"num_unique_values\": 753,\n        \"samples\": [\n          -0.9168375\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 325558429.5620674,\n        \"min\": -7849142473.5,\n        \"max\": 10662958.870000001,\n        \"num_unique_values\": 735,\n        \"samples\": [\n          0.0016652\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 212971693.58083302,\n        \"min\": -5136087772.75,\n        \"max\": 15134891.325000001,\n        \"num_unique_values\": 752,\n        \"samples\": [\n          0.07430725\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 58324013.06010493,\n        \"min\": -1399384344.0,\n        \"max\": 74325483.41,\n        \"num_unique_values\": 752,\n        \"samples\": [\n          0.50277\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 11
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df.isnull().sum().sum()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kFp2K49WQ8v7",
        "outputId": "d754220c-dbb2-436f-f09f-a00aa174cfe0"
      },
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "np.int64(0)"
            ]
          },
          "metadata": {},
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df = df.groupby('id').mean().reset_index()\n",
        "df.drop('id', axis=1, inplace=True)"
      ],
      "metadata": {
        "id": "9kTA7himg6la"
      },
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "columns = list(df.columns)\n",
        "for col in columns:\n",
        "\tif col == 'class':\n",
        "\t\tcontinue\n",
        "\n",
        "\tfiltered_columns = [col]\n",
        "\tfor col1 in df.columns:\n",
        "\t\tif((col == col1) | (col == 'class')):\n",
        "\t\t\tcontinue\n",
        "\n",
        "\t\tval = df[col].corr(df[col1])\n",
        "\n",
        "\t\tif val > 0.7:\n",
        "\t\t\t# If the correlation between the two\n",
        "\t\t\t# features is more than 0.7 remove\n",
        "\t\t\tcolumns.remove(col1)\n",
        "\t\t\tcontinue\n",
        "\t\telse:\n",
        "\t\t\tfiltered_columns.append(col1)\n",
        "\n",
        "\t# After each iteration filter out the columns\n",
        "\tdf = df[filtered_columns]\n",
        "df.shape"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vmb-STOFg7gT",
        "outputId": "de9f86d0-dbe0-45d8-aada-f9c15ca19445"
      },
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(252, 287)"
            ]
          },
          "metadata": {},
          "execution_count": 15
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "X = df.drop('class', axis=1)\n",
        "X_norm = MinMaxScaler().fit_transform(X)\n",
        "selector = SelectKBest(chi2, k=30)\n",
        "selector.fit(X_norm, df['class'])\n",
        "filtered_columns = selector.get_support()\n",
        "filtered_data = X.loc[:, filtered_columns]\n",
        "filtered_data['class'] = df['class']\n",
        "df = filtered_data\n",
        "df.shape"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4vjTyVNJg8uy",
        "outputId": "62831fea-e502-4381-ce3a-f6ae0e9cbc9d"
      },
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(252, 31)"
            ]
          },
          "metadata": {},
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "x = df['class'].value_counts()\n",
        "plt.pie(x.values,\n",
        "\t\tlabels = x.index,\n",
        "\t\tautopct='%1.1f%%')\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 406
        },
        "id": "twB_CTOsg911",
        "outputId": "d171a2b8-4f27-478f-d029-600097380eb7"
      },
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "features = df.drop('class', axis=1)\n",
        "target = df['class']\n",
        "\n",
        "\n",
        "X_train, X_val, y_train, y_val = train_test_split(features, target,\n",
        "                                                  test_size=0.2,\n",
        "                                                  random_state=10)\n",
        "\n",
        "ros = RandomOverSampler(sampling_strategy=1.0, random_state=0)\n",
        "X_resampled, y_resampled = ros.fit_resample(X_train, y_train)\n",
        "\n",
        "X_resampled.shape, y_resampled.value_counts()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "DoTwF-YLg-_B",
        "outputId": "466f48c6-0556-4e97-dba9-38972ad2389a"
      },
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "((302, 30),\n",
              " class\n",
              " 1.0    151\n",
              " 0.0    151\n",
              " Name: count, dtype: int64)"
            ]
          },
          "metadata": {},
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import roc_auc_score as ras\n",
        "\n",
        "# Models list\n",
        "models = [LogisticRegression(class_weight='balanced'), XGBClassifier(), SVC(kernel='rbf', probability=True)]\n",
        "\n",
        "# Model training and evaluation\n",
        "for model in models:\n",
        "    model.fit(X_resampled, y_resampled)\n",
        "\n",
        "    print(f'{model} : ')\n",
        "\n",
        "    train_preds = model.predict(X_resampled)\n",
        "    print('Training Accuracy : ', ras(y_resampled, train_preds))\n",
        "\n",
        "    val_preds = model.predict(X_val)\n",
        "    print('Validation Accuracy : ', ras(y_val, val_preds))\n",
        "    print()\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gzWQHuWVhBQ5",
        "outputId": "75598672-9c9f-4c31-9029-019fb3f43361"
      },
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "LogisticRegression(class_weight='balanced') : \n",
            "Training Accuracy :  0.7814569536423841\n",
            "Validation Accuracy :  0.8301158301158301\n",
            "\n",
            "XGBClassifier(base_score=None, booster=None, callbacks=None,\n",
            "              colsample_bylevel=None, colsample_bynode=None,\n",
            "              colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
            "              enable_categorical=False, eval_metric=None, feature_types=None,\n",
            "              gamma=None, grow_policy=None, importance_type=None,\n",
            "              interaction_constraints=None, learning_rate=None, max_bin=None,\n",
            "              max_cat_threshold=None, max_cat_to_onehot=None,\n",
            "              max_delta_step=None, max_depth=None, max_leaves=None,\n",
            "              min_child_weight=None, missing=nan, monotone_constraints=None,\n",
            "              multi_strategy=None, n_estimators=None, n_jobs=None,\n",
            "              num_parallel_tree=None, random_state=None, ...) : \n",
            "Training Accuracy :  1.0\n",
            "Validation Accuracy :  0.6467181467181468\n",
            "\n",
            "SVC(probability=True) : \n",
            "Training Accuracy :  0.6258278145695364\n",
            "Validation Accuracy :  0.6457528957528957\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import ConfusionMatrixDisplay\n",
        "ConfusionMatrixDisplay.from_estimator(models[0], X_val, y_val)\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 455
        },
        "id": "b7pACb6fFoFs",
        "outputId": "3cca6a84-372b-4151-939c-9038b31fb693"
      },
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ],
            "image/png": "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eFmFkr/D4fB2HAAA+Cc/bd1bYWnOv6ioSOHh4Z6KBQAAvxKobX+3V/uXlZVp1qxZatSokSIjI/X1119LkqZOnapFixZ5PEAAAHzG8MDmh9xO/rNnz9aSJUv0/PPPKzQ01Lm/Xbt2WrhwoUeDAwAAnud28l+6dKn+/Oc/a9CgQapWrZpzf4cOHbR//36PBgcAgG/ZPLD5H7fn/I8ePaqEhISL9jscDpWWlnokKAAA/EKAXufvduXftm1bbdmy5aL97777rn7xi194JCgAAOA9blf+zzzzjFJSUnT06FE5HA69//77ysrK0tKlS7VmzRpvxAgAgG9Q+Zfr27evVq9erY8++ki1atXSM888o3379mn16tW68847vREjAAC+ceGpflY2P1SpB/vcdttt2rBhg06cOKFz585p69at6tmzp6djAwAgqKSmpuqmm25SVFSUGjRooH79+ikrK8vlmKKiIo0aNUr16tVTZGSkBgwYoLy8PLfOU+mn+u3cuVNvvfWW3nrrLe3atauyHwMAgN+68EhfK5s7MjIyNGrUKO3YsUMbNmxQaWmpevbsqcLCQucx48eP1+rVq/XOO+8oIyNDx44dU//+/d06j9tz/keOHNHAgQP1j3/8Q7Vr15YknT59Wr/61a+0fPlyNW7c2N2PBADAP1XxnP+6detcXi9ZskQNGjTQrl271KVLF505c0aLFi1Senq6br/9dknS4sWL1aZNG+3YsUM333xzhc7jduU/fPhwlZaWat++fTp16pROnTqlffv2yeFwaPjw4e5+HAAAAS8/P99lKy4urtC4M2fOSJLq1q0rSdq1a5dKS0vVo0cP5zGtW7dWkyZNtH379grH43byz8jIUFpamlq1auXc16pVK7388svavHmzux8HAID/8tCCv/j4eEVHRzu31NTUK57a4XBo3LhxuuWWW9SuXTtJUm5urkJDQ52d9wtiYmKUm5tb4a/ldts/Pj7+kjfzKSsrU1xcnLsfBwCA37IZ5ZuV8ZKUk5Mju93u3B8WFnbFsaNGjdLevXu1devWygdgwu3K/4UXXtCYMWO0c+dO576dO3dq7Nix+uMf/+jR4AAA8CkPPdjHbre7bFdK/qNHj9aaNWv0ySefuKyli42NVUlJiU6fPu1yfF5enmJjYyv8tSpU+depU0c224/XKhYWFqpz586qXr18+Pnz51W9enU9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Nfr2229VUFCgqKgoTZw4UePHj9ebb76p7OxsffbZZ3r55Zedi+hGjBihr776Sk888YSysrKUnp6uJUuWuPV9W7RoocOHD2v58uXKzs7WvHnzLrl4MTw8XCkpKfr888+1ZcsWPf7447r//vsVGxsrSZoxY4ZSU1M1b948/ec//9EXX3yhxYsX609/+pNb8QCoHJI/YEHNmjW1efNmNWnSRP3791ebNm00bNgwFRUVOTsBv/3tb/W///u/SklJUVJSkqKionTvvfde9nPT0tL061//Wo899phat26tRx99VIWFhZKkRo0aacaMGZo8ebJiYmI0evRoSdKsWbM0depUpaamqk2bNurVq5fWrl2rZs2aSSqfh3/vvfe0atUqdejQQQsWLNBzzz3n1ve95557NH78eI0ePVodO3bUtm3bNHXq1IuOS0hIUP/+/XXXXXepZ8+eSkxMdLmUb/jw4Vq4cKEWL16s9u3bq2vXrlqyZIkzVgDeZTPMVh0BAICAROUPAECQIfkDABBkSP4AAAQZkj8AAEGG5A8AQJAh+QMAEGRI/gAABBmSPwAAQYbkDwBAkCH5AwAQZEj+AAAEGZI/AABB5v8D+mzTdYDs2RQAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "w1uFjdFVG8-N"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}