Diff of /NESTCOMPETIITION.ipynb [000000] .. [8409ad]

Switch to side-by-side view

--- a
+++ b/NESTCOMPETIITION.ipynb
@@ -0,0 +1,3322 @@
+{
+  "nbformat": 4,
+  "nbformat_minor": 0,
+  "metadata": {
+    "colab": {
+      "provenance": [],
+      "gpuType": "T4"
+    },
+    "kernelspec": {
+      "name": "python3",
+      "display_name": "Python 3"
+    },
+    "language_info": {
+      "name": "python"
+    },
+    "accelerator": "GPU",
+    "widgets": {
+      "application/vnd.jupyter.widget-state+json": {
+        "e41925970dc94c2aa90b4da8acac85cf": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HBoxModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HBoxView",
+            "box_style": "",
+            "children": [
+              "IPY_MODEL_c1f0f99a4a4341d18e0039a71b305111",
+              "IPY_MODEL_d54d01c91e694b3eb180170cddd1211c",
+              "IPY_MODEL_3c707baf63cf4cbf9732e39ddeb84c7c"
+            ],
+            "layout": "IPY_MODEL_08955c157996426eaa089d878b8d820f"
+          }
+        },
+        "c1f0f99a4a4341d18e0039a71b305111": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_da9c8ff09bed4c6989b0246c7bdc8fd7",
+            "placeholder": "​",
+            "style": "IPY_MODEL_b78266bbcc0e4ed0bcaab9009b30d98e",
+            "value": "tokenizer_config.json: 100%"
+          }
+        },
+        "d54d01c91e694b3eb180170cddd1211c": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "FloatProgressModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "ProgressView",
+            "bar_style": "success",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_2fd8c28ebf1b47f78e2e0093608407cf",
+            "max": 28,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_8c728d06a0814cc8b83931b24f0115d9",
+            "value": 28
+          }
+        },
+        "3c707baf63cf4cbf9732e39ddeb84c7c": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_da4b0713ce9f47208a39ec89515c30e4",
+            "placeholder": "​",
+            "style": "IPY_MODEL_b2fd795e6a534319a87213f05e824315",
+            "value": " 28.0/28.0 [00:00<00:00, 1.45kB/s]"
+          }
+        },
+        "08955c157996426eaa089d878b8d820f": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "da9c8ff09bed4c6989b0246c7bdc8fd7": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "b78266bbcc0e4ed0bcaab9009b30d98e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "2fd8c28ebf1b47f78e2e0093608407cf": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "8c728d06a0814cc8b83931b24f0115d9": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "ProgressStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "bar_color": null,
+            "description_width": ""
+          }
+        },
+        "da4b0713ce9f47208a39ec89515c30e4": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "b2fd795e6a534319a87213f05e824315": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "0722a8ceb94345a79e5bdc3b84f71d7f": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HBoxModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HBoxView",
+            "box_style": "",
+            "children": [
+              "IPY_MODEL_7c04cff87d1041b1878488f5014f9b7c",
+              "IPY_MODEL_0ef4539514a1462caacf58e5c3fa516b",
+              "IPY_MODEL_4c61a2b37c4c4ffbb3a10d270140724f"
+            ],
+            "layout": "IPY_MODEL_d1288d4268e74bd384064c4f2cfbfa7b"
+          }
+        },
+        "7c04cff87d1041b1878488f5014f9b7c": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_1c84ce5cb56a4c7286c0f5981b8fbd5a",
+            "placeholder": "​",
+            "style": "IPY_MODEL_61a01f78b9714e4aa0d869d8e6563e81",
+            "value": "config.json: 100%"
+          }
+        },
+        "0ef4539514a1462caacf58e5c3fa516b": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "FloatProgressModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "ProgressView",
+            "bar_style": "success",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_180753d93be944e98c47bba836397ba0",
+            "max": 385,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_db137743dfc24b6b84c6c15bcd5b5766",
+            "value": 385
+          }
+        },
+        "4c61a2b37c4c4ffbb3a10d270140724f": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_16f88feb88fc43b5b381521d91b02150",
+            "placeholder": "​",
+            "style": "IPY_MODEL_9b2a4006744a4940aa64fd9e41d62d4e",
+            "value": " 385/385 [00:00<00:00, 21.0kB/s]"
+          }
+        },
+        "d1288d4268e74bd384064c4f2cfbfa7b": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "1c84ce5cb56a4c7286c0f5981b8fbd5a": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "61a01f78b9714e4aa0d869d8e6563e81": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "180753d93be944e98c47bba836397ba0": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "db137743dfc24b6b84c6c15bcd5b5766": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "ProgressStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "bar_color": null,
+            "description_width": ""
+          }
+        },
+        "16f88feb88fc43b5b381521d91b02150": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "9b2a4006744a4940aa64fd9e41d62d4e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "d55048b2772b47eab27637e9aa42d4dc": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HBoxModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HBoxView",
+            "box_style": "",
+            "children": [
+              "IPY_MODEL_a70574b040b14832abb25d2eb040fb0a",
+              "IPY_MODEL_e5c3bf5ade9a405094a1673bc2beb795",
+              "IPY_MODEL_3d7c0e5ba179442eb417435ff72ae85a"
+            ],
+            "layout": "IPY_MODEL_b8aea249ccf04a619c1e926e7b6b6bbe"
+          }
+        },
+        "a70574b040b14832abb25d2eb040fb0a": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_73554830b9524f1b8b8714ff33c3b8e8",
+            "placeholder": "​",
+            "style": "IPY_MODEL_15bf509be6d946e187e14fd6854950a9",
+            "value": "vocab.txt: 100%"
+          }
+        },
+        "e5c3bf5ade9a405094a1673bc2beb795": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "FloatProgressModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "ProgressView",
+            "bar_style": "success",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_65855073adcd4434b8e9af65ecc59915",
+            "max": 226150,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_f3485f93a7374df49cc200d18e9ac49e",
+            "value": 226150
+          }
+        },
+        "3d7c0e5ba179442eb417435ff72ae85a": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_53d6422031bf48dab34a3b47e237da93",
+            "placeholder": "​",
+            "style": "IPY_MODEL_1ebb572142e8490199aa8ffce39df341",
+            "value": " 226k/226k [00:00<00:00, 3.21MB/s]"
+          }
+        },
+        "b8aea249ccf04a619c1e926e7b6b6bbe": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "73554830b9524f1b8b8714ff33c3b8e8": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "15bf509be6d946e187e14fd6854950a9": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "65855073adcd4434b8e9af65ecc59915": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "f3485f93a7374df49cc200d18e9ac49e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "ProgressStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "bar_color": null,
+            "description_width": ""
+          }
+        },
+        "53d6422031bf48dab34a3b47e237da93": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "1ebb572142e8490199aa8ffce39df341": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "efe460065f0448acbf75200543187bb0": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HBoxModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HBoxView",
+            "box_style": "",
+            "children": [
+              "IPY_MODEL_0e6e8bc125874564bb46431ac85524dc",
+              "IPY_MODEL_30d5690beb7341dc8b37de5a1e0812ab",
+              "IPY_MODEL_e8c76754ea784709bae0c59843c61279"
+            ],
+            "layout": "IPY_MODEL_67690c975154491b96ed9091db152a0f"
+          }
+        },
+        "0e6e8bc125874564bb46431ac85524dc": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_74bbdf59962d41059f018e6eab297968",
+            "placeholder": "​",
+            "style": "IPY_MODEL_2c20eb99653d4026ace81ccbe858b479",
+            "value": "pytorch_model.bin: 100%"
+          }
+        },
+        "30d5690beb7341dc8b37de5a1e0812ab": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "FloatProgressModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "ProgressView",
+            "bar_style": "success",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_183aee869ce34eaca26f1cf533559caa",
+            "max": 440474434,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_d4622e6a3301483c91a66836d5724e0e",
+            "value": 440474434
+          }
+        },
+        "e8c76754ea784709bae0c59843c61279": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_dom_classes": [],
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "HTMLModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/controls",
+            "_view_module_version": "1.5.0",
+            "_view_name": "HTMLView",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_d9c5d0256f534e4cbd82797e1e9f3ccd",
+            "placeholder": "​",
+            "style": "IPY_MODEL_0dc7017260764c9dbdcb9167e7a40b15",
+            "value": " 440M/440M [00:04<00:00, 108MB/s]"
+          }
+        },
+        "67690c975154491b96ed9091db152a0f": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "74bbdf59962d41059f018e6eab297968": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "2c20eb99653d4026ace81ccbe858b479": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        },
+        "183aee869ce34eaca26f1cf533559caa": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "d4622e6a3301483c91a66836d5724e0e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "ProgressStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "bar_color": null,
+            "description_width": ""
+          }
+        },
+        "d9c5d0256f534e4cbd82797e1e9f3ccd": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/base",
+            "_model_module_version": "1.2.0",
+            "_model_name": "LayoutModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "LayoutView",
+            "align_content": null,
+            "align_items": null,
+            "align_self": null,
+            "border": null,
+            "bottom": null,
+            "display": null,
+            "flex": null,
+            "flex_flow": null,
+            "grid_area": null,
+            "grid_auto_columns": null,
+            "grid_auto_flow": null,
+            "grid_auto_rows": null,
+            "grid_column": null,
+            "grid_gap": null,
+            "grid_row": null,
+            "grid_template_areas": null,
+            "grid_template_columns": null,
+            "grid_template_rows": null,
+            "height": null,
+            "justify_content": null,
+            "justify_items": null,
+            "left": null,
+            "margin": null,
+            "max_height": null,
+            "max_width": null,
+            "min_height": null,
+            "min_width": null,
+            "object_fit": null,
+            "object_position": null,
+            "order": null,
+            "overflow": null,
+            "overflow_x": null,
+            "overflow_y": null,
+            "padding": null,
+            "right": null,
+            "top": null,
+            "visibility": null,
+            "width": null
+          }
+        },
+        "0dc7017260764c9dbdcb9167e7a40b15": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "state": {
+            "_model_module": "@jupyter-widgets/controls",
+            "_model_module_version": "1.5.0",
+            "_model_name": "DescriptionStyleModel",
+            "_view_count": null,
+            "_view_module": "@jupyter-widgets/base",
+            "_view_module_version": "1.2.0",
+            "_view_name": "StyleView",
+            "description_width": ""
+          }
+        }
+      }
+    }
+  },
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "yBhXMsR3OE85",
+        "outputId": "f586f5e1-50a3-446a-8258-0dde1c57e636"
+      },
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-1-8174d4ba0823>:8: DtypeWarning: Columns (0,18,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,765,767,768,769,771,772,773,775,776) have mixed types. Specify dtype option on import or set low_memory=False.\n",
+            "  df = pd.read_csv(\"/content/usecase_2_.csv\", quoting=csv.QUOTE_MINIMAL, escapechar='\\\\', on_bad_lines='skip')\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Successfully read the CSV with skipped lines.\n",
+            "Check the problematic rows (if any) by inspecting the original CSV file around row 785.\n"
+          ]
+        }
+      ],
+      "source": [
+        "import pandas as pd\n",
+        "import csv\n",
+        "\n",
+        "# Use csv.QUOTE_MINIMAL to only quote where necessary\n",
+        "# Try to read the file with error_bad_lines=False to skip problematic lines\n",
+        "# and see if you can identify the issue in the skipped rows\n",
+        "try:\n",
+        "    df = pd.read_csv(\"/content/usecase_2_.csv\", quoting=csv.QUOTE_MINIMAL, escapechar='\\\\', on_bad_lines='skip')\n",
+        "    print(\"Successfully read the CSV with skipped lines.\")\n",
+        "    print(\"Check the problematic rows (if any) by inspecting the original CSV file around row 785.\")\n",
+        "except pd.errors.ParserError as e:\n",
+        "    print(f\"Error: {e}\")\n",
+        "    print(\"The on_bad_lines='skip' approach also failed. This likely indicates a more severe issue within the CSV file structure.\")\n",
+        "    print(\"Possible solutions:\")\n",
+        "    print(\"  1. Manually inspect row 785 and the surrounding rows in your CSV file for unescaped quotes or incorrect line endings.\")\n",
+        "    print(\"  2. If you have control over the CSV generation process, ensure proper escaping of quotes and consistent line endings.\")\n",
+        "    print(\"  3. Try using a different text editor to open the CSV file and check for any hidden characters or encoding issues.\")\n",
+        "    print(\"  4. If the file is large, consider processing it in smaller chunks to identify the specific area causing the problem.\")\n",
+        "# escapechar is used to escape special characters (like quotes) within the fields.\n",
+        "# Using backslash here is a common choice."
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "df = df.loc[:, ~df.columns.str.contains('^Unnamed')]"
+      ],
+      "metadata": {
+        "id": "ONTOsvE2P2hT"
+      },
+      "execution_count": null,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "print(df.head())"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "0ICHZF9HP4vp",
+        "outputId": "4fdf71c5-22f2-44c7-b559-8f40b5d8b75b"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "    NCT Number                                        Study Title  \\\n",
+            "0  NCT04841499  Effects of a Seven-day BASIS™ Supplementation ...   \n",
+            "1  NCT03020641          Peritoneal Damage in Laparoscopic Surgery   \n",
+            "2  NCT03727620  Doxycycline in the Treatment of Aggressive Per...   \n",
+            "3  NCT03162926  A Safety and Tolerability Study of VC-02™ Comb...   \n",
+            "4  NCT04434313  Treatment of Hemiparetic Gait Impairments Usin...   \n",
+            "\n",
+            "                                      Study URL Acronym Study Status  \\\n",
+            "0  https://clinicaltrials.gov/study/NCT04841499     NaN    COMPLETED   \n",
+            "1  https://clinicaltrials.gov/study/NCT03020641     NaN    COMPLETED   \n",
+            "2  https://clinicaltrials.gov/study/NCT03727620     NaN    COMPLETED   \n",
+            "3  https://clinicaltrials.gov/study/NCT03162926     NaN    COMPLETED   \n",
+            "4  https://clinicaltrials.gov/study/NCT04434313     NaN    COMPLETED   \n",
+            "\n",
+            "                                       Brief Summary Study Results  \\\n",
+            "0  The purpose of this study is to determine whet...            NO   \n",
+            "1  The investigators hypothesized that applying a...           YES   \n",
+            "2  The aim of the study was to compare the clinic...            NO   \n",
+            "3  The purpose of this trial is to test if VC-02™...            NO   \n",
+            "4  The objective of this research is to investiga...            NO   \n",
+            "\n",
+            "                                          Conditions  \\\n",
+            "0                                          Menopause   \n",
+            "1                                  Peritoneal Damage   \n",
+            "2                           Aggressive Periodontitis   \n",
+            "3                           Type 1 Diabetes Mellitus   \n",
+            "4  Telemedicine|Gait, Hemiplegic|Gait Disorders, ...   \n",
+            "\n",
+            "                                       Interventions  \\\n",
+            "0  DRUG: BASIS™ (Crystalline Nicotinamide Ribosid...   \n",
+            "1  PROCEDURE: Low pressure pneumoperitoneum|PROCE...   \n",
+            "2  DRUG: amoxicillin plus metronidazole|DRUG: Dox...   \n",
+            "3  COMBINATION_PRODUCT: VC-02 Combination Product...   \n",
+            "4  DEVICE: Delivery of iStride™ device gait treat...   \n",
+            "\n",
+            "                            Primary Outcome Measures  ...                 Age  \\\n",
+            "0  Production of Estradiol, To determine whether ...  ...  ADULT, OLDER_ADULT   \n",
+            "1  Inflammatory Peritoneal Markers, logaritmic le...  ...  ADULT, OLDER_ADULT   \n",
+            "2  Decrease of periodontal pockets ≥ 4mm, • Probi...  ...        CHILD, ADULT   \n",
+            "3  Incidence of all adverse events reported for s...  ...  ADULT, OLDER_ADULT   \n",
+            "4  Feasibility of safely implementing the treatme...  ...  ADULT, OLDER_ADULT   \n",
+            "\n",
+            "          Phases Enrollment Funder Type      Study Type  \\\n",
+            "0            NaN         40       OTHER  INTERVENTIONAL   \n",
+            "1            NaN        100       OTHER  INTERVENTIONAL   \n",
+            "2  PHASE1|PHASE2         24       OTHER  INTERVENTIONAL   \n",
+            "3         PHASE1          3    INDUSTRY  INTERVENTIONAL   \n",
+            "4            NaN          6    INDUSTRY  INTERVENTIONAL   \n",
+            "\n",
+            "                                        Study Design            Other IDs  \\\n",
+            "0  Allocation: NA|Intervention Model: SINGLE_GROU...           USAH-EH301   \n",
+            "1  Allocation: RANDOMIZED|Intervention Model: PAR...          A-CGyD-2017   \n",
+            "2  Allocation: NON_RANDOMIZED|Intervention Model:...            DOXYAPG18   \n",
+            "3  Allocation: NA|Intervention Model: SINGLE_GROU...             VC02-102   \n",
+            "4  Allocation: NA|Intervention Model: SINGLE_GROU...  MOT-TELE-2020-04-00   \n",
+            "\n",
+            "                                           Locations  \\\n",
+            "0  University of South Alabama, Mobile, Alabama, ...   \n",
+            "1       Ramon y Cajal Hospital, Madrid, 28034, Spain   \n",
+            "2                  BENRACHADI Latifa, Rabat, Morocco   \n",
+            "3   University of Alberta, Edmonton, Alberta, Canada   \n",
+            "4  Moterum Technologies, Inc. (study location: ho...   \n",
+            "\n",
+            "                                     Study Documents Time taken for Enrollment  \n",
+            "0                                                NaN                         3  \n",
+            "1  Study Protocol and Statistical Analysis Plan, ...                        27  \n",
+            "2                                                NaN                         5  \n",
+            "3                                                NaN                         7  \n",
+            "4                                                NaN                         8  \n",
+            "\n",
+            "[5 rows x 25 columns]\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "df = df.drop(df.columns[0], axis=1)"
+      ],
+      "metadata": {
+        "id": "k-Mb2MQbP60s"
+      },
+      "execution_count": null,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "print(df.dtypes)"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "FKeOAM3tP9-M",
+        "outputId": "eca2d10b-a590-4ecf-e8a6-17816e8eace6"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Study Title                   object\n",
+            "Study URL                     object\n",
+            "Acronym                       object\n",
+            "Study Status                  object\n",
+            "Brief Summary                 object\n",
+            "Study Results                 object\n",
+            "Conditions                    object\n",
+            "Interventions                 object\n",
+            "Primary Outcome Measures      object\n",
+            "Secondary Outcome Measures    object\n",
+            "Other Outcome Measures        object\n",
+            "Sponsor                       object\n",
+            "Collaborators                 object\n",
+            "Sex                           object\n",
+            "Age                           object\n",
+            "Phases                        object\n",
+            "Enrollment                    object\n",
+            "Funder Type                   object\n",
+            "Study Type                    object\n",
+            "Study Design                  object\n",
+            "Other IDs                     object\n",
+            "Locations                     object\n",
+            "Study Documents               object\n",
+            "Time taken for Enrollment     object\n",
+            "dtype: object\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "import re\n",
+        "from nltk.corpus import stopwords\n",
+        "from nltk.tokenize import word_tokenize\n",
+        "import nltk\n",
+        "\n",
+        "# Download necessary NLTK data\n",
+        "nltk.download('stopwords')\n",
+        "nltk.download('punkt')\n",
+        "nltk.download('punkt_tab') # Download punkt_tab data\n",
+        "\n",
+        "# Define the columns to process\n",
+        "text_columns = [\n",
+        "    'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n",
+        "    'Conditions', 'Interventions', 'Primary Outcome Measures',\n",
+        "    'Funder Type', 'Study Type', 'Study Design', 'Locations'\n",
+        "]\n",
+        "\n",
+        "# Define a function to preprocess text (remove prepositions and stopwords)\n",
+        "def preprocess_text(text):\n",
+        "    if pd.isnull(text):\n",
+        "        return text  # Skip processing for NaN values\n",
+        "    # Tokenize and remove punctuation\n",
+        "    words = word_tokenize(re.sub(r'[^\\w\\s]', '', text.lower()))\n",
+        "    # Remove stopwords (including prepositions)\n",
+        "    filtered_words = [word for word in words if word not in stopwords.words('english')]\n",
+        "    return ' '.join(filtered_words)\n",
+        "\n",
+        "# Apply preprocessing to specified columns\n",
+        "for column in text_columns:\n",
+        "    if column in df.columns:\n",
+        "        df[column] = df[column].apply(preprocess_text)"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "EK48M-dFQBJW",
+        "outputId": "7f1601b1-da77-474b-efc1-9ea5b28607dc"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "[nltk_data] Downloading package stopwords to /root/nltk_data...\n",
+            "[nltk_data]   Unzipping corpora/stopwords.zip.\n",
+            "[nltk_data] Downloading package punkt to /root/nltk_data...\n",
+            "[nltk_data]   Unzipping tokenizers/punkt.zip.\n",
+            "[nltk_data] Downloading package punkt_tab to /root/nltk_data...\n",
+            "[nltk_data]   Unzipping tokenizers/punkt_tab.zip.\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "print(df.head)"
+      ],
+      "metadata": {
+        "id": "oizcbyiPQE-Q",
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "outputId": "52cd4dd2-688f-42f9-d44a-41c064365da0"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "<bound method NDFrame.head of                                             Study Title  \\\n",
+            "0     effects sevenday basis supplementation menopau...   \n",
+            "1                peritoneal damage laparoscopic surgery   \n",
+            "2        doxycycline treatment aggressive periodontitis   \n",
+            "3     safety tolerability study vc02 combination pro...   \n",
+            "4     treatment hemiparetic gait impairments using t...   \n",
+            "...                                                 ...   \n",
+            "3098  comparative effectiveness costeffectiveness ch...   \n",
+            "3099  impact intestinal microbiota treatment ceftria...   \n",
+            "3100                               mental balance study   \n",
+            "3101       glymphatic kinetics healthy adult volunteers   \n",
+            "3102  utilizing mychart assess effectiveness interve...   \n",
+            "\n",
+            "                                         Study URL    Acronym Study Status  \\\n",
+            "0     https://clinicaltrials.gov/study/NCT04841499        NaN    completed   \n",
+            "1     https://clinicaltrials.gov/study/NCT03020641        NaN    completed   \n",
+            "2     https://clinicaltrials.gov/study/NCT03727620        NaN    completed   \n",
+            "3     https://clinicaltrials.gov/study/NCT03162926        NaN    completed   \n",
+            "4     https://clinicaltrials.gov/study/NCT04434313        NaN    completed   \n",
+            "...                                            ...        ...          ...   \n",
+            "3098  https://clinicaltrials.gov/study/NCT03294785        NaN    completed   \n",
+            "3099  https://clinicaltrials.gov/study/NCT03179384  CEFIMPACT    completed   \n",
+            "3100  https://clinicaltrials.gov/study/NCT05757050        NaN    completed   \n",
+            "3101  https://clinicaltrials.gov/study/NCT03218111        NaN    completed   \n",
+            "3102  https://clinicaltrials.gov/study/NCT05222464        NaN    completed   \n",
+            "\n",
+            "                                          Brief Summary Study Results  \\\n",
+            "0     purpose study determine whether short suppleme...                 \n",
+            "1     investigators hypothesized applying low intrap...           yes   \n",
+            "2     aim study compare clinical effects systemic us...                 \n",
+            "3     purpose trial test vc02 combination product im...                 \n",
+            "4     objective research investigate feasibility del...                 \n",
+            "...                                                 ...           ...   \n",
+            "3098  multicenter randomized controlled trial assess...                 \n",
+            "3099  acute pyelonephritis apn corresponds infection...                 \n",
+            "3100  proposed design randomised doubleblind control...                 \n",
+            "3101  study done order see gadoliniumbased mri contr...                 \n",
+            "3102  vasomotor symptoms vms common consequence syst...                 \n",
+            "\n",
+            "                                             Conditions  \\\n",
+            "0                                             menopause   \n",
+            "1                                     peritoneal damage   \n",
+            "2                              aggressive periodontitis   \n",
+            "3                              type 1 diabetes mellitus   \n",
+            "4     telemedicinegait hemiplegicgait disorders neur...   \n",
+            "...                                                 ...   \n",
+            "3098                                  chronic neck pain   \n",
+            "3099                               pyelonephritis acute   \n",
+            "3100        mental health wellness 1work related stress   \n",
+            "3101                                            healthy   \n",
+            "3102                                      breast cancer   \n",
+            "\n",
+            "                                          Interventions  \\\n",
+            "0     drug basis crystalline nicotinamide riboside 2...   \n",
+            "1     procedure low pressure pneumoperitoneumprocedu...   \n",
+            "2     drug amoxicillin plus metronidazoledrug doxycy...   \n",
+            "3     combination_product vc02 combination product a...   \n",
+            "4     device delivery istride device gait treatment ...   \n",
+            "...                                                 ...   \n",
+            "3098  procedure chuna manual therapydrug conventiona...   \n",
+            "3099                                   drug ceftriaxone   \n",
+            "3100  dietary_supplement refocus verum tabletsdietar...   \n",
+            "3101                         mr imagingother ctguidance   \n",
+            "3102                           standard care treatments   \n",
+            "\n",
+            "                               Primary Outcome Measures  \\\n",
+            "0     production estradiol determine whether short s...   \n",
+            "1     inflammatory peritoneal markers logaritmic lev...   \n",
+            "2     decrease periodontal pockets 4mm probing pocke...   \n",
+            "3     incidence adverse events reported subjects thr...   \n",
+            "4     feasibility safely implementing treatment prot...   \n",
+            "...                                                 ...   \n",
+            "3098  difference visual analogue scale vas neck pain...   \n",
+            "3099  emergence ceftriaxoneresistant enterobacteriac...   \n",
+            "3100  change cognitive function cognitive domain fac...   \n",
+            "3101  drug distribution time drug distribution gadol...   \n",
+            "3102  patient engagement mychart accessibility user ...   \n",
+            "\n",
+            "                             Secondary Outcome Measures  ...  \\\n",
+            "0                                                   NaN  ...   \n",
+            "1                                                   NaN  ...   \n",
+            "2     Plaque index decrease, Plaque index was assess...  ...   \n",
+            "3                                                   NaN  ...   \n",
+            "4     Feasibility of screening criteria, To enroll p...  ...   \n",
+            "...                                                 ...  ...   \n",
+            "3098  Difference between visual analogue scale (VAS)...  ...   \n",
+            "3099                                                NaN  ...   \n",
+            "3100  Profile of Mood States (POMS), 35-item measure...  ...   \n",
+            "3101                                                NaN  ...   \n",
+            "3102  Hot Flash Severity (MyChart Feasibility), Hot ...  ...   \n",
+            "\n",
+            "                     Age         Phases Enrollment Funder Type  \\\n",
+            "0     ADULT, OLDER_ADULT            NaN         40               \n",
+            "1     ADULT, OLDER_ADULT            NaN        100               \n",
+            "2           CHILD, ADULT  PHASE1|PHASE2         24               \n",
+            "3     ADULT, OLDER_ADULT         PHASE1          3    industry   \n",
+            "4     ADULT, OLDER_ADULT            NaN          6    industry   \n",
+            "...                  ...            ...        ...         ...   \n",
+            "3098               ADULT            NaN        108               \n",
+            "3099  ADULT, OLDER_ADULT         PHASE4          9               \n",
+            "3100  ADULT, OLDER_ADULT            NaN         36    industry   \n",
+            "3101  ADULT, OLDER_ADULT            NaN         19               \n",
+            "3102  ADULT, OLDER_ADULT         PHASE4         56               \n",
+            "\n",
+            "          Study Type                                       Study Design  \\\n",
+            "0     interventional  allocation naintervention model single_groupma...   \n",
+            "1     interventional  allocation randomizedintervention model parall...   \n",
+            "2     interventional  allocation non_randomizedintervention model pa...   \n",
+            "3     interventional  allocation naintervention model single_groupma...   \n",
+            "4     interventional  allocation naintervention model single_groupma...   \n",
+            "...              ...                                                ...   \n",
+            "3098  interventional  allocation randomizedintervention model parall...   \n",
+            "3099  interventional  allocation naintervention model single_groupma...   \n",
+            "3100  interventional  allocation randomizedintervention model crosso...   \n",
+            "3101  interventional  allocation naintervention model single_groupma...   \n",
+            "3102  interventional  allocation naintervention model single_groupma...   \n",
+            "\n",
+            "                    Other IDs  \\\n",
+            "0                  USAH-EH301   \n",
+            "1                 A-CGyD-2017   \n",
+            "2                   DOXYAPG18   \n",
+            "3                    VC02-102   \n",
+            "4         MOT-TELE-2020-04-00   \n",
+            "...                       ...   \n",
+            "3098            JS-CT-2016-14   \n",
+            "3099                16-AOI-02   \n",
+            "3100              5'000'750-1   \n",
+            "3101               1609017536   \n",
+            "3102  REaCT-Hot Flashes Pilot   \n",
+            "\n",
+            "                                              Locations  \\\n",
+            "0     university south alabama mobile alabama 36604 ...   \n",
+            "1               ramon cajal hospital madrid 28034 spain   \n",
+            "2                       benrachadi latifa rabat morocco   \n",
+            "3            university alberta edmonton alberta canada   \n",
+            "4     moterum technologies inc study location homes ...   \n",
+            "...                                                 ...   \n",
+            "3098  bucheon jaseng hospital korean medicine bucheo...   \n",
+            "3099                      chu de nice nice 06003 france   \n",
+            "3100  northumbria university newcastle upon tyne tyn...   \n",
+            "3101  weill cornell medical college new york new yor...   \n",
+            "3102  ottawa hospital cancer centre ottawa ontario c...   \n",
+            "\n",
+            "                                        Study Documents  \\\n",
+            "0                                                   NaN   \n",
+            "1     Study Protocol and Statistical Analysis Plan, ...   \n",
+            "2                                                   NaN   \n",
+            "3                                                   NaN   \n",
+            "4                                                   NaN   \n",
+            "...                                                 ...   \n",
+            "3098                                                NaN   \n",
+            "3099                                                NaN   \n",
+            "3100                                                NaN   \n",
+            "3101                                                NaN   \n",
+            "3102                                                NaN   \n",
+            "\n",
+            "     Time taken for Enrollment  \n",
+            "0                            3  \n",
+            "1                           27  \n",
+            "2                            5  \n",
+            "3                            7  \n",
+            "4                            8  \n",
+            "...                        ...  \n",
+            "3098                        10  \n",
+            "3099                        20  \n",
+            "3100                         6  \n",
+            "3101                        12  \n",
+            "3102                         5  \n",
+            "\n",
+            "[3103 rows x 24 columns]>\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "import nltk\n",
+        "nltk.download('wordnet') # Download the wordnet dataset\n",
+        "\n",
+        "from nltk.corpus import wordnet\n",
+        "\n",
+        "# ... (Rest of your code)\n",
+        "\n",
+        "# Function to expand synonyms for a given word\n",
+        "def get_synonyms(word):\n",
+        "    synonyms = set()\n",
+        "    for syn in wordnet.synsets(word):\n",
+        "        for lemma in syn.lemmas():\n",
+        "            synonyms.add(lemma.name().replace('_', ' '))\n",
+        "    return list(synonyms)\n",
+        "\n",
+        "# Function to expand synonyms in a text\n",
+        "def synonym_expansion(text):\n",
+        "    if pd.isnull(text):\n",
+        "        return text  # Skip processing for NaN values\n",
+        "    words = text.split()  # Split the cleaned text into words\n",
+        "    expanded_text = []\n",
+        "    for word in words:\n",
+        "        expanded_text.append(word)  # Add the original word\n",
+        "        expanded_text.extend(get_synonyms(word))  # Add synonyms\n",
+        "    return ' '.join(set(expanded_text))  # Deduplicate and join back to a string\n",
+        "\n",
+        "# Apply synonym expansion to the same text columns\n",
+        "for column in text_columns:\n",
+        "    if column in df.columns:\n",
+        "        df[column] = df[column].apply(synonym_expansion)\n",
+        "\n",
+        "\n"
+      ],
+      "metadata": {
+        "id": "VxCT0bvfQJF6",
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "outputId": "8997c388-c278-40cb-9d6a-557b1fcea3a6"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "[nltk_data] Downloading package wordnet to /root/nltk_data...\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from sklearn.preprocessing import LabelEncoder\n",
+        "\n",
+        "# List of columns to label encode\n",
+        "label_columns = ['Sex', 'Age', 'Phases', 'Enrollment']\n",
+        "\n",
+        "# Initialize a dictionary to store encoders for each column (optional: for inverse transformations later)\n",
+        "label_encoders = {}\n",
+        "\n",
+        "# Apply label encoding to each specified column\n",
+        "for column in label_columns:\n",
+        "    if column in df.columns:\n",
+        "        le = LabelEncoder()\n",
+        "        df[column] = le.fit_transform(df[column].astype(str))  # Ensure all data is treated as string\n",
+        "        label_encoders[column] = le"
+      ],
+      "metadata": {
+        "id": "tBlxiVGRQMwy"
+      },
+      "execution_count": null,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "columns_to_check = [\n",
+        "    'Sex', 'Age', 'Phases', 'Enrollment', 'Study Title', 'Study Status', 'Brief Summary',\n",
+        "    'Study Results', 'Conditions', 'Interventions', 'Primary Outcome Measures',\n",
+        "    'Funder Type', 'Study Type', 'Study Design', 'Locations', 'Time taken for Enrollment'\n",
+        "]\n",
+        "\n",
+        "# Filter rows where all specified columns have non-null values\n",
+        "filtered_df = df.dropna(subset=columns_to_check)\n",
+        "\n",
+        "# Select the top 1000 rows\n",
+        "top_1000_rows = filtered_df.head(1000)"
+      ],
+      "metadata": {
+        "id": "LFnloowZQPqa"
+      },
+      "execution_count": null,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from transformers import AutoTokenizer, AutoModel\n",
+        "import torch\n",
+        "\n",
+        "# Load the PubMedBERT model and tokenizer\n",
+        "model_name = \"microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract-fulltext\"\n",
+        "tokenizer = AutoTokenizer.from_pretrained(model_name)\n",
+        "model = AutoModel.from_pretrained(model_name)\n",
+        "\n",
+        "# Function to generate embeddings\n",
+        "def generate_embedding(text, tokenizer, model):\n",
+        "    if pd.isna(text) or text.strip() == \"\":  # Handle empty or NaN values\n",
+        "        return torch.zeros(768).tolist()  # Return a zero vector if the text is empty\n",
+        "    inputs = tokenizer(text, return_tensors=\"pt\", truncation=True, max_length=512, padding=True)\n",
+        "    with torch.no_grad():\n",
+        "        outputs = model(**inputs)\n",
+        "    return outputs.last_hidden_state.mean(dim=1).squeeze().tolist()  # Mean pooling of embeddings\n",
+        "\n",
+        "# Columns to process\n",
+        "text_columns = [\n",
+        "    'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n",
+        "    'Conditions', 'Interventions', 'Primary Outcome Measures',\n",
+        "    'Funder Type', 'Study Type', 'Study Design', 'Locations'\n",
+        "]\n",
+        "\n",
+        "# Generate embeddings for each column using PubMedBERT\n",
+        "for col in text_columns:\n",
+        "    print(f\"Generating embeddings for column: {col} using PubMedBERT\")\n",
+        "    top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n",
+        "        lambda x: generate_embedding(x, tokenizer, model)\n",
+        "    )\n"
+      ],
+      "metadata": {
+        "id": "WB6AGY7uQSIR",
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 1000,
+          "referenced_widgets": [
+            "e41925970dc94c2aa90b4da8acac85cf",
+            "c1f0f99a4a4341d18e0039a71b305111",
+            "d54d01c91e694b3eb180170cddd1211c",
+            "3c707baf63cf4cbf9732e39ddeb84c7c",
+            "08955c157996426eaa089d878b8d820f",
+            "da9c8ff09bed4c6989b0246c7bdc8fd7",
+            "b78266bbcc0e4ed0bcaab9009b30d98e",
+            "2fd8c28ebf1b47f78e2e0093608407cf",
+            "8c728d06a0814cc8b83931b24f0115d9",
+            "da4b0713ce9f47208a39ec89515c30e4",
+            "b2fd795e6a534319a87213f05e824315",
+            "0722a8ceb94345a79e5bdc3b84f71d7f",
+            "7c04cff87d1041b1878488f5014f9b7c",
+            "0ef4539514a1462caacf58e5c3fa516b",
+            "4c61a2b37c4c4ffbb3a10d270140724f",
+            "d1288d4268e74bd384064c4f2cfbfa7b",
+            "1c84ce5cb56a4c7286c0f5981b8fbd5a",
+            "61a01f78b9714e4aa0d869d8e6563e81",
+            "180753d93be944e98c47bba836397ba0",
+            "db137743dfc24b6b84c6c15bcd5b5766",
+            "16f88feb88fc43b5b381521d91b02150",
+            "9b2a4006744a4940aa64fd9e41d62d4e",
+            "d55048b2772b47eab27637e9aa42d4dc",
+            "a70574b040b14832abb25d2eb040fb0a",
+            "e5c3bf5ade9a405094a1673bc2beb795",
+            "3d7c0e5ba179442eb417435ff72ae85a",
+            "b8aea249ccf04a619c1e926e7b6b6bbe",
+            "73554830b9524f1b8b8714ff33c3b8e8",
+            "15bf509be6d946e187e14fd6854950a9",
+            "65855073adcd4434b8e9af65ecc59915",
+            "f3485f93a7374df49cc200d18e9ac49e",
+            "53d6422031bf48dab34a3b47e237da93",
+            "1ebb572142e8490199aa8ffce39df341",
+            "efe460065f0448acbf75200543187bb0",
+            "0e6e8bc125874564bb46431ac85524dc",
+            "30d5690beb7341dc8b37de5a1e0812ab",
+            "e8c76754ea784709bae0c59843c61279",
+            "67690c975154491b96ed9091db152a0f",
+            "74bbdf59962d41059f018e6eab297968",
+            "2c20eb99653d4026ace81ccbe858b479",
+            "183aee869ce34eaca26f1cf533559caa",
+            "d4622e6a3301483c91a66836d5724e0e",
+            "d9c5d0256f534e4cbd82797e1e9f3ccd",
+            "0dc7017260764c9dbdcb9167e7a40b15"
+          ]
+        },
+        "outputId": "4ca695b1-5a35-4c3d-d856-5e6450e388a2"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n",
+            "The secret `HF_TOKEN` does not exist in your Colab secrets.\n",
+            "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n",
+            "You will be able to reuse this secret in all of your notebooks.\n",
+            "Please note that authentication is recommended but still optional to access public models or datasets.\n",
+            "  warnings.warn(\n"
+          ]
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "tokenizer_config.json:   0%|          | 0.00/28.0 [00:00<?, ?B/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "e41925970dc94c2aa90b4da8acac85cf"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "config.json:   0%|          | 0.00/385 [00:00<?, ?B/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "0722a8ceb94345a79e5bdc3b84f71d7f"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "vocab.txt:   0%|          | 0.00/226k [00:00<?, ?B/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "d55048b2772b47eab27637e9aa42d4dc"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "pytorch_model.bin:   0%|          | 0.00/440M [00:00<?, ?B/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "efe460065f0448acbf75200543187bb0"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Study Title using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Study Status using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Brief Summary using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Study Results using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Conditions using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Interventions using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Primary Outcome Measures using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Funder Type using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Study Type using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Study Design using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Generating embeddings for column: Locations using PubMedBERT\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "!pip install umap-learn"
+      ],
+      "metadata": {
+        "id": "gfPr4CcMQWMx",
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "outputId": "094e9427-18ef-40b5-a216-afd5416b4b69"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Collecting umap-learn\n",
+            "  Downloading umap_learn-0.5.7-py3-none-any.whl.metadata (21 kB)\n",
+            "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (1.26.4)\n",
+            "Requirement already satisfied: scipy>=1.3.1 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (1.13.1)\n",
+            "Requirement already satisfied: scikit-learn>=0.22 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (1.6.0)\n",
+            "Requirement already satisfied: numba>=0.51.2 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (0.60.0)\n",
+            "Collecting pynndescent>=0.5 (from umap-learn)\n",
+            "  Downloading pynndescent-0.5.13-py3-none-any.whl.metadata (6.8 kB)\n",
+            "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from umap-learn) (4.67.1)\n",
+            "Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba>=0.51.2->umap-learn) (0.43.0)\n",
+            "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.10/dist-packages (from pynndescent>=0.5->umap-learn) (1.4.2)\n",
+            "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.22->umap-learn) (3.5.0)\n",
+            "Downloading umap_learn-0.5.7-py3-none-any.whl (88 kB)\n",
+            "\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/88.8 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m88.8/88.8 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading pynndescent-0.5.13-py3-none-any.whl (56 kB)\n",
+            "\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/56.9 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.9/56.9 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hInstalling collected packages: pynndescent, umap-learn\n",
+            "Successfully installed pynndescent-0.5.13 umap-learn-0.5.7\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from sklearn.manifold import TSNE\n",
+        "import umap\n",
+        "import matplotlib.pyplot as plt\n",
+        "from sklearn.metrics import pairwise_distances\n",
+        "import numpy as np\n",
+        "\n",
+        "# Combine all embedding columns into a single DataFrame\n",
+        "embedding_columns = [f\"{col}_embedding\" for col in [\n",
+        "    'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n",
+        "    'Conditions', 'Interventions', 'Primary Outcome Measures',\n",
+        "    'Funder Type', 'Study Type', 'Study Design', 'Locations'\n",
+        "]]\n",
+        "\n",
+        "# Flatten embeddings into a single numpy array\n",
+        "embedding_data = np.vstack(\n",
+        "    top_1000_rows[embedding_columns].apply(\n",
+        "        lambda row: np.concatenate(row.values), axis=1\n",
+        "    )\n",
+        ")\n",
+        "\n",
+        "# Use pairwise distances for elbow method\n",
+        "distances = pairwise_distances(embedding_data, metric='euclidean')\n",
+        "\n",
+        "# Find optimal dimensions for UMAP using the elbow method\n",
+        "inertia = []\n",
+        "dimensions = range(2, 50)  # Test dimensions from 2 to 50\n",
+        "for dim in dimensions:\n",
+        "    umap_reducer = umap.UMAP(n_components=dim, random_state=42)\n",
+        "    transformed = umap_reducer.fit_transform(embedding_data)\n",
+        "    inertia.append(np.sum(np.var(transformed, axis=0)))  # Variance in reduced dimensions\n",
+        "\n",
+        "# Plot the elbow curve\n",
+        "plt.figure(figsize=(8, 5))\n",
+        "plt.plot(dimensions, inertia, marker='o')\n",
+        "plt.title(\"Elbow Method for UMAP Dimension Reduction\")\n",
+        "plt.xlabel(\"Number of Components\")\n",
+        "plt.ylabel(\"Sum of Variance\")\n",
+        "plt.grid()\n",
+        "plt.show()"
+      ],
+      "metadata": {
+        "id": "g6Jg9xf1Vq8B",
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 1000
+        },
+        "outputId": "1409e037-88f0-4038-d687-3ead90037e6a"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n"
+          ]
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "<Figure size 800x500 with 1 Axes>"
+            ],
+            "image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAHWCAYAAABt3aEVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADUn0lEQVR4nOydd5wU9f3/X7P9ej+uAEeVXgRFUBBQUECxRGNXjEZjj2KMGmOQaKIYS772hF+MRiyJsUQUURQUVAQVAelwHAccV7jbq9vL/P6Y/czu3m2ZnZ3dnb17Px8PEm/rbJt5z+vzer/eHM/zPAiCIAiCIAiiF6BJ9QYQBEEQBEEQhFJQcUsQBEEQBEH0Gqi4JQiCIAiCIHoNVNwSBEEQBEEQvQYqbgmCIAiCIIheAxW3BEEQBEEQRK+BiluCIAiCIAii10DFLUEQBEEQBNFroOKWIAiCIAiC6DVQcUsQIeA4Dg899JD490MPPQSO49Dc3Jy6jVIpgwYNwrnnnpvw5/niiy/AcRy++OKLqLf97rvvcOqppyIrKwscx2Hr1q0J3z6i5+8mXbn22msxaNCgVG9GQjl06BA4jsMrr7yS9Od+5ZVXwHEcDh06lPTnJvoGVNwSfQa2Qw3379tvv031Jspm0KBB4DgOc+bMCXn98uXLxdf5/fffx/z4u3btwkMPPZQWByOXy4Wf//znMJvNePrpp/Haa6+hqqoqYc/Hvlfh3tdzzz23R6HEPotf/vKXIe/zwAMPiLcJd0J1ySWXgOM43HvvvSGvZycD7J9er8eQIUNwzTXX4ODBg1FfF/tOcRwHjUaD/Px8jBs3DjfeeCM2bdoU9f5E7LCCM/B9LywsxPz587Fx48ZUb17M/PnPf8b777+f6s0g+iC6VG8AQSSbP/7xjxg8eHCPy4cNG5aCrVEOk8mEdevWoaGhAWVlZUHXvf766zCZTLDb7bIee9euXVi6dClmzZqlekWruroatbW1WL58edjiUQ2YTCa88847eOGFF2AwGIKue/PNNyN+Xh0dHVi5ciUGDRqEN998E4899hg4jgt52zvuuAMnn3wyXC4XtmzZgr///e/46KOP8NNPP6GioiLiNk6cOBF33303AKCzsxO7d+/G22+/jeXLl+Ouu+7CU089FXR7m80GnS79DyvLly+H1+tN2fNffvnlWLBgATweD/bt24cXXngBs2fPxnfffYdx48albLti5c9//jMuvvhiXHDBBUGXX3311bjssstgNBpTs2FEryf990IEESPz58/HSSedlOrNUJzTTjsN3333Hf7973/j17/+tXj50aNHsWHDBlx44YV45513UriFyaGpqQkAkJ+fr9hjWiwWZGVlKfZ4ADBv3jx88MEH+Pjjj3H++eeLl3/zzTeoqanBRRddFPbzeuedd+DxePDyyy/jjDPOwPr16zFz5syQt50xYwYuvvhiAMAvfvELnHDCCbjjjjvw6quv4v7774+4jZWVlbjqqquCLlu2bBmuuOIKPP300xg+fDhuvvlm8TqTySTptasdvV6f0uefNGlS0Ps+Y8YMzJ8/Hy+++CJeeOGFFG6ZMmi1Wmi12lRvBtGLIVsCQcRAc3MzLrnkEuTm5qKoqAi//vWve6hrbrcbDz/8MIYOHQqj0YhBgwbhd7/7HRwOh3ibxYsXo6ioCDzPi5fdfvvt4DgOzzzzjHhZY2MjOI7Diy++GHXbTCYTfvazn+GNN94IuvzNN99EQUEBzj777JD327NnDy6++GIUFhbCZDLhpJNOwgcffCBe/8orr+DnP/85AGD27Nnikml37+tXX32FKVOmwGQyYciQIfjXv/7V47kOHjyIn//85ygsLERmZiamTp2Kjz76qMftjh49igsuuABZWVkoLS3FXXfdFfT+hePaa68Vi7yf//zn4DgOs2bNEq9fu3YtZsyYgaysLOTn5+P888/H7t27gx6D+at37dqFK664AgUFBZg+fXrU546VyspKnH766T0+r9dffx3jxo3D2LFjw9739ddfx9y5czF79myMGjUKr7/+uuTnPeOMMwAANTU1srY7IyMDr732GgoLC/GnP/0p6Dsczqu+b98+XHXVVcjLy0NJSQkefPBB8DyPI0eO4Pzzz0dubi7Kysrw5JNP9ng+h8OBJUuWYNiwYTAajRgwYAB++9vf9vg+cByH2267De+//z7Gjh0Lo9GIMWPGYPXq1UG36+zsxJ133olBgwbBaDSitLQUc+fOxZYtW8TbhPLcWiwW3H333RgwYACMRiNGjBiBJ554Iuj1x7IdsTBjxgwAwqpEIG1tbbjzzjvFbRo2bBiWLVvWQ3Vua2vDtddei7y8POTn52PRokVoa2vr8TyzZs0K+r0wQr0fXq8X//d//4dx48bBZDKhpKQE8+bNE+05HMfBYrHg1VdfFfcZ1157LYDwntsXXngBY8aMgdFoREVFBW699dYe2zlr1iyMHTsWu3btwuzZs5GZmYnKyko8/vjjkd9Eok9BxS3R52hvb0dzc3PQv5aWFkn3veSSS2C32/Hoo49iwYIFeOaZZ3DjjTcG3eaXv/wl/vCHP2DSpEl4+umnMXPmTDz66KO47LLLxNvMmDEDZrMZO3fuFC/bsGEDNBoNNmzYEHQZAJx++umStu+KK67A5s2bgw6Cb7zxBi6++OKQatTOnTsxdepU7N69G/fddx+efPJJZGVl4YILLsB7770nPvcdd9wBAPjd736H1157Da+99hpGjRolPs6BAwdw8cUXY+7cuXjyySdRUFCAa6+9Nuj1NTY24tRTT8Unn3yCW265BX/6059gt9tx3nnnic8FCEvbZ555Jj755BPcdttteOCBB7Bhwwb89re/jfr6f/WrX+F3v/sdAGE5/rXXXsMDDzwAAPjss89w9tlno6mpCQ899BAWL16Mb775BqeddlpIL/HPf/5zWK1W/PnPf8YNN9wQ9bnlcMUVV2DlypXo6uoCIJwYvf3227jiiivC3ufYsWNYt24dLr/8cgDCEvZ///tfOJ1OSc/JvhtFRUWytzs7OxsXXngh6urqsGvXrqi3v/TSS+H1evHYY4/hlFNOwSOPPIK//vWvmDt3LiorK7Fs2TIMGzYMv/nNb7B+/Xrxfl6vF+eddx6eeOIJLFy4EM8++ywuuOACPP3007j00kt7PM9XX32FW265BZdddhkef/xx2O12XHTRRUG/75tuugkvvvgiLrroIrzwwgv4zW9+g4yMjB4nOYHwPI/zzjsPTz/9NObNm4ennnoKI0aMwD333IPFixfL2o5YYN/PgoIC8TKr1YqZM2dixYoVuOaaa/DMM8/gtNNOw/333x+0TTzP4/zzz8drr72Gq666Co888giOHj2KRYsWydoWxvXXXy8W1suWLcN9990Hk8kk9i689tprMBqNmDFjhrjP+NWvfhX28R566CHceuutqKiowJNPPomLLroIf/vb33DWWWfB5XIF3ba1tRXz5s3DhAkT8OSTT2LkyJG499578fHHH8f1moheBE8QfYR//vOfPICQ/4xGY9BtAfBLliwR/16yZAkPgD/vvPOCbnfLLbfwAPht27bxPM/zW7du5QHwv/zlL4Nu95vf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\n"
+          },
+          "metadata": {}
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "optimal_dims = 40  # Example, replace with the value from the plot\n",
+        "\n",
+        "# Apply UMAP with optimal dimensions\n",
+        "umap_reducer = umap.UMAP(n_components=optimal_dims, random_state=42)\n",
+        "reduced_embeddings = umap_reducer.fit_transform(embedding_data)\n",
+        "\n",
+        "# Add reduced embeddings back to the DataFrame\n",
+        "for i in range(optimal_dims):\n",
+        "    top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]"
+      ],
+      "metadata": {
+        "id": "XZbYj6Eqp9Hf",
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "outputId": "54e88763-5ff2-401e-e6b1-e6d3f6d1705c"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n",
+            "  warnings.warn(\n",
+            "/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n",
+            "  warn(\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n",
+            "<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "import numpy as np\n",
+        "import pandas as pd\n",
+        "from sklearn.model_selection import train_test_split\n",
+        "from sklearn.preprocessing import StandardScaler, OneHotEncoder\n",
+        "from sklearn.metrics import mean_squared_error\n",
+        "import tensorflow as tf\n",
+        "from tensorflow.keras.models import Sequential\n",
+        "from tensorflow.keras.layers import SimpleRNN, Dense, Dropout\n",
+        "from tensorflow.keras.optimizers import Adam\n",
+        "from sklearn.compose import ColumnTransformer\n",
+        "from sklearn.pipeline import Pipeline\n",
+        "\n",
+        "# Step 1: Prepare features and target\n",
+        "# Select relevant columns\n",
+        "input_columns = [\n",
+        "    'Sex', 'Age', 'Phases', 'Enrollment',\n",
+        "    'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n",
+        "    'Conditions', 'Interventions', 'Primary Outcome Measures',\n",
+        "    'Funder Type', 'Study Type', 'Study Design'\n",
+        "]\n",
+        "\n",
+        "target_column = 'Time taken for Enrollment'\n",
+        "\n",
+        "# Ensure the columns exist in the dataframe after UMAP processing\n",
+        "input_data = top_1000_rows[input_columns]\n",
+        "target_data = top_1000_rows[target_column]\n",
+        "\n",
+        "# Step 2: Preprocess data\n",
+        "# Handling categorical features using one-hot encoding and scaling\n",
+        "# Columns for one-hot encoding\n",
+        "categorical_columns = ['Sex', 'Age', 'Phases', 'Enrollment']\n",
+        "\n",
+        "# Scale numerical features (UMAP embeddings)\n",
+        "scaler = StandardScaler()\n",
+        "\n",
+        "# Identify numerical columns (excluding categorical and text columns)\n",
+        "numerical_columns = [col for col in input_columns if col not in categorical_columns and col not in text_columns]\n",
+        "\n",
+        "# Ensure all columns are of numeric type before applying preprocessing\n",
+        "# Convert to numeric, replacing non-numeric values with NaN\n",
+        "for col in categorical_columns + numerical_columns:\n",
+        "    input_data[col] = pd.to_numeric(input_data[col], errors='coerce')\n",
+        "\n",
+        "# Impute NaN values if any (you can use a different strategy if needed)\n",
+        "input_data = input_data.fillna(0)\n",
+        "\n",
+        "# Column transformer to apply one-hot encoding to categorical columns and scaling to numerical columns\n",
+        "preprocessor = ColumnTransformer(\n",
+        "    transformers=[\n",
+        "        ('cat', OneHotEncoder(handle_unknown='ignore', sparse_output=False), categorical_columns),\n",
+        "        ('num', scaler, numerical_columns)\n",
+        "    ])\n",
+        "\n",
+        "# Apply the preprocessor to the input data\n",
+        "X = preprocessor.fit_transform(input_data)\n",
+        "\n",
+        "# For the target, make sure it's in a numeric format\n",
+        "y = target_data.values\n",
+        "y = pd.to_numeric(y, errors='coerce')\n",
+        "\n",
+        "# Impute NaN values if any (you can use a different strategy if needed)\n",
+        "y = np.nan_to_num(y)  # Replace NaN with 0\n",
+        "# --- End of the code to insert ---\n",
+        "\n",
+        "\n",
+        "# Step 3: Split data into training and testing sets (80:20)\n",
+        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+      ],
+      "metadata": {
+        "id": "mm6YOeG_p-I0",
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "outputId": "eda3e0ca-7be4-454f-c7cf-3705c158c2dc"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "<ipython-input-26-207c951d05e0>:42: SettingWithCopyWarning: \n",
+            "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+            "Try using .loc[row_indexer,col_indexer] = value instead\n",
+            "\n",
+            "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+            "  input_data[col] = pd.to_numeric(input_data[col], errors='coerce')\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from tensorflow.keras.layers import Bidirectional, LSTM\n",
+        "\n",
+        "# Step 4: Build the BiLSTM model\n",
+        "bi_lstm_model = Sequential()\n",
+        "\n",
+        "# Input layer: BiLSTM expects 3D input (samples, time steps, features)\n",
+        "# Reshaping input to (samples, time steps, features)\n",
+        "bi_lstm_model.add(tf.keras.layers.Reshape((1, X_train.shape[1]), input_shape=(X_train.shape[1],)))\n",
+        "\n",
+        "# BiLSTM layer with 64 units\n",
+        "bi_lstm_model.add(Bidirectional(LSTM(64, activation='relu', return_sequences=False)))\n",
+        "\n",
+        "# Dropout layer to prevent overfitting\n",
+        "bi_lstm_model.add(Dropout(0.2))\n",
+        "\n",
+        "# Output layer: predicting a continuous value (Time taken for Enrollment)\n",
+        "bi_lstm_model.add(Dense(1))\n",
+        "\n",
+        "# Step 5: Compile the BiLSTM model\n",
+        "bi_lstm_model.compile(optimizer=Adam(), loss='mean_squared_error')\n",
+        "\n",
+        "# Step 6: Train the BiLSTM model\n",
+        "bi_lstm_history = bi_lstm_model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))\n",
+        "\n",
+        "# Step 7: Make predictions with the BiLSTM model and evaluate the RMSE\n",
+        "y_pred_bilstm = bi_lstm_model.predict(X_test)\n",
+        "\n",
+        "# Calculate RMSE (Root Mean Squared Error) for BiLSTM model\n",
+        "rmse_bilstm = np.sqrt(mean_squared_error(y_test, y_pred_bilstm))\n",
+        "print(f\"RMSE for BiLSTM: {rmse_bilstm}\")\n"
+      ],
+      "metadata": {
+        "id": "0MpM2NkTqGYe",
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "outputId": "ed87b58e-5718-4f35-da94-a8a36b3648f0"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "/usr/local/lib/python3.10/dist-packages/keras/src/layers/reshaping/reshape.py:39: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
+            "  super().__init__(**kwargs)\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Epoch 1/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 36ms/step - loss: 667.7067 - val_loss: 609.3492\n",
+            "Epoch 2/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - loss: 617.5209 - val_loss: 591.2498\n",
+            "Epoch 3/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - loss: 561.6722 - val_loss: 557.8972\n",
+            "Epoch 4/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 528.3793 - val_loss: 507.4259\n",
+            "Epoch 5/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 455.1757 - val_loss: 443.5311\n",
+            "Epoch 6/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 386.5001 - val_loss: 378.3217\n",
+            "Epoch 7/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 335.8933 - val_loss: 329.0683\n",
+            "Epoch 8/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 278.2339 - val_loss: 300.2128\n",
+            "Epoch 9/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 305.0649 - val_loss: 287.5830\n",
+            "Epoch 10/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 273.1591 - val_loss: 280.5639\n",
+            "Epoch 11/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 234.1577 - val_loss: 276.5512\n",
+            "Epoch 12/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 235.5674 - val_loss: 273.2498\n",
+            "Epoch 13/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 216.2296 - val_loss: 270.5114\n",
+            "Epoch 14/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 216.4830 - val_loss: 268.1384\n",
+            "Epoch 15/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 241.6802 - val_loss: 266.0169\n",
+            "Epoch 16/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 197.7046 - val_loss: 264.7904\n",
+            "Epoch 17/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 254.8440 - val_loss: 263.2259\n",
+            "Epoch 18/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 217.4115 - val_loss: 262.4696\n",
+            "Epoch 19/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 220.9622 - val_loss: 261.7163\n",
+            "Epoch 20/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 203.3700 - val_loss: 261.1432\n",
+            "Epoch 21/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 9ms/step - loss: 204.3532 - val_loss: 260.6401\n",
+            "Epoch 22/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - loss: 206.5609 - val_loss: 260.3468\n",
+            "Epoch 23/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 200.0678 - val_loss: 259.9577\n",
+            "Epoch 24/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 205.6685 - val_loss: 259.8051\n",
+            "Epoch 25/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 200.1108 - val_loss: 259.6185\n",
+            "Epoch 26/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - loss: 190.1116 - val_loss: 259.4397\n",
+            "Epoch 27/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - loss: 188.8570 - val_loss: 259.6147\n",
+            "Epoch 28/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - loss: 192.8143 - val_loss: 260.2402\n",
+            "Epoch 29/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - loss: 173.7915 - val_loss: 260.1749\n",
+            "Epoch 30/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - loss: 184.3625 - val_loss: 260.5374\n",
+            "Epoch 31/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - loss: 171.2388 - val_loss: 260.4700\n",
+            "Epoch 32/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 178.1833 - val_loss: 261.1990\n",
+            "Epoch 33/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 178.0006 - val_loss: 261.4209\n",
+            "Epoch 34/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 187.6684 - val_loss: 262.2680\n",
+            "Epoch 35/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 16ms/step - loss: 159.2341 - val_loss: 262.3969\n",
+            "Epoch 36/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 160.0466 - val_loss: 262.5146\n",
+            "Epoch 37/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 176.0917 - val_loss: 263.1417\n",
+            "Epoch 38/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 16ms/step - loss: 151.0455 - val_loss: 263.6153\n",
+            "Epoch 39/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 146.4944 - val_loss: 264.1271\n",
+            "Epoch 40/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 165.9863 - val_loss: 264.9947\n",
+            "Epoch 41/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 153.2215 - val_loss: 265.0475\n",
+            "Epoch 42/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 154.0866 - val_loss: 265.6365\n",
+            "Epoch 43/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 147.2036 - val_loss: 266.3539\n",
+            "Epoch 44/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 175.0763 - val_loss: 266.5692\n",
+            "Epoch 45/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 16ms/step - loss: 175.0344 - val_loss: 267.5154\n",
+            "Epoch 46/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 154.6448 - val_loss: 267.3886\n",
+            "Epoch 47/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 145.1259 - val_loss: 267.1888\n",
+            "Epoch 48/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 160.2450 - val_loss: 267.4206\n",
+            "Epoch 49/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 15ms/step - loss: 144.1925 - val_loss: 267.6102\n",
+            "Epoch 50/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 144.6609 - val_loss: 268.0196\n",
+            "\u001b[1m7/7\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 51ms/step\n",
+            "RMSE for BiLSTM: 16.37130237010102\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "model = Sequential()\n",
+        "\n",
+        "# Input layer: RNN expects 3D input (samples, time steps, features)\n",
+        "# Here, we'll use a single time step (1) for each sample (flatten the data to time steps)\n",
+        "model.add(tf.keras.layers.Reshape((1, X_train.shape[1]), input_shape=(X_train.shape[1],)))\n",
+        "\n",
+        "# RNN layer with 64 units\n",
+        "model.add(SimpleRNN(64, activation='relu', return_sequences=False))\n",
+        "\n",
+        "# Dropout layer to prevent overfitting\n",
+        "model.add(Dropout(0.3))\n",
+        "\n",
+        "# Output layer: predicting a continuous value (Time taken for Enrollment)\n",
+        "model.add(Dense(1))\n",
+        "\n",
+        "# Step 5: Compile the model\n",
+        "model.compile(optimizer=Adam(), loss='mean_squared_error')\n",
+        "\n",
+        "# Step 6: Train the model\n",
+        "history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))\n",
+        "\n",
+        "# Step 7: Make predictions and evaluate the model\n",
+        "y_pred = model.predict(X_test)\n",
+        "\n",
+        "# Calculate RMSE (Root Mean Squared Error)\n",
+        "rmse = np.sqrt(mean_squared_error(y_test, y_pred))\n",
+        "print(f\"RMSE: {rmse}\")"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "A6JHsy5sBjRs",
+        "outputId": "997929af-bf12-4569-90ba-779b22ada812"
+      },
+      "execution_count": null,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "/usr/local/lib/python3.10/dist-packages/keras/src/layers/reshaping/reshape.py:39: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
+            "  super().__init__(**kwargs)\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Epoch 1/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 26ms/step - loss: 579.7545 - val_loss: 598.7670\n",
+            "Epoch 2/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 541.1518 - val_loss: 571.0222\n",
+            "Epoch 3/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 532.0207 - val_loss: 529.2407\n",
+            "Epoch 4/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 454.2565 - val_loss: 477.3809\n",
+            "Epoch 5/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 415.7916 - val_loss: 424.5004\n",
+            "Epoch 6/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 452.6029 - val_loss: 376.9656\n",
+            "Epoch 7/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 358.6606 - val_loss: 340.9701\n",
+            "Epoch 8/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 310.2562 - val_loss: 314.1212\n",
+            "Epoch 9/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 305.6849 - val_loss: 297.5801\n",
+            "Epoch 10/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 9ms/step - loss: 249.7126 - val_loss: 288.5488\n",
+            "Epoch 11/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 230.8337 - val_loss: 281.9182\n",
+            "Epoch 12/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 264.7994 - val_loss: 277.4290\n",
+            "Epoch 13/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - loss: 230.6227 - val_loss: 274.1347\n",
+            "Epoch 14/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 224.2143 - val_loss: 271.3199\n",
+            "Epoch 15/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 218.0156 - val_loss: 269.0135\n",
+            "Epoch 16/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 235.3152 - val_loss: 266.9712\n",
+            "Epoch 17/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 251.2175 - val_loss: 265.0502\n",
+            "Epoch 18/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 251.1464 - val_loss: 263.4379\n",
+            "Epoch 19/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 220.6263 - val_loss: 261.9560\n",
+            "Epoch 20/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 232.6349 - val_loss: 260.8833\n",
+            "Epoch 21/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 230.8253 - val_loss: 259.8926\n",
+            "Epoch 22/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 226.6449 - val_loss: 258.7480\n",
+            "Epoch 23/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 211.2643 - val_loss: 258.2128\n",
+            "Epoch 24/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 204.0192 - val_loss: 257.8778\n",
+            "Epoch 25/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 246.8270 - val_loss: 257.0885\n",
+            "Epoch 26/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 221.6270 - val_loss: 256.7341\n",
+            "Epoch 27/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 190.9916 - val_loss: 256.3143\n",
+            "Epoch 28/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 205.6945 - val_loss: 256.1562\n",
+            "Epoch 29/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 238.1927 - val_loss: 255.8900\n",
+            "Epoch 30/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 199.9858 - val_loss: 255.9863\n",
+            "Epoch 31/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 218.4140 - val_loss: 256.0137\n",
+            "Epoch 32/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - loss: 233.9201 - val_loss: 255.7076\n",
+            "Epoch 33/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 216.9118 - val_loss: 256.2441\n",
+            "Epoch 34/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - loss: 214.1853 - val_loss: 255.9830\n",
+            "Epoch 35/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - loss: 216.3486 - val_loss: 256.2111\n",
+            "Epoch 36/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 175.9630 - val_loss: 256.3767\n",
+            "Epoch 37/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - loss: 204.1494 - val_loss: 256.2661\n",
+            "Epoch 38/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 6ms/step - loss: 205.1333 - val_loss: 256.2394\n",
+            "Epoch 39/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 194.3962 - val_loss: 256.8536\n",
+            "Epoch 40/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - loss: 192.2582 - val_loss: 257.1403\n",
+            "Epoch 41/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 200.7191 - val_loss: 257.0217\n",
+            "Epoch 42/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 179.5457 - val_loss: 257.5062\n",
+            "Epoch 43/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 182.3336 - val_loss: 257.6974\n",
+            "Epoch 44/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 186.9329 - val_loss: 258.0083\n",
+            "Epoch 45/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 175.0525 - val_loss: 257.9814\n",
+            "Epoch 46/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 208.5019 - val_loss: 258.1638\n",
+            "Epoch 47/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 204.7254 - val_loss: 258.5562\n",
+            "Epoch 48/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 185.3362 - val_loss: 258.8849\n",
+            "Epoch 49/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 185.8382 - val_loss: 259.3331\n",
+            "Epoch 50/50\n",
+            "\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - loss: 179.8962 - val_loss: 259.4713\n",
+            "\u001b[1m7/7\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 24ms/step\n",
+            "RMSE: 16.108112997784122\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [],
+      "metadata": {
+        "id": "cB3wFHSgCFjN"
+      },
+      "execution_count": null,
+      "outputs": []
+    }
+  ]
+}
\ No newline at end of file