{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport os\n\nfrom sklearn.model_selection import train_test_split\n\nfrom transformers import AutoTokenizer\nfrom transformers import DataCollatorWithPadding\nfrom transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer\nfrom datasets import Dataset\n\nfrom scipy.special import softmax\n\nimport torch\nfrom transformers import AutoConfig, AutoModel\n\nos.environ[\"WANDB_DISABLED\"] = \"true\"\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-19T14:33:25.986822Z","iopub.execute_input":"2022-07-19T14:33:25.987506Z","iopub.status.idle":"2022-07-19T14:33:25.994899Z","shell.execute_reply.started":"2022-07-19T14:33:25.987469Z","shell.execute_reply":"2022-07-19T14:33:25.993736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_submission = pd.read_csv(\"/kaggle/input/feedback-prize-effectiveness/sample_submission.csv\")\ntrain = pd.read_csv(\"/kaggle/input/feedback-prize-effectiveness/train.csv\")\ntest = pd.read_csv(\"/kaggle/input/feedback-prize-effectiveness/test.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.358367Z","iopub.execute_input":"2022-07-19T13:14:28.358967Z","iopub.status.idle":"2022-07-19T13:14:28.740247Z","shell.execute_reply.started":"2022-07-19T13:14:28.358930Z","shell.execute_reply":"2022-07-19T13:14:28.739146Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()\nprint(train.shape)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.744857Z","iopub.execute_input":"2022-07-19T13:14:28.749521Z","iopub.status.idle":"2022-07-19T13:14:28.766452Z","shell.execute_reply.started":"2022-07-19T13:14:28.749486Z","shell.execute_reply":"2022-07-19T13:14:28.765392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.head()\nprint(test.shape)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.770150Z","iopub.execute_input":"2022-07-19T13:14:28.770989Z","iopub.status.idle":"2022-07-19T13:14:28.778356Z","shell.execute_reply.started":"2022-07-19T13:14:28.770944Z","shell.execute_reply":"2022-07-19T13:14:28.776677Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_submission.head()\nprint(sample_submission.shape)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.781747Z","iopub.execute_input":"2022-07-19T13:14:28.784329Z","iopub.status.idle":"2022-07-19T13:14:28.791006Z","shell.execute_reply.started":"2022-07-19T13:14:28.784289Z","shell.execute_reply":"2022-07-19T13:14:28.789729Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.discourse_id.value_counts().max()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.793159Z","iopub.execute_input":"2022-07-19T13:14:28.793923Z","iopub.status.idle":"2022-07-19T13:14:28.847102Z","shell.execute_reply.started":"2022-07-19T13:14:28.793886Z","shell.execute_reply":"2022-07-19T13:14:28.843170Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.discourse_id.value_counts().max()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.851541Z","iopub.execute_input":"2022-07-19T13:14:28.852503Z","iopub.status.idle":"2022-07-19T13:14:28.867428Z","shell.execute_reply.started":"2022-07-19T13:14:28.852458Z","shell.execute_reply":"2022-07-19T13:14:28.866258Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.essay_id.value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.872434Z","iopub.execute_input":"2022-07-19T13:14:28.875011Z","iopub.status.idle":"2022-07-19T13:14:28.888254Z","shell.execute_reply.started":"2022-07-19T13:14:28.874974Z","shell.execute_reply":"2022-07-19T13:14:28.887050Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.essay_id.value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.893132Z","iopub.execute_input":"2022-07-19T13:14:28.893709Z","iopub.status.idle":"2022-07-19T13:14:28.921726Z","shell.execute_reply.started":"2022-07-19T13:14:28.893662Z","shell.execute_reply":"2022-07-19T13:14:28.920853Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def add_essay(row, train_test=\"train\"):\n    essay_filename = row[\"essay_id\"]\n    complete_filename = f\"/kaggle/input/feedback-prize-effectiveness/{train_test}/{essay_filename}.txt\"\n    with open(complete_filename, \"r\") as fp:\n        text = fp.read()\n    return text","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.923051Z","iopub.execute_input":"2022-07-19T13:14:28.923669Z","iopub.status.idle":"2022-07-19T13:14:28.929735Z","shell.execute_reply.started":"2022-07-19T13:14:28.923634Z","shell.execute_reply":"2022-07-19T13:14:28.928570Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train[\"essay_text\"] = train.apply(lambda x: add_essay(x, train_test=\"train\"), axis=1)\ntest[\"essay_text\"] = test.apply(lambda x: add_essay(x, train_test=\"test\"), axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:14:28.931288Z","iopub.execute_input":"2022-07-19T13:14:28.932369Z","iopub.status.idle":"2022-07-19T13:15:23.526654Z","shell.execute_reply.started":"2022-07-19T13:14:28.932306Z","shell.execute_reply":"2022-07-19T13:15:23.525673Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_complete_text(row):\n    complete_text = row[\"discourse_type\"] + \"\\n\" + row[\"discourse_text\"] + \"\\n\" + row[\"essay_text\"] \n    return complete_text\n\ntrain[\"complete_text\"] = train.apply(lambda x: create_complete_text(x), axis=1)\ntest[\"complete_text\"] = test.apply(lambda x: create_complete_text(x), axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:23.528085Z","iopub.execute_input":"2022-07-19T13:15:23.528461Z","iopub.status.idle":"2022-07-19T13:15:24.597112Z","shell.execute_reply.started":"2022-07-19T13:15:23.528423Z","shell.execute_reply":"2022-07-19T13:15:24.596136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:24.602484Z","iopub.execute_input":"2022-07-19T13:15:24.603208Z","iopub.status.idle":"2022-07-19T13:15:24.619519Z","shell.execute_reply.started":"2022-07-19T13:15:24.603178Z","shell.execute_reply":"2022-07-19T13:15:24.618685Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train[\"complete_text_num_words\"] = train.complete_text.apply(lambda x: len(x.split()))","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:24.621075Z","iopub.execute_input":"2022-07-19T13:15:24.621426Z","iopub.status.idle":"2022-07-19T13:15:25.719741Z","shell.execute_reply.started":"2022-07-19T13:15:24.621392Z","shell.execute_reply":"2022-07-19T13:15:25.718725Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.hist(train[\"complete_text_num_words\"], bins=100)\nplt.title('Histogram of Train Word Counts',size=16)\nplt.xlabel('Train Word Count',size=14)\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:25.721081Z","iopub.execute_input":"2022-07-19T13:15:25.721650Z","iopub.status.idle":"2022-07-19T13:15:26.067555Z","shell.execute_reply.started":"2022-07-19T13:15:25.721605Z","shell.execute_reply":"2022-07-19T13:15:26.066665Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train[\"label\"] = train[\"discourse_effectiveness\"].replace({\"Ineffective\": 0, \"Adequate\": 1, \"Effective\": 2})","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.069800Z","iopub.execute_input":"2022-07-19T13:15:26.070439Z","iopub.status.idle":"2022-07-19T13:15:26.098734Z","shell.execute_reply.started":"2022-07-19T13:15:26.070401Z","shell.execute_reply":"2022-07-19T13:15:26.097741Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.100390Z","iopub.execute_input":"2022-07-19T13:15:26.100769Z","iopub.status.idle":"2022-07-19T13:15:26.114045Z","shell.execute_reply.started":"2022-07-19T13:15:26.100731Z","shell.execute_reply":"2022-07-19T13:15:26.113012Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train, X_val, y_train, y_val = train_test_split(train['complete_text'], train['label'], test_size=0.1, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.115772Z","iopub.execute_input":"2022-07-19T13:15:26.116506Z","iopub.status.idle":"2022-07-19T13:15:26.129233Z","shell.execute_reply.started":"2022-07-19T13:15:26.116468Z","shell.execute_reply":"2022-07-19T13:15:26.128297Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train.value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.132048Z","iopub.execute_input":"2022-07-19T13:15:26.132294Z","iopub.status.idle":"2022-07-19T13:15:26.141669Z","shell.execute_reply.started":"2022-07-19T13:15:26.132271Z","shell.execute_reply":"2022-07-19T13:15:26.140668Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_val.value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.143156Z","iopub.execute_input":"2022-07-19T13:15:26.143492Z","iopub.status.idle":"2022-07-19T13:15:26.150897Z","shell.execute_reply.started":"2022-07-19T13:15:26.143457Z","shell.execute_reply":"2022-07-19T13:15:26.149930Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train = pd.DataFrame({\"complete_text\": X_train, \"label\": y_train})\ndf_val = pd.DataFrame({\"complete_text\": X_val, \"label\": y_val})","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.152474Z","iopub.execute_input":"2022-07-19T13:15:26.153094Z","iopub.status.idle":"2022-07-19T13:15:26.161309Z","shell.execute_reply.started":"2022-07-19T13:15:26.153057Z","shell.execute_reply":"2022-07-19T13:15:26.160179Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# LOAD TRANSFORMERS MODEL","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.162999Z","iopub.execute_input":"2022-07-19T13:15:26.163544Z","iopub.status.idle":"2022-07-19T13:15:26.167433Z","shell.execute_reply.started":"2022-07-19T13:15:26.163510Z","shell.execute_reply":"2022-07-19T13:15:26.166485Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_path = \"distilbert-base-uncased\"","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.169069Z","iopub.execute_input":"2022-07-19T13:15:26.169782Z","iopub.status.idle":"2022-07-19T13:15:26.175236Z","shell.execute_reply.started":"2022-07-19T13:15:26.169744Z","shell.execute_reply":"2022-07-19T13:15:26.174175Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=True)\ndata_collator = DataCollatorWithPadding(tokenizer=tokenizer)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:26.176777Z","iopub.execute_input":"2022-07-19T13:15:26.177124Z","iopub.status.idle":"2022-07-19T13:15:41.337546Z","shell.execute_reply.started":"2022-07-19T13:15:26.177090Z","shell.execute_reply":"2022-07-19T13:15:41.336602Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def tokenize_function(examples):\n    return tokenizer(examples[\"complete_text\"], padding=\"max_length\", truncation=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:41.338769Z","iopub.execute_input":"2022-07-19T13:15:41.339119Z","iopub.status.idle":"2022-07-19T13:15:41.344425Z","shell.execute_reply.started":"2022-07-19T13:15:41.339084Z","shell.execute_reply":"2022-07-19T13:15:41.343354Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dataset = Dataset.from_pandas(df_train)\nval_dataset = Dataset.from_pandas(df_val)\n\ntokenized_train = train_dataset.map(tokenize_function, batched=True)\ntokenized_val = val_dataset.map(tokenize_function, batched=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:15:41.345735Z","iopub.execute_input":"2022-07-19T13:15:41.346749Z","iopub.status.idle":"2022-07-19T13:16:41.617498Z","shell.execute_reply.started":"2022-07-19T13:15:41.346688Z","shell.execute_reply":"2022-07-19T13:16:41.616240Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def freeze(module):\n    \"\"\"\n    Freezes module's parameters.\n    \"\"\"\n    \n    for parameter in module.parameters():\n        parameter.requires_grad = False\n        \ndef get_freezed_parameters(module):\n    \"\"\"\n    Returns names of freezed parameters of the given module.\n    \"\"\"\n    \n    freezed_parameters = []\n    for name, parameter in module.named_parameters():\n        if not parameter.requires_grad:\n            freezed_parameters.append(name)\n            \n    return freezed_parameters\n\nconfig = AutoConfig.from_pretrained(model_path)\nconfig.num_labels = 3\nmodel = AutoModelForSequenceClassification.from_pretrained(model_path,config=config)\n\nfreeze(model.distilbert.embeddings)\nfreeze(model.distilbert.transformer.layer[:2])\n\nfreezed_parameters = get_freezed_parameters(model)\nprint(f\"Freezed parameters: {freezed_parameters}\")\n","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:27:34.900909Z","iopub.execute_input":"2022-07-19T13:27:34.901286Z","iopub.status.idle":"2022-07-19T13:27:37.742986Z","shell.execute_reply.started":"2022-07-19T13:27:34.901257Z","shell.execute_reply":"2022-07-19T13:27:37.741676Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"training_args = TrainingArguments(\n    output_dir=\"./results\",\n    learning_rate=2e-5,\n    per_device_train_batch_size=16,\n    per_device_eval_batch_size=16,\n    num_train_epochs=3,\n    weight_decay=0.01,\n)\n\ntrainer = Trainer(\n    model=model,\n    args=training_args,\n    train_dataset=tokenized_train,\n    eval_dataset=tokenized_val,\n    tokenizer=tokenizer,\n    data_collator=data_collator,\n)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:27:41.246193Z","iopub.execute_input":"2022-07-19T13:27:41.246539Z","iopub.status.idle":"2022-07-19T13:27:41.331538Z","shell.execute_reply.started":"2022-07-19T13:27:41.246510Z","shell.execute_reply":"2022-07-19T13:27:41.330637Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trainer.train()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T13:27:45.909057Z","iopub.execute_input":"2022-07-19T13:27:45.909859Z","iopub.status.idle":"2022-07-19T14:02:47.532518Z","shell.execute_reply.started":"2022-07-19T13:27:45.909823Z","shell.execute_reply":"2022-07-19T14:02:47.531625Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trainer.evaluate()","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:05:51.129605Z","iopub.execute_input":"2022-07-19T14:05:51.130341Z","iopub.status.idle":"2022-07-19T14:06:21.692455Z","shell.execute_reply.started":"2022-07-19T14:05:51.130301Z","shell.execute_reply":"2022-07-19T14:06:21.691374Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trainer.save_model(\"./results/trained_model\")","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:25:12.236710Z","iopub.execute_input":"2022-07-19T14:25:12.237386Z","iopub.status.idle":"2022-07-19T14:25:12.801670Z","shell.execute_reply.started":"2022-07-19T14:25:12.237349Z","shell.execute_reply":"2022-07-19T14:25:12.800724Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# INFERENCE","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:04:26.147246Z","iopub.execute_input":"2022-07-19T14:04:26.147602Z","iopub.status.idle":"2022-07-19T14:04:26.152303Z","shell.execute_reply.started":"2022-07-19T14:04:26.147571Z","shell.execute_reply":"2022-07-19T14:04:26.150942Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trained_tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=True)\ntrained_data_collator = DataCollatorWithPadding(tokenizer=trained_tokenizer)\ntrained_model = AutoModelForSequenceClassification.from_pretrained(\"./results/trained_model\")","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:30:48.335438Z","iopub.execute_input":"2022-07-19T14:30:48.335845Z","iopub.status.idle":"2022-07-19T14:30:58.231947Z","shell.execute_reply.started":"2022-07-19T14:30:48.335814Z","shell.execute_reply":"2022-07-19T14:30:58.231015Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def tokenize_test_function(examples):\n    return trained_tokenizer(examples[\"complete_text\"], padding=\"max_length\", truncation=True)\n\ntest_dataset = Dataset.from_pandas(test)\n\ntokenized_test = test_dataset.map(tokenize_function, batched=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:31:01.114440Z","iopub.execute_input":"2022-07-19T14:31:01.115465Z","iopub.status.idle":"2022-07-19T14:31:01.188647Z","shell.execute_reply.started":"2022-07-19T14:31:01.115418Z","shell.execute_reply":"2022-07-19T14:31:01.187683Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"training_args = TrainingArguments(\n    output_dir=\"./results\",\n    learning_rate=2e-5,\n    per_device_train_batch_size=16,\n    per_device_eval_batch_size=16,\n    num_train_epochs=3,\n    weight_decay=0.01,\n    save_strategy=\"no\"\n)\n\ntrainer = Trainer(\n    model=trained_model,\n    args=training_args,\n    tokenizer=trained_tokenizer,\n    data_collator=trained_data_collator,\n)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:31:04.335523Z","iopub.execute_input":"2022-07-19T14:31:04.336571Z","iopub.status.idle":"2022-07-19T14:31:04.421011Z","shell.execute_reply.started":"2022-07-19T14:31:04.336523Z","shell.execute_reply":"2022-07-19T14:31:04.420065Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"outputs = trainer.predict(tokenized_test)\nsoftmax_outputs = softmax(outputs.predictions, axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:33:33.554859Z","iopub.execute_input":"2022-07-19T14:33:33.555885Z","iopub.status.idle":"2022-07-19T14:33:33.687581Z","shell.execute_reply.started":"2022-07-19T14:33:33.555835Z","shell.execute_reply":"2022-07-19T14:33:33.686536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"softmax_outputs","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:33:37.186893Z","iopub.execute_input":"2022-07-19T14:33:37.187372Z","iopub.status.idle":"2022-07-19T14:33:37.196581Z","shell.execute_reply.started":"2022-07-19T14:33:37.187326Z","shell.execute_reply":"2022-07-19T14:33:37.195457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels = [\"Ineffective\", \"Adequate\", \"Effective\"]\noutput_df = pd.concat([test[['discourse_id']], pd.DataFrame(softmax_outputs, columns=labels)], axis=1)\noutput_df.to_csv('submission.csv', index=False)\npd.read_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:35:03.939415Z","iopub.execute_input":"2022-07-19T14:35:03.940045Z","iopub.status.idle":"2022-07-19T14:35:03.975907Z","shell.execute_reply.started":"2022-07-19T14:35:03.939990Z","shell.execute_reply":"2022-07-19T14:35:03.974878Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from IPython.display import FileLink\nFileLink(r'submission.csv')\n","metadata":{"execution":{"iopub.status.busy":"2022-07-19T14:35:58.138174Z","iopub.execute_input":"2022-07-19T14:35:58.138768Z","iopub.status.idle":"2022-07-19T14:35:58.146748Z","shell.execute_reply.started":"2022-07-19T14:35:58.138724Z","shell.execute_reply":"2022-07-19T14:35:58.145669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}