{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.4" }, "colab": { "name": "FHR_tree_svm_ensemble.ipynb", "provenance": [] }, "widgets": { "application/vnd.jupyter.widget-state+json": { "85013890037d4eae9e46bce44ef6fe31": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_d1726335eb9847dcb8c408db31d29e39", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 13, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 3, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_c069b042d8ee4808a04e5a02388dbc89" } }, "d1726335eb9847dcb8c408db31d29e39": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "c069b042d8ee4808a04e5a02388dbc89": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "8b11b69c85564a5fbd8a7656ff91e850": { "model_module": "@jupyter-widgets/controls", "model_name": "TextModel", "state": { "_view_name": "TextView", "style": "IPY_MODEL_2016bba888b7450f96b6018d8100e534", "_dom_classes": [], "description": "", "_model_name": "TextModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": "Following data types have been inferred automatically, if they are correct press enter to continue or type 'quit' otherwise.", "_view_count": null, "disabled": false, "_view_module_version": "1.5.0", "continuous_update": true, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_d82f871fd9494cd29198d0758cc3ddde" } }, "2016bba888b7450f96b6018d8100e534": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "d82f871fd9494cd29198d0758cc3ddde": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": "100%", "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "04d55d6a1d1a482a9b7009586b58979b": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_f09f1960e4254302a99b590ce733d608", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 176, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 172, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_fff4b352b5594f77bf468695d468f288" } }, "f09f1960e4254302a99b590ce733d608": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "fff4b352b5594f77bf468695d468f288": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "1deea41a50a34193a4a1d4a53ef32286": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_aa38ef63b6d4402fabe4edb0d6419168", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 14, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 14, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_ed7d18dacd964948995dc160f99736cf" } }, "aa38ef63b6d4402fabe4edb0d6419168": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "ed7d18dacd964948995dc160f99736cf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "d73315df6042479586c9f7782ba8490b": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_92b07214d46b4ae988829aeecd46b921", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 16, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 16, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_7b59664e0dc74453889dbcde7ddd4978" } }, "92b07214d46b4ae988829aeecd46b921": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "7b59664e0dc74453889dbcde7ddd4978": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "aec1a6ff8c24465d9a90d427594eb11f": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_35dcf7d2a35540f3a1b34b940cd8ea65", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 5, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 5, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_03c027fb02bb4deaa85d151a7a7ec702" } }, "6833484a36ba4c289e68a046d6c5f25e": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_370b2c73f86b4ed5b7170fafb38beb34", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 5, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 5, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_5208c840b11e4922a587b09855e7b83a" } } } } }, "cells": [ { "cell_type": "code", "metadata": { "id": "eoSVEnEpORn6", "colab_type": "code", "colab": {} }, "source": [ "## Importing necessary libraries \n", "\n", "import pandas as pd\n", "import numpy as np\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ], "execution_count": 1, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "EJzIqSuqOU0O", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "a77ba090-ba0d-49e7-84de-26b63ccdc6b4" }, "source": [ "## Installing our favourite pycaret library\n", "!pip install pycaret" ], "execution_count": 14, "outputs": [ { "output_type": "stream", "text": [ "Collecting pycaret\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/91/ae/000d825af8f7d9ff86808600f220e7ad57a873987fd6119c87dc4c5b1d91/pycaret-2.0-py3-none-any.whl (255kB)\n", "\u001b[K |████████████████████████████████| 256kB 2.8MB/s \n", "\u001b[?25hCollecting lightgbm>=2.3.1\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/0b/9d/ddcb2f43aca194987f1a99e27edf41cf9bc39ea750c3371c2a62698c509a/lightgbm-2.3.1-py2.py3-none-manylinux1_x86_64.whl (1.2MB)\n", "\u001b[K |████████████████████████████████| 1.2MB 8.7MB/s \n", "\u001b[?25hCollecting datefinder>=0.7.0\n", " Downloading https://files.pythonhosted.org/packages/0c/4f/29524c9ca35d2ba1a8a3c6c895b90fc92525cf0fe357f747133890953ebe/datefinder-0.7.1-py2.py3-none-any.whl\n", "Requirement already satisfied: nltk in /usr/local/lib/python3.6/dist-packages (from pycaret) (3.2.5)\n", "Requirement already satisfied: pandas in /usr/local/lib/python3.6/dist-packages (from pycaret) (1.0.5)\n", "Collecting pyod\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/77/4e/5767edaccbfc227914ca774cb6ca9b628a08cbb59b9b4839296953a63d34/pyod-0.8.1.tar.gz (93kB)\n", "\u001b[K |████████████████████████████████| 102kB 9.0MB/s \n", "\u001b[?25hRequirement already satisfied: imbalanced-learn in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.4.3)\n", "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.6/dist-packages (from pycaret) (1.18.5)\n", "Requirement already satisfied: spacy in /usr/local/lib/python3.6/dist-packages (from pycaret) (2.2.4)\n", "Collecting kmodes>=0.10.1\n", " Downloading https://files.pythonhosted.org/packages/b2/55/d8ec1ae1f7e1e202a8a4184c6852a3ee993b202b0459672c699d0ac18fc8/kmodes-0.10.2-py2.py3-none-any.whl\n", "Collecting pyLDAvis\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/a5/3a/af82e070a8a96e13217c8f362f9a73e82d61ac8fff3a2561946a97f96266/pyLDAvis-2.1.2.tar.gz (1.6MB)\n", "\u001b[K |████████████████████████████████| 1.6MB 13.0MB/s \n", "\u001b[?25hRequirement already satisfied: xgboost>=0.90 in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.90)\n", "Requirement already satisfied: IPython in /usr/local/lib/python3.6/dist-packages (from pycaret) (5.5.0)\n", "Requirement already satisfied: wordcloud in /usr/local/lib/python3.6/dist-packages (from pycaret) (1.5.0)\n", "Requirement already satisfied: joblib in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.16.0)\n", "Collecting mlflow\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/00/2f/2529268d85af0a1521b0b7c137b63b731dff4784e1322fb3055403a959fb/mlflow-1.10.0-py3-none-any.whl (12.4MB)\n", "\u001b[K |████████████████████████████████| 12.4MB 22.0MB/s \n", "\u001b[?25hCollecting yellowbrick>=1.0.1\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/13/95/a14e4fdfb8b1c8753bbe74a626e910a98219ef9c87c6763585bbd30d84cf/yellowbrick-1.1-py3-none-any.whl (263kB)\n", "\u001b[K |████████████████████████████████| 266kB 51.5MB/s \n", "\u001b[?25hRequirement already satisfied: seaborn in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.10.1)\n", "Collecting pandas-profiling>=2.3.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/b9/94/ef8ef4517540d13406fcc0b8adfd75336e014242c69bd4162ab46931f36a/pandas_profiling-2.8.0-py2.py3-none-any.whl (259kB)\n", "\u001b[K |████████████████████████████████| 266kB 47.0MB/s \n", "\u001b[?25hCollecting DateTime>=4.3\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/73/22/a5297f3a1f92468cc737f8ce7ba6e5f245fcfafeae810ba37bd1039ea01c/DateTime-4.3-py2.py3-none-any.whl (60kB)\n", "\u001b[K |████████████████████████████████| 61kB 8.0MB/s \n", "\u001b[?25hRequirement already satisfied: plotly>=4.4.1 in /usr/local/lib/python3.6/dist-packages (from pycaret) (4.4.1)\n", "Collecting catboost\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/96/6c/6608210b29649267de52001b09e369777ee2a5cfe1c71fa75eba82a4f2dc/catboost-0.24-cp36-none-manylinux1_x86_64.whl (65.9MB)\n", "\u001b[K |████████████████████████████████| 65.9MB 125kB/s \n", "\u001b[?25hRequirement already satisfied: textblob in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.15.3)\n", "Requirement already satisfied: mlxtend in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.14.0)\n", "Requirement already satisfied: cufflinks>=0.17.0 in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.17.3)\n", "Requirement already satisfied: gensim in /usr/local/lib/python3.6/dist-packages (from pycaret) (3.6.0)\n", "Requirement already satisfied: ipywidgets in /usr/local/lib/python3.6/dist-packages (from pycaret) (7.5.1)\n", "Collecting scikit-learn>=0.23\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/5c/a1/273def87037a7fb010512bbc5901c31cfddfca8080bc63b42b26e3cc55b3/scikit_learn-0.23.2-cp36-cp36m-manylinux1_x86_64.whl (6.8MB)\n", "\u001b[K |████████████████████████████████| 6.8MB 50.2MB/s \n", "\u001b[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from pycaret) (3.2.2)\n", "Requirement already satisfied: umap-learn in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.4.6)\n", "Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from lightgbm>=2.3.1->pycaret) (1.4.1)\n", "Requirement already satisfied: python-dateutil>=2.4.2 in /usr/local/lib/python3.6/dist-packages (from datefinder>=0.7.0->pycaret) (2.8.1)\n", "Requirement already satisfied: regex>=2017.02.08 in /usr/local/lib/python3.6/dist-packages (from datefinder>=0.7.0->pycaret) (2019.12.20)\n", "Requirement already satisfied: pytz in /usr/local/lib/python3.6/dist-packages (from datefinder>=0.7.0->pycaret) (2018.9)\n", "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from nltk->pycaret) (1.15.0)\n", "Collecting combo\n", " Downloading https://files.pythonhosted.org/packages/0a/2a/61b6ac584e75d8df16dc27962aa5fe99d76b09da5b6710e83d4862c84001/combo-0.1.1.tar.gz\n", "Requirement already satisfied: numba>=0.35 in /usr/local/lib/python3.6/dist-packages (from pyod->pycaret) (0.48.0)\n", "Collecting suod\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/a1/87/9170cabe1b5e10a7d095c0e28f2e30e7c1886a13f063de85d3cfacc06f4b/suod-0.0.4.tar.gz (2.1MB)\n", "\u001b[K |████████████████████████████████| 2.1MB 39.7MB/s \n", "\u001b[?25hRequirement already satisfied: requests<3.0.0,>=2.13.0 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (2.23.0)\n", "Requirement already satisfied: wasabi<1.1.0,>=0.4.0 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (0.7.1)\n", "Requirement already satisfied: thinc==7.4.0 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (7.4.0)\n", "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (1.0.2)\n", "Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (49.2.0)\n", "Requirement already satisfied: plac<1.2.0,>=0.9.6 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (1.1.3)\n", "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (2.0.3)\n", "Requirement already satisfied: tqdm<5.0.0,>=4.38.0 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (4.41.1)\n", "Requirement already satisfied: blis<0.5.0,>=0.4.0 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (0.4.1)\n", "Requirement already satisfied: catalogue<1.1.0,>=0.0.7 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (1.0.0)\n", "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (3.0.2)\n", "Requirement already satisfied: srsly<1.1.0,>=1.0.2 in /usr/local/lib/python3.6/dist-packages (from spacy->pycaret) (1.0.2)\n", "Requirement already satisfied: wheel>=0.23.0 in /usr/local/lib/python3.6/dist-packages (from pyLDAvis->pycaret) (0.34.2)\n", "Requirement already satisfied: jinja2>=2.7.2 in /usr/local/lib/python3.6/dist-packages (from pyLDAvis->pycaret) (2.11.2)\n", "Requirement already satisfied: numexpr in /usr/local/lib/python3.6/dist-packages (from pyLDAvis->pycaret) (2.7.1)\n", "Requirement already satisfied: pytest in /usr/local/lib/python3.6/dist-packages (from pyLDAvis->pycaret) (3.6.4)\n", "Requirement already satisfied: future in /usr/local/lib/python3.6/dist-packages (from pyLDAvis->pycaret) (0.16.0)\n", "Collecting funcy\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/ce/4b/6ffa76544e46614123de31574ad95758c421aae391a1764921b8a81e1eae/funcy-1.14.tar.gz (548kB)\n", "\u001b[K |████████████████████████████████| 552kB 35.5MB/s \n", "\u001b[?25hRequirement already satisfied: pickleshare in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (0.7.5)\n", "Requirement already satisfied: pexpect; sys_platform != \"win32\" in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (4.8.0)\n", "Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.4 in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (1.0.18)\n", "Requirement already satisfied: decorator in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (4.4.2)\n", "Requirement already satisfied: simplegeneric>0.8 in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (0.8.1)\n", "Requirement already satisfied: pygments in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (2.1.3)\n", "Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (4.3.3)\n", "Requirement already satisfied: pillow in /usr/local/lib/python3.6/dist-packages (from wordcloud->pycaret) (7.0.0)\n", "Collecting azure-storage-blob>=12.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/6d/3d/31614573e8a197db12d8ab47a7fd813f15bd4a4b5c64e85d23b865de5b9b/azure_storage_blob-12.3.2-py2.py3-none-any.whl (280kB)\n", "\u001b[K |████████████████████████████████| 286kB 48.9MB/s \n", "\u001b[?25hRequirement already satisfied: protobuf>=3.6.0 in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (3.12.4)\n", "Requirement already satisfied: cloudpickle in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (1.3.0)\n", "Requirement already satisfied: entrypoints in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (0.3)\n", "Collecting querystring-parser\n", " Downloading https://files.pythonhosted.org/packages/4a/fa/f54f5662e0eababf0c49e92fd94bf178888562c0e7b677c8941bbbcd1bd6/querystring_parser-1.2.4.tar.gz\n", "Collecting databricks-cli>=0.8.7\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/1e/57/5c2d6b83cb8753d12f548e89f91037632baa8289677c1b2ab2adf14bf6b2/databricks-cli-0.11.0.tar.gz (49kB)\n", "\u001b[K |████████████████████████████████| 51kB 6.7MB/s \n", "\u001b[?25hRequirement already satisfied: sqlparse in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (0.3.1)\n", "Collecting gunicorn; platform_system != \"Windows\"\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/69/ca/926f7cd3a2014b16870086b2d0fdc84a9e49473c68a8dff8b57f7c156f43/gunicorn-20.0.4-py2.py3-none-any.whl (77kB)\n", "\u001b[K |████████████████████████████████| 81kB 9.3MB/s \n", "\u001b[?25hCollecting sqlalchemy<=1.3.13\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/af/47/35edeb0f86c0b44934c05d961c893e223ef27e79e1f53b5e6f14820ff553/SQLAlchemy-1.3.13.tar.gz (6.0MB)\n", "\u001b[K |████████████████████████████████| 6.0MB 43.9MB/s \n", "\u001b[?25hCollecting prometheus-flask-exporter\n", " Downloading https://files.pythonhosted.org/packages/84/b0/7549899a75e7ef0be5f8969094d0709e5dcc51dc21d58cc86b8d69441dce/prometheus_flask_exporter-0.15.4.tar.gz\n", "Collecting gorilla\n", " Downloading https://files.pythonhosted.org/packages/e3/56/5a683944cbfc77e429c6f03c636ca50504a785f60ffae91ddd7f5f7bb520/gorilla-0.3.0-py2.py3-none-any.whl\n", "Collecting docker>=4.0.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/3c/15/7a2f095a3b8b0fff9a0a5f56bd941e05fa958d4ca31105541001a5f7d3eb/docker-4.2.2-py2.py3-none-any.whl (144kB)\n", "\u001b[K |████████████████████████████████| 153kB 51.0MB/s \n", "\u001b[?25hCollecting gitpython>=2.1.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/f9/1e/a45320cab182bf1c8656107b3d4c042e659742822fc6bff150d769a984dd/GitPython-3.1.7-py3-none-any.whl (158kB)\n", "\u001b[K |████████████████████████████████| 163kB 51.2MB/s \n", "\u001b[?25hRequirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (3.13)\n", "Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (7.1.2)\n", "Requirement already satisfied: Flask in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (1.1.2)\n", "Collecting alembic\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/60/1e/cabc75a189de0fbb2841d0975243e59bde8b7822bacbb95008ac6fe9ad47/alembic-1.4.2.tar.gz (1.1MB)\n", "\u001b[K |████████████████████████████████| 1.1MB 43.7MB/s \n", "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", " Preparing wheel metadata ... \u001b[?25l\u001b[?25hdone\n", "Requirement already satisfied: cycler>=0.10.0 in /usr/local/lib/python3.6/dist-packages (from yellowbrick>=1.0.1->pycaret) (0.10.0)\n", "Collecting tangled-up-in-unicode>=0.0.6\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/4a/e2/e588ab9298d4989ce7fdb2b97d18aac878d99dbdc379a4476a09d9271b68/tangled_up_in_unicode-0.0.6-py3-none-any.whl (3.1MB)\n", "\u001b[K |████████████████████████████████| 3.1MB 31.0MB/s \n", "\u001b[?25hCollecting htmlmin>=0.1.12\n", " Downloading https://files.pythonhosted.org/packages/b3/e7/fcd59e12169de19f0131ff2812077f964c6b960e7c09804d30a7bf2ab461/htmlmin-0.1.12.tar.gz\n", "Collecting visions[type_image_path]==0.4.4\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/4a/03/5a45d542257830cf1d9da2cdc1c0bc6f55a9212937b70fdd6d7031b46d6c/visions-0.4.4-py3-none-any.whl (59kB)\n", "\u001b[K |████████████████████████████████| 61kB 7.9MB/s \n", "\u001b[?25hCollecting phik>=0.9.10\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/01/5a/7ef1c04ce62cd72f900c06298dc2385840550d5c653a0dbc19109a5477e6/phik-0.10.0-py3-none-any.whl (599kB)\n", "\u001b[K |████████████████████████████████| 604kB 45.3MB/s \n", "\u001b[?25hRequirement already satisfied: missingno>=0.4.2 in /usr/local/lib/python3.6/dist-packages (from pandas-profiling>=2.3.0->pycaret) (0.4.2)\n", "Requirement already satisfied: astropy>=4.0 in /usr/local/lib/python3.6/dist-packages (from pandas-profiling>=2.3.0->pycaret) (4.0.1.post1)\n", "Collecting confuse>=1.0.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/b5/6d/bedc0d1068bd244cee05843313cbec6cebb9f01f925538269bababc6d887/confuse-1.3.0-py2.py3-none-any.whl (64kB)\n", "\u001b[K |████████████████████████████████| 71kB 9.4MB/s \n", "\u001b[?25hCollecting zope.interface\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/57/33/565274c28a11af60b7cfc0519d46bde4125fcd7d32ebc0a81b480d0e8da6/zope.interface-5.1.0-cp36-cp36m-manylinux2010_x86_64.whl (234kB)\n", "\u001b[K |████████████████████████████████| 235kB 53.2MB/s \n", "\u001b[?25hRequirement already satisfied: retrying>=1.3.3 in /usr/local/lib/python3.6/dist-packages (from plotly>=4.4.1->pycaret) (1.3.3)\n", "Requirement already satisfied: graphviz in /usr/local/lib/python3.6/dist-packages (from catboost->pycaret) (0.10.1)\n", "Requirement already satisfied: colorlover>=0.2.1 in /usr/local/lib/python3.6/dist-packages (from cufflinks>=0.17.0->pycaret) (0.3.0)\n", "Requirement already satisfied: smart-open>=1.2.1 in /usr/local/lib/python3.6/dist-packages (from gensim->pycaret) (2.1.0)\n", "Requirement already satisfied: widgetsnbextension~=3.5.0 in /usr/local/lib/python3.6/dist-packages (from ipywidgets->pycaret) (3.5.1)\n", "Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.6/dist-packages (from ipywidgets->pycaret) (4.10.1)\n", "Requirement already satisfied: nbformat>=4.2.0 in /usr/local/lib/python3.6/dist-packages (from ipywidgets->pycaret) (5.0.7)\n", "Collecting threadpoolctl>=2.0.0\n", " Downloading https://files.pythonhosted.org/packages/f7/12/ec3f2e203afa394a149911729357aa48affc59c20e2c1c8297a60f33f133/threadpoolctl-2.1.0-py3-none-any.whl\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->pycaret) (1.2.0)\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->pycaret) (2.4.7)\n", "Requirement already satisfied: llvmlite<0.32.0,>=0.31.0dev0 in /usr/local/lib/python3.6/dist-packages (from numba>=0.35->pyod->pycaret) (0.31.0)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0,>=2.13.0->spacy->pycaret) (3.0.4)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0,>=2.13.0->spacy->pycaret) (2020.6.20)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0,>=2.13.0->spacy->pycaret) (1.24.3)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests<3.0.0,>=2.13.0->spacy->pycaret) (2.10)\n", "Requirement already satisfied: importlib-metadata>=0.20; python_version < \"3.8\" in /usr/local/lib/python3.6/dist-packages (from catalogue<1.1.0,>=0.0.7->spacy->pycaret) (1.7.0)\n", "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.6/dist-packages (from jinja2>=2.7.2->pyLDAvis->pycaret) (1.1.1)\n", "Requirement already satisfied: more-itertools>=4.0.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (8.4.0)\n", "Requirement already satisfied: py>=1.5.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (1.9.0)\n", "Requirement already satisfied: pluggy<0.8,>=0.5 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (0.7.1)\n", "Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (19.3.0)\n", "Requirement already satisfied: atomicwrites>=1.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (1.4.0)\n", "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.6/dist-packages (from pexpect; sys_platform != \"win32\"->IPython->pycaret) (0.6.0)\n", "Requirement already satisfied: wcwidth in /usr/local/lib/python3.6/dist-packages (from prompt-toolkit<2.0.0,>=1.0.4->IPython->pycaret) (0.2.5)\n", "Requirement already satisfied: ipython-genutils in /usr/local/lib/python3.6/dist-packages (from traitlets>=4.2->IPython->pycaret) (0.2.0)\n", "Collecting azure-core<2.0.0,>=1.6.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/8b/00/efb68e2dda82139d732090fc3b7ff47fe6f34724ea7ba31e518a854b15c1/azure_core-1.7.0-py2.py3-none-any.whl (121kB)\n", "\u001b[K |████████████████████████████████| 122kB 52.8MB/s \n", "\u001b[?25hCollecting msrest>=0.6.10\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/d9/ed/8e1b75721ad983c1672cd968ad3ae374d2e94767edff6f0b72a15dfde933/msrest-0.6.18-py2.py3-none-any.whl (84kB)\n", "\u001b[K |████████████████████████████████| 92kB 11.7MB/s \n", "\u001b[?25hCollecting cryptography>=2.1.4\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/ba/91/84a29d6a27fd6dfc21f475704c4d2053d58ed7a4033c2b0ce1b4ca4d03d9/cryptography-3.0-cp35-abi3-manylinux2010_x86_64.whl (2.7MB)\n", "\u001b[K |████████████████████████████████| 2.7MB 48.1MB/s \n", "\u001b[?25hRequirement already satisfied: tabulate>=0.7.7 in /usr/local/lib/python3.6/dist-packages (from databricks-cli>=0.8.7->mlflow->pycaret) (0.8.7)\n", "Requirement already satisfied: prometheus_client in /usr/local/lib/python3.6/dist-packages (from prometheus-flask-exporter->mlflow->pycaret) (0.8.0)\n", "Collecting websocket-client>=0.32.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/4c/5f/f61b420143ed1c8dc69f9eaec5ff1ac36109d52c80de49d66e0c36c3dfdf/websocket_client-0.57.0-py2.py3-none-any.whl (200kB)\n", "\u001b[K |████████████████████████████████| 204kB 48.0MB/s \n", "\u001b[?25hCollecting gitdb<5,>=4.0.1\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/48/11/d1800bca0a3bae820b84b7d813ad1eff15a48a64caea9c823fc8c1b119e8/gitdb-4.0.5-py3-none-any.whl (63kB)\n", "\u001b[K |████████████████████████████████| 71kB 9.4MB/s \n", "\u001b[?25hRequirement already satisfied: Werkzeug>=0.15 in /usr/local/lib/python3.6/dist-packages (from Flask->mlflow->pycaret) (1.0.1)\n", "Requirement already satisfied: itsdangerous>=0.24 in /usr/local/lib/python3.6/dist-packages (from Flask->mlflow->pycaret) (1.1.0)\n", "Collecting python-editor>=0.3\n", " Downloading https://files.pythonhosted.org/packages/c6/d3/201fc3abe391bbae6606e6f1d598c15d367033332bd54352b12f35513717/python_editor-1.0.4-py3-none-any.whl\n", "Collecting Mako\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/a6/37/0e706200d22172eb8fa17d68a7ae22dec7631a0a92266634fb518a88a5b2/Mako-1.1.3-py2.py3-none-any.whl (75kB)\n", "\u001b[K |████████████████████████████████| 81kB 10.8MB/s \n", "\u001b[?25hRequirement already satisfied: networkx>=2.4 in /usr/local/lib/python3.6/dist-packages (from visions[type_image_path]==0.4.4->pandas-profiling>=2.3.0->pycaret) (2.4)\n", "Collecting imagehash; extra == \"type_image_path\"\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/1a/5d/cc81830be3c4705a46cdbca74439b67f1017881383ba0127c41c4cecb7b3/ImageHash-4.1.0.tar.gz (291kB)\n", "\u001b[K |████████████████████████████████| 296kB 52.4MB/s \n", "\u001b[?25hRequirement already satisfied: boto in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim->pycaret) (2.49.0)\n", "Requirement already satisfied: boto3 in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim->pycaret) (1.14.33)\n", "Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.6/dist-packages (from widgetsnbextension~=3.5.0->ipywidgets->pycaret) (5.3.1)\n", "Requirement already satisfied: tornado>=4.0 in /usr/local/lib/python3.6/dist-packages (from ipykernel>=4.5.1->ipywidgets->pycaret) (5.1.1)\n", "Requirement already satisfied: jupyter-client in /usr/local/lib/python3.6/dist-packages (from ipykernel>=4.5.1->ipywidgets->pycaret) (5.3.5)\n", "Requirement already satisfied: jupyter-core in /usr/local/lib/python3.6/dist-packages (from nbformat>=4.2.0->ipywidgets->pycaret) (4.6.3)\n", "Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /usr/local/lib/python3.6/dist-packages (from nbformat>=4.2.0->ipywidgets->pycaret) (2.6.0)\n", "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.6/dist-packages (from importlib-metadata>=0.20; python_version < \"3.8\"->catalogue<1.1.0,>=0.0.7->spacy->pycaret) (3.1.0)\n", "Collecting isodate>=0.6.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/9b/9f/b36f7774ff5ea8e428fdcfc4bb332c39ee5b9362ddd3d40d9516a55221b2/isodate-0.6.0-py2.py3-none-any.whl (45kB)\n", "\u001b[K |████████████████████████████████| 51kB 7.4MB/s \n", "\u001b[?25hRequirement already satisfied: requests-oauthlib>=0.5.0 in /usr/local/lib/python3.6/dist-packages (from msrest>=0.6.10->azure-storage-blob>=12.0->mlflow->pycaret) (1.3.0)\n", "Requirement already satisfied: cffi!=1.11.3,>=1.8 in /usr/local/lib/python3.6/dist-packages (from cryptography>=2.1.4->azure-storage-blob>=12.0->mlflow->pycaret) (1.14.1)\n", "Collecting smmap<4,>=3.0.1\n", " Downloading https://files.pythonhosted.org/packages/b0/9a/4d409a6234eb940e6a78dfdfc66156e7522262f5f2fecca07dc55915952d/smmap-3.0.4-py2.py3-none-any.whl\n", "Requirement already satisfied: PyWavelets in /usr/local/lib/python3.6/dist-packages (from imagehash; extra == \"type_image_path\"->visions[type_image_path]==0.4.4->pandas-profiling>=2.3.0->pycaret) (1.1.1)\n", "Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python3.6/dist-packages (from boto3->smart-open>=1.2.1->gensim->pycaret) (0.10.0)\n", "Requirement already satisfied: botocore<1.18.0,>=1.17.33 in /usr/local/lib/python3.6/dist-packages (from boto3->smart-open>=1.2.1->gensim->pycaret) (1.17.33)\n", "Requirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /usr/local/lib/python3.6/dist-packages (from boto3->smart-open>=1.2.1->gensim->pycaret) (0.3.3)\n", "Requirement already satisfied: terminado>=0.8.1 in /usr/local/lib/python3.6/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (0.8.3)\n", "Requirement already satisfied: nbconvert in /usr/local/lib/python3.6/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (5.6.1)\n", "Requirement already satisfied: Send2Trash in /usr/local/lib/python3.6/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (1.5.0)\n", "Requirement already satisfied: pyzmq>=13 in /usr/local/lib/python3.6/dist-packages (from jupyter-client->ipykernel>=4.5.1->ipywidgets->pycaret) (19.0.2)\n", "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from requests-oauthlib>=0.5.0->msrest>=0.6.10->azure-storage-blob>=12.0->mlflow->pycaret) (3.1.0)\n", "Requirement already satisfied: pycparser in /usr/local/lib/python3.6/dist-packages (from cffi!=1.11.3,>=1.8->cryptography>=2.1.4->azure-storage-blob>=12.0->mlflow->pycaret) (2.20)\n", "Requirement already satisfied: docutils<0.16,>=0.10 in /usr/local/lib/python3.6/dist-packages (from botocore<1.18.0,>=1.17.33->boto3->smart-open>=1.2.1->gensim->pycaret) (0.15.2)\n", "Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.6/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (1.4.2)\n", "Requirement already satisfied: defusedxml in /usr/local/lib/python3.6/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (0.6.0)\n", "Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.6/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (0.8.4)\n", "Requirement already satisfied: testpath in /usr/local/lib/python3.6/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (0.4.4)\n", "Requirement already satisfied: bleach in /usr/local/lib/python3.6/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (3.1.5)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.6/dist-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (20.4)\n", "Requirement already satisfied: webencodings in /usr/local/lib/python3.6/dist-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->pycaret) (0.5.1)\n", "Building wheels for collected packages: alembic\n", " Building wheel for alembic (PEP 517) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for alembic: filename=alembic-1.4.2-cp36-none-any.whl size=159543 sha256=309fbef7b58de6f22d45967758ffe517a2963ef0741f4a541a87eb8a6ac48ba4\n", " Stored in directory: /root/.cache/pip/wheels/1f/04/83/76023f7a4c14688c0b5c2682a96392cfdd3ee4449eaaa287ef\n", "Successfully built alembic\n", "Building wheels for collected packages: pyod, pyLDAvis, combo, suod, funcy, querystring-parser, databricks-cli, sqlalchemy, prometheus-flask-exporter, htmlmin, imagehash\n", " Building wheel for pyod (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for pyod: filename=pyod-0.8.1-cp36-none-any.whl size=105653 sha256=41463c62ee01d31e88d6befa1b8a1c6535ea988713770f2885de476022c24c2b\n", " Stored in directory: /root/.cache/pip/wheels/2e/ca/18/727e9d98a41f5f4385a97d5b429f3a9c8fbee13f9780c18642\n", " Building wheel for pyLDAvis (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for pyLDAvis: filename=pyLDAvis-2.1.2-py2.py3-none-any.whl size=97711 sha256=6a63286df6295e0018bbb934b25549ef564ffce6b51024706765368a7ab9f999\n", " Stored in directory: /root/.cache/pip/wheels/98/71/24/513a99e58bb6b8465bae4d2d5e9dba8f0bef8179e3051ac414\n", " Building wheel for combo (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for combo: filename=combo-0.1.1-cp36-none-any.whl size=42111 sha256=49e5562899211ab1b3b8c05a843297e7b8c66c9e906af2319fb0d5c47e074113\n", " Stored in directory: /root/.cache/pip/wheels/55/ec/e5/a2331372c676c467e70c6646e646edf6997d5c4905b8c0f5e6\n", " Building wheel for suod (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for suod: filename=suod-0.0.4-cp36-none-any.whl size=2167157 sha256=21fcf9d4522bbf43b320fb71f72efccf1b482709ab1d85fe954f7de4c11a62bc\n", " Stored in directory: /root/.cache/pip/wheels/57/55/e5/a4fca65bba231f6d0115059b589148774b41faea25b3f2aa27\n", " Building wheel for funcy (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for funcy: filename=funcy-1.14-py2.py3-none-any.whl size=32042 sha256=c1ea9da984de369ccc7a10cf2828bc5ed8c26db59adbabf5217be546297ba163\n", " Stored in directory: /root/.cache/pip/wheels/20/5a/d8/1d875df03deae6f178dfdf70238cca33f948ef8a6f5209f2eb\n", " Building wheel for querystring-parser (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for querystring-parser: filename=querystring_parser-1.2.4-cp36-none-any.whl size=7079 sha256=0da67d12deb77e070027ff61d9b4d41455c514c8e0a1cd82a70486dcc41acda0\n", " Stored in directory: /root/.cache/pip/wheels/1e/41/34/23ebf5d1089a9aed847951e0ee375426eb4ad0a7079d88d41e\n", " Building wheel for databricks-cli (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for databricks-cli: filename=databricks_cli-0.11.0-cp36-none-any.whl size=90300 sha256=e22cba1e3e55d769750f7c28c4110c2e1f2cb9999a4377bbed550babc9a981ad\n", " Stored in directory: /root/.cache/pip/wheels/63/d0/4f/3deeca1f4c47a6aca7c2c6a6e2bf272391565dc86a7718a59b\n", " Building wheel for sqlalchemy (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for sqlalchemy: filename=SQLAlchemy-1.3.13-cp36-cp36m-linux_x86_64.whl size=1217157 sha256=4eb0a1dcc6b43c2a89bffdb95b3b380c876b852012f97e4b78b7bf196e785ac3\n", " Stored in directory: /root/.cache/pip/wheels/b3/35/98/4c9cb3fd63d21d5606b972dd70643769745adf60e622467b71\n", " Building wheel for prometheus-flask-exporter (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for prometheus-flask-exporter: filename=prometheus_flask_exporter-0.15.4-cp36-none-any.whl size=16454 sha256=d383c4d6f77b11d204000381eec6affc7aa3f9d354ec4650bc4a0729e296a1e1\n", " Stored in directory: /root/.cache/pip/wheels/4f/b4/70/b18fa12c1c0a30fd542767dbbcdac225c6aae012fa1b3124e4\n", " Building wheel for htmlmin (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for htmlmin: filename=htmlmin-0.1.12-cp36-none-any.whl size=27084 sha256=c11808ab108051c28e9a8ded5d08bc0aaa5d85f8445f2a3a4da75a705fbc0cf1\n", " Stored in directory: /root/.cache/pip/wheels/43/07/ac/7c5a9d708d65247ac1f94066cf1db075540b85716c30255459\n", " Building wheel for imagehash (setup.py) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for imagehash: filename=ImageHash-4.1.0-py2.py3-none-any.whl size=291990 sha256=c868a432cb639fcd99048a8f991dcb15a2c391d1ef24fb10bd7fc407478680ef\n", " Stored in directory: /root/.cache/pip/wheels/07/1c/dc/6831446f09feb8cc199ec73a0f2f0703253f6ae013a22f4be9\n", "Successfully built pyod pyLDAvis combo suod funcy querystring-parser databricks-cli sqlalchemy prometheus-flask-exporter htmlmin imagehash\n", "\u001b[31mERROR: pandas-profiling 2.8.0 has requirement tqdm>=4.43.0, but you'll have tqdm 4.41.1 which is incompatible.\u001b[0m\n", "Installing collected packages: threadpoolctl, scikit-learn, lightgbm, datefinder, combo, suod, pyod, kmodes, funcy, pyLDAvis, azure-core, isodate, msrest, cryptography, azure-storage-blob, querystring-parser, databricks-cli, gunicorn, sqlalchemy, prometheus-flask-exporter, gorilla, websocket-client, docker, smmap, gitdb, gitpython, python-editor, Mako, alembic, mlflow, yellowbrick, tangled-up-in-unicode, htmlmin, imagehash, visions, phik, confuse, pandas-profiling, zope.interface, DateTime, catboost, pycaret\n", " Found existing installation: scikit-learn 0.22.2.post1\n", " Uninstalling scikit-learn-0.22.2.post1:\n", " Successfully uninstalled scikit-learn-0.22.2.post1\n", " Found existing installation: lightgbm 2.2.3\n", " Uninstalling lightgbm-2.2.3:\n", " Successfully uninstalled lightgbm-2.2.3\n", " Found existing installation: SQLAlchemy 1.3.18\n", " Uninstalling SQLAlchemy-1.3.18:\n", " Successfully uninstalled SQLAlchemy-1.3.18\n", " Found existing installation: yellowbrick 0.9.1\n", " Uninstalling yellowbrick-0.9.1:\n", " Successfully uninstalled yellowbrick-0.9.1\n", " Found existing installation: pandas-profiling 1.4.1\n", " Uninstalling pandas-profiling-1.4.1:\n", " Successfully uninstalled pandas-profiling-1.4.1\n", "Successfully installed DateTime-4.3 Mako-1.1.3 alembic-1.4.2 azure-core-1.7.0 azure-storage-blob-12.3.2 catboost-0.24 combo-0.1.1 confuse-1.3.0 cryptography-3.0 databricks-cli-0.11.0 datefinder-0.7.1 docker-4.2.2 funcy-1.14 gitdb-4.0.5 gitpython-3.1.7 gorilla-0.3.0 gunicorn-20.0.4 htmlmin-0.1.12 imagehash-4.1.0 isodate-0.6.0 kmodes-0.10.2 lightgbm-2.3.1 mlflow-1.10.0 msrest-0.6.18 pandas-profiling-2.8.0 phik-0.10.0 prometheus-flask-exporter-0.15.4 pyLDAvis-2.1.2 pycaret-2.0 pyod-0.8.1 python-editor-1.0.4 querystring-parser-1.2.4 scikit-learn-0.23.2 smmap-3.0.4 sqlalchemy-1.3.13 suod-0.0.4 tangled-up-in-unicode-0.0.6 threadpoolctl-2.1.0 visions-0.4.4 websocket-client-0.57.0 yellowbrick-1.1 zope.interface-5.1.0\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "9ojSqYgIZf7s", "colab_type": "text" }, "source": [ "## Dataset Introduction:\n", "Cardiotocography\n", "Since we all know that there are numerous techniques available to observe the fetus and ultrasound technique is one of the common ones but this ultrasound technique is not very helpful to record the heart-rate of the fetus and other details such as uterine contractions. This is where the cardiotocography comes into play. Cardiotocography is the technique that helps doctors to trace the heart rate of the fetus, which includes measuring accelerations, decelerations, and variability, with the help of uterine contractions. Further, this cardiotocography can be used to classify fetus into three states namely:\n", "* Normal trace\n", "* Suspicious trace\n", "* Pathological trace\n", "\n", "## Problem Statement\n", "Fetal Pulse Rate and Uterine Contractions (UC) are among the basic and common diagnostic techniques to judge maternal and fetal well-being during pregnancy and before delivery. By observing the Cardiotocography data doctors can predict and observe the state of the fetus. Therefore we’ll use CTG data to predict the state of the fetus. \n", "\n", "Dataset link: https://www.kaggle.com/akshat0007/fetalhr" ] }, { "cell_type": "code", "metadata": { "id": "1pkwzPRqORn-", "colab_type": "code", "colab": {} }, "source": [ "## Reading the dataset using pandas\n", "df=pd.read_csv(\"CTG.csv\")" ], "execution_count": 36, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "nfMRHcmwORoC", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 216 }, "outputId": "5f96bdfc-07b6-40fc-df7c-3c38652ef15c" }, "source": [ "## Having a look of our data\n", "df.head()" ], "execution_count": 4, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FileNameDateSegFilebeLBELBACFMUCASTVMSTVALTVMLTVDLDSDPDRWidthMinMaxNmaxNzerosModeMeanMedianVarianceTendencyABCDEADDELDFSSUSPCLASSNSP
0Variab10.txt12/1/1996CTG0001.txt240.0357.0120.0120.00.00.00.073.00.543.02.40.00.00.00.064.062.0126.02.00.0120.0137.0121.073.01.00.00.00.00.00.00.00.00.01.00.09.02.0
1Fmcs_1.txt5/3/1996CTG0002.txt5.0632.0132.0132.04.00.04.017.02.10.010.42.00.00.00.0130.068.0198.06.01.0141.0136.0140.012.00.00.00.00.00.00.01.00.00.00.00.06.01.0
2Fmcs_1.txt5/3/1996CTG0003.txt177.0779.0133.0133.02.00.05.016.02.10.013.42.00.00.00.0130.068.0198.05.01.0141.0135.0138.013.00.00.00.00.00.00.01.00.00.00.00.06.01.0
3Fmcs_1.txt5/3/1996CTG0004.txt411.01192.0134.0134.02.00.06.016.02.40.023.02.00.00.00.0117.053.0170.011.00.0137.0134.0137.013.01.00.00.00.00.00.01.00.00.00.00.06.01.0
4Fmcs_1.txt5/3/1996CTG0005.txt533.01147.0132.0132.04.00.05.016.02.40.019.90.00.00.00.0117.053.0170.09.00.0137.0136.0138.011.01.00.01.00.00.00.00.00.00.00.00.02.01.0
\n", "
" ], "text/plain": [ " FileName Date SegFile b ... FS SUSP CLASS NSP\n", "0 Variab10.txt 12/1/1996 CTG0001.txt 240.0 ... 1.0 0.0 9.0 2.0\n", "1 Fmcs_1.txt 5/3/1996 CTG0002.txt 5.0 ... 0.0 0.0 6.0 1.0\n", "2 Fmcs_1.txt 5/3/1996 CTG0003.txt 177.0 ... 0.0 0.0 6.0 1.0\n", "3 Fmcs_1.txt 5/3/1996 CTG0004.txt 411.0 ... 0.0 0.0 6.0 1.0\n", "4 Fmcs_1.txt 5/3/1996 CTG0005.txt 533.0 ... 0.0 0.0 2.0 1.0\n", "\n", "[5 rows x 40 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "markdown", "metadata": { "id": "hc0WTN3jORoF", "colab_type": "text" }, "source": [ "# Feature Abbreviations used in the dataset :-\n", "\n", "\n", "\n", "### FileName:\tof CTG examination\t\n", "### Date:\tof the examination\t\n", "### b:\tstart instant\t\n", "### e:\tend instant\t\n", "### LBE:\tbaseline value (medical expert)\t\n", "### LB:\tbaseline value (SisPorto)\t\n", "### AC:\taccelerations (SisPorto)\t\n", "### FM:\tfoetal movement (SisPorto)\t\n", "### UC:\tuterine contractions (SisPorto)\t\n", "### ASTV:\tpercentage of time with abnormal short term variability (SisPorto)\t\n", "### mSTV:\tmean value of short term variability (SisPorto)\t\n", "### ALTV:\tpercentage of time with abnormal long term variability (SisPorto)\t\n", "### mLTV:\tmean value of long term variability (SisPorto)\t\n", "### DL:\tlight decelerations\t\n", "### DS:\tsevere decelerations\t\n", "### DP:\tprolongued decelerations\t\n", "### DR:\trepetitive decelerations\t\n", "### Width:\thistogram width\t\n", "### Min:\tlow freq. of the histogram\t\n", "### Max:\thigh freq. of the histogram\t\n", "### Nmax:\tnumber of histogram peaks\t\n", "### Nzeros:\tnumber of histogram zeros\t\n", "### Mode:\thistogram mode\t\n", "### Mean:\thistogram mean\t\n", "### Median:\thistogram median\t\n", "### Variance:\thistogram variance\t\n", "### Tendency:\thistogram tendency: -1=left assymetric; 0=symmetric; 1=right assymetric\t\n", "### A:\tcalm sleep\t\n", "### B:\tREM sleep\t\n", "### C:\tcalm vigilance\t\n", "### D:\tactive vigilance\t\n", "### SH:\tshift pattern (A or Susp with shifts)\t\n", "### AD:\taccelerative/decelerative pattern (stress situation)\t\n", "### DE:\tdecelerative pattern (vagal stimulation)\t\n", "### LD:\tlargely decelerative pattern\t\n", "### FS:\tflat-sinusoidal pattern (pathological state)\t\n", "### SUSP:\tsuspect pattern\t\n", "### CLASS:\tClass code (1 to 10) for classes A to SUSP\t\n", "### NSP:\tNormal=1; Suspect=2; Pathologic=3\t\n" ] }, { "cell_type": "code", "metadata": { "id": "qS3F3sS9ORoG", "colab_type": "code", "colab": {} }, "source": [ "## Dropping the columns which we don't need\n", "df=df.drop([\"FileName\",\"Date\",\"SegFile\",\"b\",\"e\"],axis=1)" ], "execution_count": 37, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "8_j3dXzCORoI", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 216 }, "outputId": "97ba0c46-aeb1-4170-be52-52bbfbc52df1" }, "source": [ "df.head()" ], "execution_count": 6, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LBELBACFMUCASTVMSTVALTVMLTVDLDSDPDRWidthMinMaxNmaxNzerosModeMeanMedianVarianceTendencyABCDEADDELDFSSUSPCLASSNSP
0120.0120.00.00.00.073.00.543.02.40.00.00.00.064.062.0126.02.00.0120.0137.0121.073.01.00.00.00.00.00.00.00.00.01.00.09.02.0
1132.0132.04.00.04.017.02.10.010.42.00.00.00.0130.068.0198.06.01.0141.0136.0140.012.00.00.00.00.00.00.01.00.00.00.00.06.01.0
2133.0133.02.00.05.016.02.10.013.42.00.00.00.0130.068.0198.05.01.0141.0135.0138.013.00.00.00.00.00.00.01.00.00.00.00.06.01.0
3134.0134.02.00.06.016.02.40.023.02.00.00.00.0117.053.0170.011.00.0137.0134.0137.013.01.00.00.00.00.00.01.00.00.00.00.06.01.0
4132.0132.04.00.05.016.02.40.019.90.00.00.00.0117.053.0170.09.00.0137.0136.0138.011.01.00.01.00.00.00.00.00.00.00.00.02.01.0
\n", "
" ], "text/plain": [ " LBE LB AC FM UC ASTV ... DE LD FS SUSP CLASS NSP\n", "0 120.0 120.0 0.0 0.0 0.0 73.0 ... 0.0 0.0 1.0 0.0 9.0 2.0\n", "1 132.0 132.0 4.0 0.0 4.0 17.0 ... 0.0 0.0 0.0 0.0 6.0 1.0\n", "2 133.0 133.0 2.0 0.0 5.0 16.0 ... 0.0 0.0 0.0 0.0 6.0 1.0\n", "3 134.0 134.0 2.0 0.0 6.0 16.0 ... 0.0 0.0 0.0 0.0 6.0 1.0\n", "4 132.0 132.0 4.0 0.0 5.0 16.0 ... 0.0 0.0 0.0 0.0 2.0 1.0\n", "\n", "[5 rows x 35 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { "id": "2lTTiQ0LORoL", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 100 }, "outputId": "cebda70b-1bcd-493d-d00a-d73857a37c5b" }, "source": [ "df.columns" ], "execution_count": 7, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['LBE', 'LB', 'AC', 'FM', 'UC', 'ASTV', 'MSTV', 'ALTV', 'MLTV', 'DL',\n", " 'DS', 'DP', 'DR', 'Width', 'Min', 'Max', 'Nmax', 'Nzeros', 'Mode',\n", " 'Mean', 'Median', 'Variance', 'Tendency', 'A', 'B', 'C', 'D', 'E', 'AD',\n", " 'DE', 'LD', 'FS', 'SUSP', 'CLASS', 'NSP'],\n", " dtype='object')" ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "markdown", "metadata": { "id": "gK6s6aXbRxlZ", "colab_type": "text" }, "source": [ "## Performing some basic preprocessing techniques" ] }, { "cell_type": "code", "metadata": { "id": "W8hRcAhlORoQ", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "ab1046ff-8419-4aa2-a36c-2bcc92c759d3" }, "source": [ "## This will print the number of columns and rows\n", "print(df.shape)" ], "execution_count": 34, "outputs": [ { "output_type": "stream", "text": [ "(2126, 35)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "QW-KthkFORoT", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 619 }, "outputId": "1ee8f939-b347-45c0-91cb-cb9d24422e3b" }, "source": [ "## Checking for the null values\n", "df.isnull().sum()" ], "execution_count": 9, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LBE 3\n", "LB 3\n", "AC 3\n", "FM 2\n", "UC 2\n", "ASTV 2\n", "MSTV 2\n", "ALTV 2\n", "MLTV 2\n", "DL 1\n", "DS 1\n", "DP 1\n", "DR 1\n", "Width 3\n", "Min 3\n", "Max 3\n", "Nmax 3\n", "Nzeros 3\n", "Mode 3\n", "Mean 3\n", "Median 3\n", "Variance 3\n", "Tendency 3\n", "A 3\n", "B 3\n", "C 3\n", "D 3\n", "E 3\n", "AD 3\n", "DE 3\n", "LD 3\n", "FS 3\n", "SUSP 3\n", "CLASS 3\n", "NSP 3\n", "dtype: int64" ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "code", "metadata": { "id": "mJjIfadIORoW", "colab_type": "code", "colab": {} }, "source": [ "## Dropping the the rows containing null values\n", "df=df.dropna()" ], "execution_count": 35, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "VojGGVKZORoY", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 619 }, "outputId": "528a202a-4a5a-43f2-c62c-604a5d7efb89" }, "source": [ "df.isnull().sum()" ], "execution_count": 11, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LBE 0\n", "LB 0\n", "AC 0\n", "FM 0\n", "UC 0\n", "ASTV 0\n", "MSTV 0\n", "ALTV 0\n", "MLTV 0\n", "DL 0\n", "DS 0\n", "DP 0\n", "DR 0\n", "Width 0\n", "Min 0\n", "Max 0\n", "Nmax 0\n", "Nzeros 0\n", "Mode 0\n", "Mean 0\n", "Median 0\n", "Variance 0\n", "Tendency 0\n", "A 0\n", "B 0\n", "C 0\n", "D 0\n", "E 0\n", "AD 0\n", "DE 0\n", "LD 0\n", "FS 0\n", "SUSP 0\n", "CLASS 0\n", "NSP 0\n", "dtype: int64" ] }, "metadata": { "tags": [] }, "execution_count": 11 } ] }, { "cell_type": "code", "metadata": { "id": "6w2Qld4GORoa", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 619 }, "outputId": "317d255a-6a28-45b4-d6d4-9a7c4681ccd3" }, "source": [ "## Checking the data type of the columns\n", "df.dtypes" ], "execution_count": 12, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "LBE float64\n", "LB float64\n", "AC float64\n", "FM float64\n", "UC float64\n", "ASTV float64\n", "MSTV float64\n", "ALTV float64\n", "MLTV float64\n", "DL float64\n", "DS float64\n", "DP float64\n", "DR float64\n", "Width float64\n", "Min float64\n", "Max float64\n", "Nmax float64\n", "Nzeros float64\n", "Mode float64\n", "Mean float64\n", "Median float64\n", "Variance float64\n", "Tendency float64\n", "A float64\n", "B float64\n", "C float64\n", "D float64\n", "E float64\n", "AD float64\n", "DE float64\n", "LD float64\n", "FS float64\n", "SUSP float64\n", "CLASS float64\n", "NSP float64\n", "dtype: object" ] }, "metadata": { "tags": [] }, "execution_count": 12 } ] }, { "cell_type": "markdown", "metadata": { "id": "vCVQdQ9ZR3Mv", "colab_type": "text" }, "source": [ "## Importing the pycaret library" ] }, { "cell_type": "code", "metadata": { "id": "7oVTEnMxORod", "colab_type": "code", "colab": {} }, "source": [ "# This command will basically import all the modules from pycaret that are necessary for classification tasks\n", "from pycaret.classification import *" ], "execution_count": 15, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "mmTt0qoaPb8B", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 918, "referenced_widgets": [ "85013890037d4eae9e46bce44ef6fe31", "d1726335eb9847dcb8c408db31d29e39", "c069b042d8ee4808a04e5a02388dbc89", "8b11b69c85564a5fbd8a7656ff91e850", "2016bba888b7450f96b6018d8100e534", "d82f871fd9494cd29198d0758cc3ddde" ] }, "outputId": "9d1c6476-fffd-4d78-c678-b3a8c9ed1ace" }, "source": [ "# Setting up the classifier\n", "# Pass the complete dataset as data and the featured to be predicted as target\n", "clf=setup(data=df,target='NSP')" ], "execution_count": 20, "outputs": [ { "output_type": "stream", "text": [ "Setup Succesfully Completed!\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Description Value
0session_id4471
1Target TypeMulticlass
2Label EncodedNone
3Original Data(2126, 35)
4Missing Values False
5Numeric Features 23
6Categorical Features 11
7Ordinal Features False
8High Cardinality Features False
9High Cardinality Method None
10Sampled Data(2126, 35)
11Transformed Train Set(1488, 45)
12Transformed Test Set(638, 45)
13Numeric Imputer mean
14Categorical Imputer constant
15Normalize False
16Normalize Method None
17Transformation False
18Transformation Method None
19PCA False
20PCA Method None
21PCA Components None
22Ignore Low Variance False
23Combine Rare Levels False
24Rare Level Threshold None
25Numeric Binning False
26Remove Outliers False
27Outliers Threshold None
28Remove Multicollinearity False
29Multicollinearity Threshold None
30Clustering False
31Clustering Iteration None
32Polynomial Features False
33Polynomial Degree None
34Trignometry Features False
35Polynomial Threshold None
36Group Features False
37Feature Selection False
38Features Selection Threshold None
39Feature Interaction False
40Feature Ratio False
41Interaction Threshold None
42Fix ImbalanceFalse
43Fix Imbalance MethodSMOTE
" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "5c5D_CcpP4pR", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 633, "referenced_widgets": [ "04d55d6a1d1a482a9b7009586b58979b", "f09f1960e4254302a99b590ce733d608", "fff4b352b5594f77bf468695d468f288" ] }, "outputId": "a4a72143-5ccf-4429-f9cd-af1da1210ab0" }, "source": [ "# This model will be used to compare all the model along with the cross validation\n", "compare_models()" ], "execution_count": 18, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Model Accuracy AUC Recall Prec. F1 Kappa MCC TT (Sec)
0Extra Trees Classifier0.99260.00000.98500.99280.99250.97950.98000.6159
1Extreme Gradient Boosting0.99260.00000.98630.99280.99250.97960.98000.4475
2Random Forest Classifier0.99130.00000.98180.99140.99110.97580.97630.2814
3Light Gradient Boosting Machine0.99130.00000.98170.99150.99110.97580.97630.3541
4CatBoost Classifier0.99130.00000.98180.99150.99110.97580.97639.7183
5Ada Boost Classifier0.98790.00000.97770.98820.98770.96650.96720.4853
6Gradient Boosting Classifier0.98790.00000.97630.98810.98770.96660.96721.2628
7Ridge Classifier0.98590.00000.96890.98620.98550.96040.96150.0282
8Linear Discriminant Analysis0.98590.00000.96890.98620.98550.96040.96150.0674
9Decision Tree Classifier0.98050.00000.96920.98150.98050.94720.94760.0355
10Logistic Regression0.95900.00000.90350.95970.95780.88450.88690.2037
11Naive Bayes0.94290.00000.96510.95670.94630.85800.86580.0160
12SVM - Linear Kernel0.91740.00000.79010.92060.91330.76210.77120.0476
13K Neighbors Classifier0.90790.00000.79490.90510.90390.73510.74020.0295
14Quadratic Discriminant Analysis0.88040.00000.92440.93660.89440.74150.76970.0312
" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "execute_result", "data": { "text/plain": [ "OneVsRestClassifier(estimator=ExtraTreesClassifier(bootstrap=False,\n", " ccp_alpha=0.0,\n", " class_weight=None,\n", " criterion='gini',\n", " max_depth=None,\n", " max_features='auto',\n", " max_leaf_nodes=None,\n", " max_samples=None,\n", " min_impurity_decrease=0.0,\n", " min_impurity_split=None,\n", " min_samples_leaf=1,\n", " min_samples_split=2,\n", " min_weight_fraction_leaf=0.0,\n", " n_estimators=100, n_jobs=-1,\n", " oob_score=False,\n", " random_state=8450, verbose=0,\n", " warm_start=False),\n", " n_jobs=-1)" ] }, "metadata": { "tags": [] }, "execution_count": 18 } ] }, { "cell_type": "markdown", "metadata": { "id": "jlbJqN8fS_fb", "colab_type": "text" }, "source": [ "### The AUC score is 0.000 because it is not supported for the muli-classification tasks\n", "\n", "### Also, from the above it is understood that Extreme Gradient Boosting(popularly known as XGBoost) model really performed well. So, we will proceed with Extreme Gradient Boosting model." ] }, { "cell_type": "markdown", "metadata": { "id": "fXcVr-yCTtBx", "colab_type": "text" }, "source": [ "## Creating the Extreme Gradient Boosting(XGBoost) model" ] }, { "cell_type": "code", "metadata": { "id": "Rvy2ZevaRQB4", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 273, "referenced_widgets": [ "1deea41a50a34193a4a1d4a53ef32286", "aa38ef63b6d4402fabe4edb0d6419168", "ed7d18dacd964948995dc160f99736cf" ] }, "outputId": "05eac637-6b6a-45f4-cdfd-1d9e15008faf" }, "source": [ "xgboost_classifier=create_model('xgboost')" ], "execution_count": 22, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Accuracy AUC Recall Prec. F1 Kappa MCC
00.98660.00000.96830.98680.98630.96260.9634
11.00000.00001.00001.00001.00001.00001.0000
20.97990.00000.95240.98040.97920.94320.9450
30.99330.00000.98410.99380.99330.98180.9819
41.00000.00001.00001.00001.00001.00001.0000
50.97990.00000.96540.97960.97970.94600.9461
60.99330.00000.99710.99360.99340.98240.9826
70.97320.00000.93330.97400.97190.92350.9266
80.99320.00000.98330.99330.99320.98100.9812
91.00000.00001.00001.00001.00001.00001.0000
Mean0.98990.00000.97840.99020.98970.97210.9727
SD0.00910.00000.02190.00900.00950.02570.0248
" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "ov9ni9O_TpsF", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 251 }, "outputId": "7e5e6e5b-664c-431f-bcc0-c1a60c517e75" }, "source": [ "## Let's now check the model hyperparameters\n", "print(xgboost_classifier)" ], "execution_count": 23, "outputs": [ { "output_type": "stream", "text": [ "OneVsRestClassifier(estimator=XGBClassifier(base_score=0.5, booster='gbtree',\n", " colsample_bylevel=1,\n", " colsample_bynode=1,\n", " colsample_bytree=1, gamma=0,\n", " learning_rate=0.1, max_delta_step=0,\n", " max_depth=3, min_child_weight=1,\n", " missing=None, n_estimators=100,\n", " n_jobs=-1, nthread=None,\n", " objective='binary:logistic',\n", " random_state=4471, reg_alpha=0,\n", " reg_lambda=1, scale_pos_weight=1,\n", " seed=None, silent=None, subsample=1,\n", " verbosity=0),\n", " n_jobs=-1)\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "mdZAVDx2UPfN", "colab_type": "text" }, "source": [ "## Tuning the hyperparametes for better performance" ] }, { "cell_type": "code", "metadata": { "id": "N2oq1DlCUKVU", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 273, "referenced_widgets": [ "d73315df6042479586c9f7782ba8490b", "92b07214d46b4ae988829aeecd46b921", "7b59664e0dc74453889dbcde7ddd4978" ] }, "outputId": "05d577e0-1b52-467d-bc5a-f1cec63be28c" }, "source": [ "# Whenenver we compare different models or build a model, the model uses deault\n", "#hyperparameter values. Hence, we need to tune our model to get better performance\n", "\n", "tuned_xgboost_classifier=tune_model(xgboost_classifier)" ], "execution_count": 26, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Accuracy AUC Recall Prec. F1 Kappa MCC
00.98660.00000.96830.98680.98630.96260.9634
11.00000.00001.00001.00001.00001.00001.0000
20.97990.00000.95240.98040.97920.94320.9450
30.99330.00000.98410.99380.99330.98180.9819
41.00000.00001.00001.00001.00001.00001.0000
50.98660.00000.98120.98660.98660.96440.9644
60.99330.00000.99710.99360.99340.98240.9826
70.97990.00000.95000.98040.97920.94330.9451
80.98650.00000.96670.98710.98630.96210.9626
91.00000.00001.00001.00001.00001.00001.0000
Mean0.99060.00000.98000.99090.99040.97400.9745
SD0.00750.00000.01870.00730.00770.02100.0204
" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "nFWNkrBXU8Dr", "colab_type": "text" }, "source": [ "#### We can clearly conclude that our tuned model has performed better than our original model with default hyperparameters. The mean accuracy increased from 0.9899 to 0.9906\n", "\n", "#### pycaret library really makes the process of tuning hyperparameters easy\n", "#### We just need to pass the model in the following command\n", "#### tune_model(model_name)" ] }, { "cell_type": "markdown", "metadata": { "id": "47ReN5fjWgyr", "colab_type": "text" }, "source": [ "## Plotting classification plots" ] }, { "cell_type": "markdown", "metadata": { "id": "ow6SMWB0Wy4s", "colab_type": "text" }, "source": [ "## Classification Report" ] }, { "cell_type": "code", "metadata": { "id": "WqjMk3NAWfXf", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 401, "referenced_widgets": [ "aec1a6ff8c24465d9a90d427594eb11f" ] }, "outputId": "e7bf4228-8280-4e92-e2ac-5a92138e7503" }, "source": [ "plot_model(tuned_xgboost_classifier,plot='class_report')" ], "execution_count": 27, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAGACAYAAAAnNfF1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde3yO9ePH8dd972gHsy1zaGLJ+ZyIpmS2GTkUq62TlPJNSIkUMgpJKhlSUgqhNEIhaqUcQo4jc8oMYwfHHex4/f7Yz53l2ii2Zd7Px8PDrutzXZ/r87k/u3e978913fdtMQzDQERERORvrKXdABEREflvUkgQERERUwoJIiIiYkohQUREREwpJIiIiIgphQQRERExpZAgGIbBZ599RpcuXQgJCaFDhw6MHDmSkydP/us64+LiaNSoEWfPnr2kLDw8nK+++qrQfaOiomjatCkhISG29nTu3JnFixf/6/YAfPnllwWWf/75Z8LCwujQoQPt27enb9++HDhwwNaGXr16XdXxzISEhJCcnExubi49e/YkICCA2NhY2/qrYRgGn376KZ07d6ZDhw4EBgYyatQozp07B8Arr7zCtGnTrkU3bHbs2EHv3r0BiI+PJygoiG7duhVY/29s376dPXv2ADBnzhwmTZp0TdoLEBAQQLt27Wy/X0FBQTz//PMkJSVds2MUJSsr66p/l0VKjCE3vHfeecfo0aOHkZCQYBiGYWRnZxsTJkwwOnXqZGRkZPzresPDw4358+cXWBcXF2c0adLEOHfuXKH7ff3118YTTzxRYN3BgweNFi1aGPv37/9XbUlMTDSCgoJsy9HR0Ya/v7+xefNmwzAMIy8vz5g/f77RsmVLIzk52bQN19KxY8eMunXrGllZWdeszgkTJhihoaHG8ePHDcMwjLS0NGPYsGHGww8/bOTl5RlDhw41pk6des2O93eLFi0yHn744WtS12uvvWYsXrz4mtT1d+3atTM2bdpkW87JyTFef/11Y9CgQcVyvL/bunVrsf5uiVxLmkm4wZ0+fZrPPvuMt99+m8qVKwNgb2/PkCFDcHJy4ptvvgHyX33Nnz+f0NBQ2rRpw/jx4211rF69mi5dutC+fXueeuop2wxE9+7dWbJkSYHjLVmyhMDAQNzc3Ni7dy9hYWHcd999BAcHM2fOnELb6efnh5+fH3v37gVg//79PPbYY3To0IEuXbqwc+dOANLS0ujXrx8dO3akffv2jBgxguzsbMLDwzl27BghISFkZWURGRnJgAEDaN68OQAWi4WwsDDeeustnJycChw7OTmZ3r17ExISQkBAAJ9++qmtbM6cOXTs2JGQkBBCQ0PZt29fkevr1KnD0aNHefzxx8nLy6NLly7s2bOHOnXqcPz4cQAWLFhgO9agQYM4f/48kD8T8Oabb9KlSxeWL19+yTjOnj2b8ePHU6lSJQBcXFwYOXIkTz/9NMbfPjNt69atdO/enZCQEDp16sS6desAyMnJYfjw4XTo0IGgoCD69+9Pampqoet/++03goKC2Lp1KxMnTmT37t107drVth7g/PnzvPzyywQEBNCxY0fb71RGRgYvvPACHTp0ICAggLfeeguAefPm8c033/D222/z6aefEhkZyfDhwwE4duwYvXv3vmR26ciRI7Rp04bPP/+cLl26cPfdd/Pdd98V+vt0MTs7O+69917bzIVhGEyZMoUOHTrQrl07xowZQ25uLpD/PJgxYwbdu3enVatWBWY4li9fTufOnQkJCaFnz54cPnwYgMjISEaMGEFoaCgfffQR/fv3Z9u2bTzyyCNX1D6RUlXaKUVK108//WR06NDBtCwyMtL26qpdu3bGoEGDjJycHOP48eNGgwYNjISEBOPw4cNGs2bNjNjYWMMwDGP69OnGgAEDDMMwjHPnzhlNmzY1jhw5YqszODjYWLt2rWEYhjFgwAAjKirKMAzDSElJMfr27WtkZmaavorfvHmz0axZMyM+Pt7Izc01goODjS+//NJW1qZNGyM7O9uYM2eO8corrxiGkT8jMnLkSGP37t3Ghg0bjMDAQMMw8l9h16lTx/aK28zFbXj99deNkSNHGoZhGIcPHzYaNGhgHDt2zDh37pxxxx132GZFvvvuO+Ojjz4qdL1hGEbt2rWNhIQEIz4+3qhXr57teBfWb9q0yWjdurWtba+99poxfvx4wzAMY+jQoUaXLl2M8+fPX9Len376qcBMiZmLZxI6d+5sLFu2zDCM/BmAC49NdHS00bNnTyMvL8/Iy8sz3nvvPWPNmjWFrr/4cb34Mbt4/dSpU40XXnjBMAzDSEhIMJo3b24cP37cmDlzpvH0008beXl5xunTp42WLVvaXuE/9thjtpmEyZMnG8OGDTMM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OvDPH3FyciqNQ8s/EGHElnYT5DI0RtcJrydKuwVSlMxMOBJT2q34TyqVkPC+XwAZCcmlcWi5AhdOPKMtdUq5JVKUCCNWY3QdiDBi+VHj9J9mqXIT5ZdOLtmD3nobWNP/+X55LpB27ZtTGF1uEBEREVMKCSIiImJKIUFERERMKSSIiIiIKYUEERERMaWQICIiIqYUEkRERMSUQoKIiIiYUkgQERERUwoJIiIiYkohQUREREwpJIiIiIgphQQRERExpZAgIiIiphQSRERExJRCgoiIiJhSSBARERFTCgkiIiJiSiFBRERETCkkiIiIiCmFBBERETGlkCAiIiKmFBJERETElEKCiIiImFJIEBEREVMKCSIiImJKIUFERERMKSSIiIiIKYUEERERMaWQICIiIqYUEkRERMSUQoKIiIiYUkgQERERUwoJIiIiYsq+tBsgIiJyo7F41sLikP3P98t2gLRiaFAhNJMgIiIipjSTICIiUoaMGzeO7du3Y7FYGDZsGI0bN7aVbdiwgXfffRer1Yqfnx9jx47Fai18vkAzCSIiImXExo0biYuLY8GCBYwdO5axY8cWKB85ciSTJ09m/vz5pKWl8csvvxRZn0KCiIhIGbF+/XoCAwMBqFmzJmfOnCE1NdVWHhUVReXKlQHw8vLi1KlTRdankCAiIlJGJCcn4+npaVv28vIiKSnJtuzm5gZAYmIia9eupW3btkXWp5AgIiJSRhmGccm6lJQUnn32WSIiIgoECjMKCSIiImWEj48PycnJtuXExEQqVqxoW05NTeWZZ57hhRdeoE2bNpetTyFBRESkjPD392flypUA7Nq1Cx8fH9slBoDx48fzxBNPcM8991xRfXoLpIiISBlx++2306BBA8LDw7FYLERERBAVFYW7uztt2rRh8eLFxMXFsXDhQgA6d+5MWFhYofUpJIiIiJQhgwcPLrBct25d288xMTH/qC6FhL+p0a4VwRNfxtHNhdNxx/jmyVc5d/REgW1qdribwPEv4VzBncRd+1n0+MucP3UGi50dQW8NptZ992JfzolNU+aybuJMANyr+nDf9NF43VYdi8XCb+9/zubp80qji9e94hojr1o16Dx9NO5VfcjNzmb9xE/Y/vni0uhimVBc4/RE9Od43lqN7PTztno+b/8E544llmj/bgTendrS5NuPWFcjgOzkU9SOHEH5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y48ap/80S5WbKL90Mg0bNsTJyenyO1yFC+fBhr6xODn888tkmdkOxBypUyJthSuYSWjYsCGzZ88utLxFixYsWLDgmjZKRERESp9uXBQRERFTCgkiIiJiSiFBRERETCkkiIiIiCmFBBERETGlkCAiIiKmFBJERETElEKCiIiImFJIEBEREVMKCSIiImJKIUFERERMKSSIiIiIqav6qmgRERH5FyrUgX/zJY6ZwJFr3ZjCaSZBRERETCkkiIiIiCmFBBERETGlkCAiIiKmFBJERETElEKCiIiImFJIEBEREVMKCSIiImJKIUFERERMKSSIiIiIKYUEERERMaWQICIiIqYUEkRERMSUQoKIiIiYUkgQERERUwoJIiIiYkohQUREREwpJIiIiIgphQQRERExpZAgIiIiphQSRERExJRCgoiIiJhSSBARERFTCgkiIiJiSiFBRERETCkkiIiIiCmFBBERETGlkCAiIiKmFBJERETElEKCiIiImFJIEBERKUPGjRtHWFgY4eHh7Nixo0DZunXrCA0NJSwsjKlTp162LoUEERGRMmLjxo3ExcWxYMECxo4dy9ixYwuUjxkzhsjISObNm8fatWvZv39/kfUpJIiIiJQR69evJzAwEICaNWty5swZUlNTAYiPj8fDw4MqVapgtVpp27Yt69evL7I++2Jv8UUMwwCgb+wKHB0dS/LQ8g9kZmYC8Mr5HZfZUkpTZmamxug6kJmZib/G6T8tKyuLvXv32s5RJSE7u3j2S05OpkGDBrZlLy8vkpKScHNzIykpCS8vrwJl8fHxRdZXoiEh+/97t3fv3pI8rIiIyGVlZ2fj7OxcrMews7PDzs6O2Njcq67jSlxt8CnRkODq6krt2rVxcHDAYrGU5KFFRERMGYZBdnY2rq6uxX4se3t7GjZsSG7u1YUEe3vz07ePjw/Jycm25cTERCpWrGhaduLECXx8fIpu779u5b9gtVpxd3cvyUOKiIhcVnHPIFzM3t6+0JP81fL39ycyMpLw8HB27dqFj48Pbm5uAPj6+pKamsqRI0eoXLky0dHRTJw4scj6LEZJXoQRERGRYjVx4kQ2b96MxWIhIiKC3bt34+7uTlBQEJs2bbIFg+DgYHr37l1kXQoJIiIiYkpvgRQRERFTCgkiIiJiSiFBRERETCkklCDd/vHfkZWVVdpNECnT8vLySrsJ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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "73pMQyL2W3kl", "colab_type": "text" }, "source": [ "## Plotting the confusion matrix" ] }, { "cell_type": "code", "metadata": { "id": "iEuobdjkUplF", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 387, "referenced_widgets": [ "6833484a36ba4c289e68a046d6c5f25e" ] }, "outputId": "09376b67-9df8-45ca-afc4-70099ffc7f50" }, "source": [ "plot_model(tuned_xgboost_classifier,plot='confusion_matrix')" ], "execution_count": 30, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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diIiIlFwVzwREZFAWOxEREQCYbETEREJhMVOREQkEI0/Kz43NxdpaWnQ1dV9o8+AEhERaRpJkpSf8Mm/mFY+jS/2tLQ05RduEBERvU8cHBwKXNNC44tdV1cXADB8rT/+TokvZm6i4kUFXgAAZCky1JyERKGvbajuCCSY7OxsREZGKjvwnzS+2PN3v/+dEo/niYVfS5yoNPK/aEMqxTXIiV5HX7vgl7cQvQuFHYLmyXNEREQCYbETEREJhMVOREQkEBY7ERGRQFjsREREAmGxExERCYTFTkREJBAWOxERkUBY7ERERAJhsRMREQmExU5ERCQQFjsREZFAWOxEREQCYbETEREJhMVOREQkEBY7ERGRQFjsREREAmGxExERCYTFTkREJBAWOxERkUBY7ERERAJhsRMREQmExU5ERCQQFjsREZFAWOxEREQCYbETEREJhMVOREQkEBY7ERGRQFjsREREAmGxExERCYTFTkREJBAWOxERkUBY7ERERAJhsRMREQmExU5ERCQQFjsREZFAWOxEREQCYbETEREJhMVOREQkEBY7ERGRQFjsREREAmGxC6R1/abICX2EWV5+AACZTAa/XqNw+6dTeBUSichNYRji2kflPro6ulgwYhqe7biCtAP3cGXNEXzSpJ064pMGiY6KhksnNxjqGONR9CN1xyEBKBQKREZG4uLFiwgLC8PVq1eRkJCg7lgaicUuCAM9A2yctBSpGa+UY5N6e2PWwAkYs2I6Knz+IUYtm4LvR82EW7OOynlWjJ2LLs5t0XFyH1j1aoiNR3fh22FTYGRgqI6HQRrg1/0haN+mA6pVr6ruKCSQe/fuITk5GU5OTmjdujUqV66MmzdvIj09Xd3RNE6ZFntMTAy8vLzg6OiIJ0+evHbe8+fPw9PTE02bNkXHjh0REBCAjIyMsownlG+HTcGdmPu4/uBP5Vivj7th++lfcTbiAnIUOThz43esPxQE38+GAgAqW1bCSPf+8FkxDXdjHiAjKxOrft2IZmO7IT2Tzz0VLjEhESfOHEf/Af3UHYUEIZfLERsbixo1asDIyAja2tqwtbWFsbExnj17pu54GqfMiv348ePo27cvbG1ti503Ojoa3t7e6NatG8LCwrBlyxbcunULc+fOLat4QmlTvxkGfdIL3sunqoxLkgQtLdWX+GVyApo5NAIAdGjUCjmKHNSq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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "qA09Ng-xYLum", "colab_type": "text" }, "source": [ "## Saving the model for future predictions" ] }, { "cell_type": "code", "metadata": { "id": "DFCJOP3tXDzd", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "f9102521-8e3d-49a3-ef63-c3ef325aa917" }, "source": [ "## This can be used to save our trained model for future use.\n", "save_model(tuned_xgboost_classifier,\"XGBOOST CLASSIFIER\")" ], "execution_count": 31, "outputs": [ { "output_type": "stream", "text": [ "Transformation Pipeline and Model Succesfully Saved\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "lJTv2sxhYXbr", "colab_type": "text" }, "source": [ "## Loading the saved model" ] }, { "cell_type": "code", "metadata": { "id": "F9JCVRfVYWDK", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "e3897b2d-09da-4339-fc2c-0384f6eb4cfa" }, "source": [ "## This can be used to load our model. We don't need to train our model again and again.\n", "saved_model=load_model('XGBOOST CLASSIFIER')" ], "execution_count": 32, "outputs": [ { "output_type": "stream", "text": [ "Transformation Pipeline and Model Sucessfully Loaded\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "BrS9puqeYe-r", "colab_type": "code", "colab": {} }, "source": [ "" ], "execution_count": null, "outputs": [] } ] }