{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "Handling imbalanced dataset (credit card fraud) tutorial- Imbalanced101 ", "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { "0955e5b8be8042bbae4ee23c230a61eb": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_7d901db567184b758cd7e56ab776f1d3", "_dom_classes": [], "description": "Processing: ", "_model_name": "IntProgressModel", "bar_style": "", "max": 13, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 12, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_9169f9e763314fddb72dfea8cabd09a4" } }, "7d901db567184b758cd7e56ab776f1d3": { "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" } }, "9169f9e763314fddb72dfea8cabd09a4": { "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 } }, "727e71d800a742bcb3c81ed2e8e964ee": { "model_module": "@jupyter-widgets/controls", "model_name": "TextModel", "state": { "_view_name": "TextView", "style": "IPY_MODEL_f9a6f7e7b553446392ca730a47f4bb3a", "_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_a84f1abc70714e33a58147e1c6f995ef" } }, "f9a6f7e7b553446392ca730a47f4bb3a": { "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" } }, "a84f1abc70714e33a58147e1c6f995ef": { "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 } }, "ac8d355c4fd04396a4b3962e69b57e78": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_e359da09f13c44939189b6dd7a8f7c7f", "_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_bb8c34bfea704c3ca6f5733b4ed15f4d" } }, "e359da09f13c44939189b6dd7a8f7c7f": { "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" } }, "bb8c34bfea704c3ca6f5733b4ed15f4d": { "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 } }, "b974713bf81244b8ad8567b1b797b3a0": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_1cc5d7149d994632a82330b094bd257f", "_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_776d2b0cd8fc416790be305938018d61" } }, "1cc5d7149d994632a82330b094bd257f": { "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" } }, "776d2b0cd8fc416790be305938018d61": { "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 } }, "33b14c76463243c89e55d95509cab12d": { "model_module": "@jupyter-widgets/controls", "model_name": "IntProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_d86bb58f2d054918aba12090f680520b", "_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_5238e99a800744fca29032b5bfb4465d" } } } } }, "cells": [ { "cell_type": "code", "metadata": { "id": "c3-xLUMYic-n", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "edc065c5-e313-4cf9-b93d-84a30ada5b3d" }, "source": [ "#Installing pycaret\n", "!pip install pycaret" ], "execution_count": 2, "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 4.9MB/s \n", "\u001b[?25hRequirement already satisfied: xgboost>=0.90 in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.90)\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 16.6MB/s \n", "\u001b[?25hRequirement already satisfied: joblib in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.16.0)\n", "Requirement already satisfied: nltk in /usr/local/lib/python3.6/dist-packages (from pycaret) (3.2.5)\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 19.6MB/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 43.5MB/s \n", "\u001b[?25hRequirement already satisfied: ipywidgets in /usr/local/lib/python3.6/dist-packages (from pycaret) (7.5.1)\n", "Requirement already satisfied: IPython in /usr/local/lib/python3.6/dist-packages (from pycaret) (5.5.0)\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 54.2MB/s \n", "\u001b[?25hCollecting 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 243kB/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 53.9MB/s \n", "\u001b[?25hRequirement already satisfied: spacy in /usr/local/lib/python3.6/dist-packages (from pycaret) (2.2.4)\n", "Requirement already satisfied: wordcloud in /usr/local/lib/python3.6/dist-packages (from pycaret) (1.5.0)\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", "Requirement 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", "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 13.9MB/s \n", "\u001b[?25hRequirement already satisfied: umap-learn in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.4.6)\n", "Collecting 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 10.3MB/s \n", "\u001b[?25hCollecting 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 71kB/s \n", "\u001b[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from pycaret) (3.2.2)\n", "Requirement already satisfied: cufflinks>=0.17.0 in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.17.3)\n", "Collecting 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: plotly>=4.4.1 in /usr/local/lib/python3.6/dist-packages (from pycaret) (4.4.1)\n", "Requirement already satisfied: mlxtend in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.14.0)\n", "Requirement already satisfied: textblob in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.15.3)\n", "Requirement already satisfied: seaborn in /usr/local/lib/python3.6/dist-packages (from pycaret) (0.10.1)\n", "Requirement already satisfied: gensim in /usr/local/lib/python3.6/dist-packages (from pycaret) (3.6.0)\n", "Requirement already satisfied: pandas in /usr/local/lib/python3.6/dist-packages (from pycaret) (1.0.5)\n", "Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from xgboost>=0.90->pycaret) (1.4.1)\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 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 9.3MB/s \n", "\u001b[?25hCollecting 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 11.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", "Collecting 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 37.2MB/s \n", "\u001b[?25hCollecting tqdm>=4.43.0\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/28/7e/281edb5bc3274dfb894d90f4dbacfceaca381c2435ec6187a2c6f329aed7/tqdm-4.48.2-py2.py3-none-any.whl (68kB)\n", "\u001b[K |████████████████████████████████| 71kB 11.8MB/s \n", "\u001b[?25hRequirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.6/dist-packages (from pandas-profiling>=2.3.0->pycaret) (2.23.0)\n", "Collecting htmlmin>=0.1.12\n", " Downloading https://files.pythonhosted.org/packages/b3/e7/fcd59e12169de19f0131ff2812077f964c6b960e7c09804d30a7bf2ab461/htmlmin-0.1.12.tar.gz\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 46.3MB/s \n", "\u001b[?25hRequirement already satisfied: jinja2>=2.11.1 in /usr/local/lib/python3.6/dist-packages (from pandas-profiling>=2.3.0->pycaret) (2.11.2)\n", "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from nltk->pycaret) (1.15.0)\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: cycler>=0.10.0 in /usr/local/lib/python3.6/dist-packages (from yellowbrick>=1.0.1->pycaret) (0.10.0)\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: widgetsnbextension~=3.5.0 in /usr/local/lib/python3.6/dist-packages (from ipywidgets->pycaret) (3.5.1)\n", "Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.6/dist-packages (from ipywidgets->pycaret) (4.3.3)\n", "Requirement already satisfied: nbformat>=4.2.0 in /usr/local/lib/python3.6/dist-packages (from ipywidgets->pycaret) (5.0.7)\n", "Requirement already satisfied: pygments in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (2.1.3)\n", "Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.6/dist-packages (from IPython->pycaret) (49.2.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: 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: wheel>=0.23.0 in /usr/local/lib/python3.6/dist-packages (from pyLDAvis->pycaret) (0.34.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 52.3MB/s \n", "\u001b[?25hCollecting 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 46.6MB/s \n", "\u001b[?25hCollecting gorilla\n", " Downloading https://files.pythonhosted.org/packages/e3/56/5a683944cbfc77e429c6f03c636ca50504a785f60ffae91ddd7f5f7bb520/gorilla-0.3.0-py2.py3-none-any.whl\n", "Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (3.13)\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 8.3MB/s \n", "\u001b[?25hCollecting 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 48.3MB/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: sqlparse in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (0.3.1)\n", "Requirement already satisfied: Flask in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (1.1.2)\n", "Collecting querystring-parser\n", " Downloading https://files.pythonhosted.org/packages/4a/fa/f54f5662e0eababf0c49e92fd94bf178888562c0e7b677c8941bbbcd1bd6/querystring_parser-1.2.4.tar.gz\n", "Requirement already satisfied: protobuf>=3.6.0 in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (3.12.4)\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: python-dateutil in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (2.8.1)\n", "Collecting 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 53.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 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.7MB/s \n", "\u001b[?25hRequirement already satisfied: cloudpickle in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (1.3.0)\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 11.8MB/s \n", "\u001b[?25hRequirement already satisfied: entrypoints in /usr/local/lib/python3.6/dist-packages (from mlflow->pycaret) (0.3)\n", "Collecting 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 49.7MB/s \n", "\u001b[?25hRequirement 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: 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: 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: 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: 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: 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: 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: 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: pillow in /usr/local/lib/python3.6/dist-packages (from wordcloud->pycaret) (7.0.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 50.5MB/s \n", "\u001b[?25hRequirement already satisfied: pytz in /usr/local/lib/python3.6/dist-packages (from DateTime>=4.3->pycaret) (2018.9)\n", "Collecting 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 58.6MB/s \n", "\u001b[?25hRequirement already satisfied: graphviz in /usr/local/lib/python3.6/dist-packages (from catboost->pycaret) (0.10.1)\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: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->pycaret) (1.2.0)\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: 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: 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: smart-open>=1.2.1 in /usr/local/lib/python3.6/dist-packages (from gensim->pycaret) (2.1.0)\n", "Requirement 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", "Requirement already satisfied: attrs>=19.3.0 in /usr/local/lib/python3.6/dist-packages (from visions[type_image_path]==0.4.4->pandas-profiling>=2.3.0->pycaret) (19.3.0)\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 56.9MB/s \n", "\u001b[?25hRequirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests>=2.23.0->pandas-profiling>=2.3.0->pycaret) (2.10)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests>=2.23.0->pandas-profiling>=2.3.0->pycaret) (3.0.4)\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>=2.23.0->pandas-profiling>=2.3.0->pycaret) (1.24.3)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests>=2.23.0->pandas-profiling>=2.3.0->pycaret) (2020.6.20)\n", "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.6/dist-packages (from jinja2>=2.11.1->pandas-profiling>=2.3.0->pycaret) (1.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: 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: 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: ipython-genutils in /usr/local/lib/python3.6/dist-packages (from traitlets>=4.3.1->ipywidgets->pycaret) (0.2.0)\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: 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: 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: py>=1.5.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (1.9.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: pluggy<0.8,>=0.5 in /usr/local/lib/python3.6/dist-packages (from pytest->pyLDAvis->pycaret) (0.7.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", "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.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 56.0MB/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 13.8MB/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", "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 11.4MB/s \n", "\u001b[?25hRequirement already satisfied: itsdangerous>=0.24 in /usr/local/lib/python3.6/dist-packages (from Flask->mlflow->pycaret) (1.1.0)\n", "Requirement already satisfied: Werkzeug>=0.15 in /usr/local/lib/python3.6/dist-packages (from Flask->mlflow->pycaret) (1.0.1)\n", "Collecting 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 11.3MB/s \n", "\u001b[?25hRequirement 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 59.8MB/s \n", "\u001b[?25hRequirement 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: 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: boto3 in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim->pycaret) (1.14.33)\n", "Requirement 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: 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: 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: 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: 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: 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 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 8.6MB/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", "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: 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", "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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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", "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", "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=87afe1e447cc0f292505a2a15fe336265784a2ac8582dca0cda70514381189ec\n", " Stored in directory: /root/.cache/pip/wheels/1f/04/83/76023f7a4c14688c0b5c2682a96392cfdd3ee4449eaaa287ef\n", "Successfully built alembic\n", "Building wheels for collected packages: pyLDAvis, pyod, htmlmin, funcy, databricks-cli, querystring-parser, prometheus-flask-exporter, sqlalchemy, combo, suod, imagehash\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=b1b90a9afd6e4366edef04af0d4f6e7596120607d71b0372b62c75be854a5fe0\n", " Stored in directory: /root/.cache/pip/wheels/98/71/24/513a99e58bb6b8465bae4d2d5e9dba8f0bef8179e3051ac414\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=afae347204f267376e8bda921c829dbed085dfe4d76fbae06ecbf7aa6d9eba01\n", " Stored in directory: /root/.cache/pip/wheels/2e/ca/18/727e9d98a41f5f4385a97d5b429f3a9c8fbee13f9780c18642\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=13ac8a83cd4b5cfbc39205fd7f3b52c17bcd5749291faf808b0a8db3879214de\n", " Stored in directory: /root/.cache/pip/wheels/43/07/ac/7c5a9d708d65247ac1f94066cf1db075540b85716c30255459\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=a7374bce770cbab81dc2daa997a4ec5acf4469a33e97b6a3a2349e5ebb013b7f\n", " Stored in directory: /root/.cache/pip/wheels/20/5a/d8/1d875df03deae6f178dfdf70238cca33f948ef8a6f5209f2eb\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=866f49cde1afee472821ae0e373186749fde9d84e65768697b395712d80c2036\n", " Stored in directory: /root/.cache/pip/wheels/63/d0/4f/3deeca1f4c47a6aca7c2c6a6e2bf272391565dc86a7718a59b\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=59ea59c609685b1b972206b081d7d63af67ac5038b60e3cceed0a64ec3da0a30\n", " Stored in directory: /root/.cache/pip/wheels/1e/41/34/23ebf5d1089a9aed847951e0ee375426eb4ad0a7079d88d41e\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=b0623ae16407ce374879d5dacef00f80c7ca7196f5dc5287280a30f6ac2c65b7\n", " Stored in directory: /root/.cache/pip/wheels/4f/b4/70/b18fa12c1c0a30fd542767dbbcdac225c6aae012fa1b3124e4\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=1217169 sha256=849fd60745e8a83a712003f7750ef69c8d684a7f79bb2b7ad98bd088b0fd7619\n", " Stored in directory: /root/.cache/pip/wheels/b3/35/98/4c9cb3fd63d21d5606b972dd70643769745adf60e622467b71\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=693192608b2c333d5b9c651fcbf73c3a4147218ee9a81beb460b835388a5441d\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=6b0adcda39706695e2d95182ad75eeeef30dc5e119c7a2bbe96d82aac2cd0bf8\n", " Stored in directory: /root/.cache/pip/wheels/57/55/e5/a4fca65bba231f6d0115059b589148774b41faea25b3f2aa27\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=3cbd089c07c48233aed130c2e7b60085f7da9ae8f78695830ad7615c7ddf0d30\n", " Stored in directory: /root/.cache/pip/wheels/07/1c/dc/6831446f09feb8cc199ec73a0f2f0703253f6ae013a22f4be9\n", "Successfully built pyLDAvis pyod htmlmin funcy databricks-cli querystring-parser prometheus-flask-exporter sqlalchemy combo suod imagehash\n", "Installing collected packages: tangled-up-in-unicode, imagehash, visions, confuse, phik, tqdm, htmlmin, pandas-profiling, threadpoolctl, scikit-learn, yellowbrick, funcy, pyLDAvis, azure-core, cryptography, isodate, msrest, azure-storage-blob, gorilla, databricks-cli, python-editor, Mako, sqlalchemy, alembic, querystring-parser, smmap, gitdb, gitpython, prometheus-flask-exporter, websocket-client, docker, gunicorn, mlflow, lightgbm, kmodes, combo, suod, pyod, zope.interface, DateTime, catboost, datefinder, pycaret\n", " Found existing installation: tqdm 4.41.1\n", " Uninstalling tqdm-4.41.1:\n", " Successfully uninstalled tqdm-4.41.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", " 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: yellowbrick 0.9.1\n", " Uninstalling yellowbrick-0.9.1:\n", " Successfully uninstalled yellowbrick-0.9.1\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: lightgbm 2.2.3\n", " Uninstalling lightgbm-2.2.3:\n", " Successfully uninstalled lightgbm-2.2.3\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 tqdm-4.48.2 visions-0.4.4 websocket-client-0.57.0 yellowbrick-1.1 zope.interface-5.1.0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "JsQcMBDJjmM-", "colab_type": "code", "colab": {} }, "source": [ "#Importing libraries\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import pycaret\n" ], "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "zx-m_QyMk0X4", "colab_type": "text" }, "source": [ "## Loading the data" ] }, { "cell_type": "markdown", "metadata": { "id": "1a5iBP3Nk3DE", "colab_type": "text" }, "source": [ "Dataset information: The datasets contains transactions made by credit cards in September 2013 by european cardholders.\n", "This dataset presents transactions that occurred in two days, where we have 492 frauds out of 284,807 transactions. The dataset is highly unbalanced, the positive class (frauds) account for 0.172% of all transactions.\n", "\n", "It contains only numerical input variables which are the result of a PCA transformation.\n", "\n", "This dataset was a part of Kaggle Competition too, where the participants needed to predict wether the transaction was a fraud one or normal.\n", "\n", "Link to the competition: https://www.kaggle.com/mlg-ulb/creditcardfraud" ] }, { "cell_type": "code", "metadata": { "id": "WnXMK-pOj7Yc", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 216 }, "outputId": "81fead06-4c27-4c93-d3b8-999caaf9ff14" }, "source": [ "df=pd.read_csv(\"/content/drive/My Drive/creditcard.csv\")\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", "
TimeV1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClass
00.0-1.359807-0.0727812.5363471.378155-0.3383210.4623880.2395990.0986980.3637870.090794-0.551600-0.617801-0.991390-0.3111691.468177-0.4704010.2079710.0257910.4039930.251412-0.0183070.277838-0.1104740.0669280.128539-0.1891150.133558-0.021053149.620
10.01.1918570.2661510.1664800.4481540.060018-0.082361-0.0788030.085102-0.255425-0.1669741.6127271.0652350.489095-0.1437720.6355580.463917-0.114805-0.183361-0.145783-0.069083-0.225775-0.6386720.101288-0.3398460.1671700.125895-0.0089830.0147242.690
21.0-1.358354-1.3401631.7732090.379780-0.5031981.8004990.7914610.247676-1.5146540.2076430.6245010.0660840.717293-0.1659462.345865-2.8900831.109969-0.121359-2.2618570.5249800.2479980.7716790.909412-0.689281-0.327642-0.139097-0.055353-0.059752378.660
31.0-0.966272-0.1852261.792993-0.863291-0.0103091.2472030.2376090.377436-1.387024-0.054952-0.2264870.1782280.507757-0.287924-0.631418-1.059647-0.6840931.965775-1.232622-0.208038-0.1083000.005274-0.190321-1.1755750.647376-0.2219290.0627230.061458123.500
42.0-1.1582330.8777371.5487180.403034-0.4071930.0959210.592941-0.2705330.8177390.753074-0.8228430.5381961.345852-1.1196700.175121-0.451449-0.237033-0.0381950.8034870.408542-0.0094310.798278-0.1374580.141267-0.2060100.5022920.2194220.21515369.990
\n", "
" ], "text/plain": [ " Time V1 V2 V3 ... V27 V28 Amount Class\n", "0 0.0 -1.359807 -0.072781 2.536347 ... 0.133558 -0.021053 149.62 0\n", "1 0.0 1.191857 0.266151 0.166480 ... -0.008983 0.014724 2.69 0\n", "2 1.0 -1.358354 -1.340163 1.773209 ... -0.055353 -0.059752 378.66 0\n", "3 1.0 -0.966272 -0.185226 1.792993 ... 0.062723 0.061458 123.50 0\n", "4 2.0 -1.158233 0.877737 1.548718 ... 0.219422 0.215153 69.99 0\n", "\n", "[5 rows x 31 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "code", "metadata": { "id": "Fqex7yyBkU0k", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "outputId": "f5db4211-3266-4ac0-cbdd-f8553a55c1db" }, "source": [ "df.shape" ], "execution_count": 5, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(284807, 31)" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "markdown", "metadata": { "id": "10VMelselhZp", "colab_type": "text" }, "source": [ "Our dataset contains 24000 rows and 24 columns" ] }, { "cell_type": "code", "metadata": { "id": "gtKOmecwkC1c", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 552 }, "outputId": "0ec8b121-5283-4fb0-e74b-8e110bfbdd51" }, "source": [ "df.isnull().sum()" ], "execution_count": 6, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Time 0\n", "V1 0\n", "V2 0\n", "V3 0\n", "V4 0\n", "V5 0\n", "V6 0\n", "V7 0\n", "V8 0\n", "V9 0\n", "V10 0\n", "V11 0\n", "V12 0\n", "V13 0\n", "V14 0\n", "V15 0\n", "V16 0\n", "V17 0\n", "V18 0\n", "V19 0\n", "V20 0\n", "V21 0\n", "V22 0\n", "V23 0\n", "V24 0\n", "V25 0\n", "V26 0\n", "V27 0\n", "V28 0\n", "Amount 0\n", "Class 0\n", "dtype: int64" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "markdown", "metadata": { "id": "KIL4GyhQloaz", "colab_type": "text" }, "source": [ "There are no null values as observed from above table" ] }, { "cell_type": "markdown", "metadata": { "id": "MLFyMW2Gppu7", "colab_type": "text" }, "source": [ "Now, let's check for the count of positive and negative classes in our dataset" ] }, { "cell_type": "code", "metadata": { "id": "rCPuWVd8kKYc", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 278 }, "outputId": "51bd3ee9-6c05-427a-bbcd-6c183a24cf82" }, "source": [ "df[\"Class\"].value_counts().plot.bar(legend=None)" ], "execution_count": 7, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 7 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "x7kKRuulE72M", "colab_type": "text" }, "source": [ "This is a highly imablanced dataset." ] }, { "cell_type": "markdown", "metadata": { "id": "hGF3OuZMq1ra", "colab_type": "text" }, "source": [ "## Problem with imbalanced dataset: \n", "We need to deal with the dataset in a correct way. When we will train our model than our model will achieve high accuracy but our trained model will predict a negative class in maximum number of cases. So, we also need to keep in mind the precision and recall score in such scenarios. \n", "\n", "This problem is predominant in scenarios where anomaly detection is crucial like electricity pilferage, fraudulent transactions in banks, identification of rare diseases, etc. In this situation, the predictive model developed using conventional machine learning algorithms could be biased and inaccurate.\n", "\n", "This happens because Machine Learning Algorithms are usually designed to improve accuracy by reducing the error. Thus, they do not take into account the class distribution / proportion or balance of classes.\n", "\n", "This guide describes various approaches for solving such class imbalance problems using Pycaret. " ] }, { "cell_type": "markdown", "metadata": { "id": "Uch03o6zsn-h", "colab_type": "text" }, "source": [ "## Prepairing the setup" ] }, { "cell_type": "code", "metadata": { "id": "_gxUecGVsnAM", "colab_type": "code", "colab": {} }, "source": [ "from pycaret.classification import *\n" ], "execution_count": 8, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "0MDZGQo6p9bC", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 918, "referenced_widgets": [ "0955e5b8be8042bbae4ee23c230a61eb", "7d901db567184b758cd7e56ab776f1d3", "9169f9e763314fddb72dfea8cabd09a4", "727e71d800a742bcb3c81ed2e8e964ee", "f9a6f7e7b553446392ca730a47f4bb3a", "a84f1abc70714e33a58147e1c6f995ef" ] }, "outputId": "32779414-a475-48a6-bba2-df9d97d9551f" }, "source": [ "clf=setup(data=df,target='Class',fix_imbalance=True) #fix_imbalance will automaticaaly fix the imbalanced dataset by oversampling using the SMOTE method." ], "execution_count": 9, "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_id3458
1Target TypeBinary
2Label EncodedNone
3Original Data(284807, 31)
4Missing Values False
5Numeric Features 30
6Categorical Features 0
7Ordinal Features False
8High Cardinality Features False
9High Cardinality Method None
10Sampled Data(199364, 31)
11Transformed Train Set(139554, 30)
12Transformed Test Set(59810, 30)
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 ImbalanceTrue
43Fix Imbalance MethodSMOTE
" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "nQyNyXctwAGx", "colab_type": "text" }, "source": [ "### SMOTE method: SMOTe is a technique based on nearest neighbors judged by Euclidean Distance between data points in feature space. There is a percentage of Over-Sampling which indicates the number of synthetic samples to be created and this percentage parameter of Over-sampling is always a multiple of 100." ] }, { "cell_type": "code", "metadata": { "id": "SU3zRpKcVgi0", "colab_type": "code", "colab": {} }, "source": [ "#Uncomment the following code to compare the performance of all the classification models\n", "\n", "\n", "#compare_models() " ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "PBAqx-IuPGb5", "colab_type": "text" }, "source": [ "## We will choose the model with high precision because here we need to have a high precision than high accuracy or high recalls.\n", "\n", "This link will provide you some overview of precision and recall.\n", "Link: https://developers.google.com/machine-learning/crash-course/classification/precision-and-recall" ] }, { "cell_type": "markdown", "metadata": { "id": "wNdaW3J5V3rk", "colab_type": "text" }, "source": [ "We are creating the random forest classifier because it works really well with these types of dataset. You can have a quick view of the different models using 'compare_models()'" ] }, { "cell_type": "code", "metadata": { "id": "0RHd8qp1wL9Y", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 407, "referenced_widgets": [ "ac8d355c4fd04396a4b3962e69b57e78", "e359da09f13c44939189b6dd7a8f7c7f", "bb8c34bfea704c3ca6f5733b4ed15f4d" ] }, "outputId": "5571d088-6ef1-47fa-9377-a4f09258be91" }, "source": [ "classifier=create_model('rf')\n", "print(classifier)" ], "execution_count": 12, "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.99960.97820.83330.95240.88890.88870.8907
10.99940.87220.70830.89470.79070.79040.7958
20.99940.95720.87500.80770.84000.83970.8404
30.99970.93860.88000.95650.91670.91650.9173
40.99940.91470.75000.85710.80000.79970.8015
50.99970.95740.91670.91670.91670.91650.9165
60.99950.91420.79170.90480.84440.84420.8461
70.99940.91410.79170.82610.80850.80820.8084
80.99940.93590.83330.83330.83330.83300.8330
90.99950.93580.75000.94740.83720.83700.8427
Mean0.99950.93180.81300.88970.84760.84740.8492
SD0.00010.02830.06300.05260.04320.04330.0425
" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n", " criterion='gini', max_depth=None, max_features='auto',\n", " max_leaf_nodes=None, max_samples=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=-1,\n", " oob_score=False, random_state=3458, verbose=0,\n", " warm_start=False)\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "aOH_EldwQ5Rt", "colab_type": "text" }, "source": [ "## Classification plots" ] }, { "cell_type": "code", "metadata": { "id": "kjbCMz7KQ43s", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 401, "referenced_widgets": [ "b974713bf81244b8ad8567b1b797b3a0", "1cc5d7149d994632a82330b094bd257f", "776d2b0cd8fc416790be305938018d61" ] }, "outputId": "ed8ab10d-6a8a-4e9e-8f2c-234b2d5c9548" }, "source": [ "# Plotting the classification report\n", "plot_model(classifier,plot='class_report')\n" ], "execution_count": 16, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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u/HMV2Fra0udOnWuGxIKU6E+yuV702/rM5qLcYk3mFtK2vPHNnCmSbOSLkMKoOLO7Wyv0bqky5ACanZsAxBZ0mVIAWRl+XP48GHr/qso5ebm4uDhxrY+Y7gYd+7GC1zByacczT8ZRW5u7t8KCD4+PiQkJFiHz549e9VDEVcq1IBw+bDCxbhEMmITbjC3lDRHR0ds/7i7n/y7OTo6Yug9dcv4689py7/ZpR8HK87D4hfjzhX7PrJKlSqkpqZy8uRJKlasyMaNG6962/kr6U6KIiIipUBkZCRvvvkmp06dws7OjnXr1tG6dWuqVKlC27ZtGT16NC+99BJw6YqGGjVqXLc9BQQREZFSoE6dOsyZM+ea0++9914WLVpU4PZ0maOIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJXUkXICIicju5FzBuchlLURRyA+pBEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQERERE7uSLkBEREQKR0REBHv27MFisTBixAjq1atnnTZv3jxWrlyJjY0NderU4dVXX71uW+pBEBERKQV2795NdHQ0ixYtIjw8nPDwcOu01NRUPvnkE+bNm8eCBQuIiori119/vW57CggiIiKlwI4dOwgODgbAz8+P5ORkUlNTAbC3t8fe3p709HRycnLIyMjAw8Pjuu0pIIiIiJQCCQkJeHp6Woe9vLyIj48HwNHRkQEDBhAcHEyrVq2oX78+NWrUuG57CggiIiKlkGEY1v9TU1OZOXMma9euZf369ezZs4eDBw9ed3kFBBERkVLAx8eHhIQE63BcXBze3t4AREVF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UHJycmnevL71qga59VkMwzCuN0NkZCRvvvkmp06dws7OjgoVKjBt2jTKli1rmjczM5PIyEjWd3qOjNjivimk3KxRxiFOVq5a0mVIAVQ5FcMGS0BJlyEF1No4BOhKi1tBZmYdIiMjqVOnDo6ORXuy8uV9ZPmn+2IbF3dTy+b6+JDw8YfFUudlN+xBqFOnDnPmzCmOWkRERORf4rY6B0FEREQKRgFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERNWXB/IAACAASURBVETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExMSupAsQERG5nXjXdcMx+eJNLZPp4UZCEdVzLepBEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExsSvpAkRERKRwREREsGfPHiwWCyNGjKBevXrWabGxsQwePJjs7Gxq167N2LFjr9uWehBERERKgd27dxMdHc2iRYsIDw8nPDw83/QJEybQu3dvFi9ejK2tLadPn75uewoIIiIipcCOHTsIDg4GwM/Pj+TkZFJTUwHIy8vjp59+onXr1gCMGjWKO+6447rtKSCIiIiUAgkJCXh6elqHvby8iI+PByAxMRFXV1fGjx/Pf//7XyZOnHjD9hQQRERESiHDMPL9f/bsWbp3787cuXM5cOAA33///XWXV0AQEREpBXx8fEhISLAOx8XF4e3tDYCnpyd33HEH1apVw9bWlqZNm/L7779ftz0FBBERkVKgefPmrFu3DoD9+/fj4+ODm5sbAHZ2dlStWpXjx49bp9eoUeO67ekyRxERkVKgYcOGBAUFERYWhsViYdSoUSxduhR3d3fatm3LiBEjGD58OIZh4O/vbz1h8VoUEEREREqJIUOG5BsODAy0/l+9enUWLFhQ4LZ0iEFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETHQnRRERkWJkaVwWS2bezS3jWLaIqrk29SCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIldUTT6/LENODo6FkXTUsiqnIop6RKkgFobh0q6BLkp95R0AVIgmSVdwL+WehBERETEpEh6EKbUaE1GbEJRNC2FaJRxiDGWgJIuQwpA2+rWou116xh+cW9Jl/CvpR4EERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETu5IuQERE5HZiqVEGS27ezS1jW6aIqrk29SCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiISCkRERFB165dCQsLY+/evVedZ+LEiXTr1u2GbSkgiIiIlAK7d+8mOjqaRYsWER4eTnh4uGmeI0eO8MMPPxSoPQUEERGRUmDHjh0EBwcD4OfnR3JyMqmpqfnmmTBhAi+++GKB2lNAEBERKQUSEhLw9PS0Dnt5eREfH28dXrp0Kffddx+VK1cuUHsKCCIiIqWQYRjW/5OSkli6dCm9evUq8PIKCCIiIqWAj48PCQkJ1uG4uDi8vb0B2LlzJ4mJiTz55JMMHDiQ/fv3ExERcd32FBBERERKgebNm7Nu3ToA9u/fj4+PD25ubgCEhISwZs0avvjiC9577z2CgoIYMWLEdduzK/KKRUREpMg1bNiQoKAgwsLCsFgsjBo1iqVLl+Lu7k7btm1vuj0FBBERkVJiyJAh+YYDAwNN81SpUoU5c+bcsC0dYhARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMbEr6QJERERuKzXvBJv0m1smzwXSiqaca1EPgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiI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EERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREzsSroAERGR20rZAHC8yWUygZNFUcy1qQdBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRESklIiIiKBr166EhYWxd+/efNO2b99Oly5d6Nq1K9OnT79hWwoIIiIipcDu3buJjo5m0aJFhIeHEx4enm/6G2+8wbRp01iwYAHbtm3jyJEj121PAUFERKQU2LFjB8HBwQD4+fmRnJxMamoqADExMXh4eFCpUiVsbGxo2bIlO3bsuG57doVZnGEYAPQ7tBYHB4fCbFqKQGZmJsMv7r3xjFLitK1uLdpet46srCzgz/1XccjOLpplEhISCAoKsg57eXkRHx+Pm5sb8fHxeHl55ZsWExNz3fYKNSBk/7EGhw8fLsxmRUREilR2djZOTk5F+hi2trbY2tpy6FDuP1q+oP5p6CnUgODq6oq/vz/29vZYLJbCbFpERKTQGYZBdnY2rq6uRf5YdnZ21KlTh9zcvx8Q7Oyuvdv28fEhISHBOhwXF4e3t/dVp509exYfH5/r1/u3qrwGGxsb3N3dC7NJERGRIlXUPQdXsrOzu+5O/p9o3rw506ZNIywsjP379+Pj44ObmxsAVapUITU1lZMnT1KxYkU2btzIO++8c932LEZxHngRERGRIvPOO+/w448/YrFYGDVqFAcOHMDd3Z22bdvyww8/WENBu3bt6NOnz3XbUkAQERERE13mKCIiIiYKCCIiImKigCAiIiImCgiFTKd0/LtcvgmKiBS9vLy8ki5BCpECQiG5HAwyMzNLuBK57NixY4wcOZIzZ86UdClyhdTUVAXpUsQwDGJjY4FLl7pL6aGtWUgsFgvbtm2jX79+LFmyhOTk5JIu6ba2f/9+atSogYuLC++99x5n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "8ib3-Oc7X_6s", "colab_type": "text" }, "source": [ "### Here important point to notice is the precision, recall, and f1 score for the positive class that is '1'" ] }, { "cell_type": "code", "metadata": { "id": "ZdE1WS5cQ4q9", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 374, "referenced_widgets": [ "33b14c76463243c89e55d95509cab12d" ] }, "outputId": "99306c54-e58b-40d3-c1b0-fe6a0956f314" }, "source": [ "# Plotting the confusion matrix\n", "plot_model(classifier,plot='confusion_matrix')\n" ], "execution_count": 17, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAFlCAYAAAAki6s3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de3yOhf/H8fc9270ZG5vDaIhkSyHns5xt5HxcmJqKxCjFnCUi+aIc41vflGM5JHNYxFJSKoeJkm/O59js0DY73dfvDz/312KGdm8XXs/HwyP3dd33dX3ua3deu+773j2LYRiGAACAKTnl9QAAACBrhBoAABMj1AAAmBihBgDAxAg1AAAmRqgBADAxQg2H8Pf3V8uWLRUYGKjAwEC1bNlSo0aNUlJSUo7t4/z58/L398+x7Y0YMUJ169a1z3ztz8GDB3NsH1nZuHGj/vrrL/vlI0eOaODAgWrRooVatmypHj16KDIyUpJ0+vRpPf744zk+w/Dhw7Vt2zZJ0owZM9SwYUOtXr060/J/Yvv27erRo4cCAgLUvHlzDRgwQEeOHPlH21y6dKkaNGig+fPn39XtAwMDdenSpX80wzVr1qyRv7+//et0zZUrV1S9enWNGDEi221ERUXp0KFDN123ZcsWjRw5MkdmxT3GABzAz8/POHfunP1ySkqK8fLLLxszZszIsX2cO3fO8PPzy7HthYWFGXPnzs2x7d2JgIAA+/E6f/68UbduXWP58uWGzWYzDMMw9uzZY9SpU8f49ttvjVOnThkVK1Z06DzNmzc3du7cmWPbi4yMNBo0aGD8/PPPhmEYhs1mM1asWGHUrl3buHTp0l1vt0+fPsZnn32WU2P+I6tXrzYaN25sDB06NNPyjRs3Go0bNzbCwsKy3cbYsWONtWvXOmpE3KOc8/obBTwYrFarGjVqZD8zS05O1siRI/Xbb78pLS1NAQEBCgsLkyQFBwerWbNm2rx5s06fPq1atWpp+vTpslgsWrVqlebOnauCBQuqXbt29u3bbDa99957+vLLLyVJVatW1bhx4+Tu7q7g4GA1atRIW7du1YkTJxQaGqq4uDitW7dOTk5OWrBggUqXLn3L+bPbfvXq1bV582a99dZbevTRRzVx4kTt379f6enpevnll9WlSxdJ0syZMxURESFJ8vHx0bRp0/Tuu+/q2LFjCg4O1pQpU7R161bVr19fQUFB9v1Xq1ZN8+bNU4kSJWSz2TLNNXHiRO3cuVNpaWmqUaOGJk+eLBcXF/3444+aMmWKUlJSZBiGBg8erNatW2e5PDg4WF27dtU333yjc+fOadSoURowYIDCw8PVtWtXdejQQbt379bkyZMVHx8vLy8vTZ8+XaVLl9aaNWu0bds2JSQk6IknntDw4cMzHb/Zs2crNDRUNWrUkCRZLBb16NFDPj4+cnV1lSR98sknWrFihWw2m8qVK6e33npL3t7eGjFihB566CHt3btXx48fV9myZTVv3jzNnj1b+/bt05EjR3T+/HmdOXNGZcqU0csvvyzp6jMk1y4vWbJES5culWEYKliwoKZMmaIKFSrI399f27dvV4kSJe54//nz57/hcVK9enXt2rVLycnJ9vUbN25UgwYNlJGRccvH/vLly/XFF19o27ZtiomJUaFChTId00cffVTr1q3TnDlz1LZtW82ZM0eVKlXS7t27NWzYMK1fv17u7u63fBzjHpXH3yjgPvX3M+rY2FijV69exrx58wzDMIwPP/zQeOGFFwybzWbExsYatWvXNn766SfDMAyjd+/eRu/evY3k5GQjMTHRqFevnvHzzz8bsbGxRtWqVY0//vjDMAzDmDhxov2Mev369UbHjh2NxMREIz093RgwYID97Lh3797GCy+8YKSlpRnbtm0znnzySWP16tWGYRhGaGioMXPmTMMwbn1Gnd32+/bta2RkZBiGYRgjR440hg8fbmRkZBjR0dFG48aNjd9//904fPiw0apVKyM1NdUwDMP45JNPjM8///yG49WlSxfjiy++yPLYXn9GHRERYbRt29ZITU01rly5YrRu3dp+Rta5c2dj165dhmEYxrFjx+xnelkt7927t/22TZs2zfT1WLt2rZGQkGDUqlXL2LFjh2EYhhEeHm506tTJMIyrZ5NVq1Y1jh07dsO8iYmJhr+/v3H+/Pks79PevXuNp556yn52/eabbxqjRo0yDOPq16V169bG5cuXjbS0NKN9+/b243P9zH//+l27nJCQYNSsWdNISEgwDOPqGe7ChQszHfe73f/1Vq9ebYSFhRmvv/66ER4ebhiGYSQkJBjNmzc3Vq5caT+jzu6xf+3+/P2Yrl692nj22WcNwzCMzZs3Gz169DDS09ONTp06GV9//XWW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PJ4MuL999dVXiouLU5cuXW66PjAwUBEREbk8FRyBUAMAYGL8HDUAACZGqAEAMDFCDeSy06dPq1KlSgoODlZwcLCCgoL02muvKT4+/q63uXLlSo0YMUKS9Oqrr+rChQtZXnfPnj06derUbW87PT1d/v7+N123f/9+Pffcc+rcubO6deumAQMG2Lc9YsQIrVy58g7uBYCbIdRAHvD29tbixYu1ePFirVixQsWLF9f8+fNzZNszZ86Uj49PluvXrFlzR6HOysWLFzVo0CANGTJEa9as0cqVK9WmTRu98MILSk9P/8fbB3AVP0cNmECtWrX06aefSrr6YRatW7fWqVOnNGvWLG3cuFFLliyRYRjy9vbWpEmT5OXlpaVLl2r58uUqUaKEihcvbt9Ws2bN9NFHH6l06dKaNGmSDhw4IEkKCQmRs7OzIiIitH//fo0cOVIPP/ywJkyYoOTkZCUlJWno0KGqX7++jh49qmHDhil//vyqU6fOTWdesmSJ2rdvr2rVqtmXtWvXTk899ZScnTP/0/Lee+/p+++/lySVKFFC06ZNk8Vi0ZgxY3Ts2DFZLBZVrFhR48eP1w8//KDp06fLzc1NqampGj16tKpUqZKjxxu4lxBqII9lZGRoy5YtqlGjhn1Z2bJlNWzYMJ07d07vv/++Vq1aJavVqo8//lgLFizQwIEDNWvWLEVERMjLy0sDBgywf+jMNevWrdOlS5f02WefKT4+Xq+//rrmz5+vihUrasCAAapXr5769eunvn37qm7durp48aJ69OihzZs3a+7cuerSpYt69uypzZs333TuP/7446YfuPH3OdLT05U/f34tW7ZMTk5Oev7557Vjxw75+PgoKipKmzZtkiR99tlnSkhI0Mcff6yQkBC1adNGR48e1bFjx/7pIQbuaYQayAMxMTEKDg6WJNlsNtWsWVPPPfecff21s9S9e/fq4sWLev755yVJqampKlWqlE6cOCFfX195eXlJkurUqaNDhw5l2sf+/fvtZ8Oenp5auHDhDXPs2rVLiYmJmjt3riTJ2dlZ0dHROnz4sPr16ydJqlu37k3vQ758+W74sJubcXZ2lpOTk3r27ClnZ2cdPXpUly9fVv369eXl5aUXX3xRTZs2VevWreXh4aF27dppxowZ2r9/v5o3b67mzZtnuw/gfkaogTxw7TXqrFz7RDer1aoqVapowYIFmdb/8ssvmT7L2Waz3bANi8Vy0+XXs1qtmj17try9vTMtNwxDTk5X38KSVYz9/Py0Z88etWnTJtPyqKioTE9V7969W6tXr9bq1avl7u6uwYMHS5JcXV21bNkyHTx4UJGRkeratauWL1+uNm3aqGHDhtqxY4fmzp2rKlWqaOjQobe8H8D9jDeTASZWuXJl7d+/XxcvXpQkbdq0SV999ZXKlCmj06dPKz4+XoZh2F//vV61atX07bffSpL++usvdevWTampqbJYLEpLS5Mk1ahRw/7Uc0xMjN566y1JUvny5e2/T/xm25aknj17KiIiQj/88IN92caNGzV69Gj79iUpOjpavr6+cnd315kzZ7Rv3z6lpqbql19+0eeff64nnnhCgwYN0hNPPKHjx49r1qxZysjIUJs2bTR69Gjt3bv3nx5G4J7GGTVgYj4+Pho9erT69++v/Pnzy83NTVOnTlWhQoX00ksvqVevXvL19ZWvr6+uXLmS6batW7fWnj17FBQUpIyMDIWEhMhqtapBgwYaP368Ro0apdGjR2vcuHHasGGDUlNTNWDAAEnSwIEDFRYWpoiICFWrVu2GN4dJV58VWLJkiSZOnKipU6fKzc1Nvr6+WrRokaxWq/16DRo00H/+8x8988wzqlChgkJDQzV37ly99957+vLLL/Xpp5/KarWqTJkyql69us6dO6e+ffvK09NTNptNoaGhjj3IgMnxEaIAAJgYT30DAGBihBoAABMj1AAAmBihBgDAxAg1AAAmRqgBADAxQg0AgIn9HxlSTAHO8ID0AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "BPKk8BRnRWcO", "colab_type": "text" }, "source": [ "## Now, from the above plots we can easily conclude that we succesfully handled our highly imbalanced dataset as our precision score is high(90.1%). We would got a high accuracy score and recall score but a very low precision score, if we haven't succesfully handled our imbalanced dataset." ] }, { "cell_type": "code", "metadata": { "id": "vx-bh4yQXG7x", "colab_type": "code", "colab": {} }, "source": [ "" ], "execution_count": null, "outputs": [] } ] }