{"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":"markdown","source":"Problem statement\n\nThis may be one of the most challenging Tabular Playground competitions to date! It just so happens that one of Kaggle's software engineers is an avid Rocket League player and he's assembled a dataset of Rocket League gameplay for this month's TPS.\n\nThis month's challenge is to, given a snapshot from a Rocket League match, predict the probability of each team scoring within the next 10 seconds of the game. Sounds awesome, right?","metadata":{}},{"cell_type":"markdown","source":"Import libraries","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport os\nimport matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:36:52.367183Z","iopub.execute_input":"2022-10-01T19:36:52.367630Z","iopub.status.idle":"2022-10-01T19:36:52.373943Z","shell.execute_reply.started":"2022-10-01T19:36:52.367594Z","shell.execute_reply":"2022-10-01T19:36:52.372694Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Load files","metadata":{}},{"cell_type":"code","source":"for dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:36:52.375856Z","iopub.execute_input":"2022-10-01T19:36:52.376253Z","iopub.status.idle":"2022-10-01T19:36:52.394822Z","shell.execute_reply.started":"2022-10-01T19:36:52.376222Z","shell.execute_reply":"2022-10-01T19:36:52.393436Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Read files","metadata":{}},{"cell_type":"code","source":"train_0 = pd.read_csv(\"/kaggle/input/tabular-playground-series-oct-2022/train_0.csv\")\ntrain_0","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:36:52.396503Z","iopub.execute_input":"2022-10-01T19:36:52.397473Z","iopub.status.idle":"2022-10-01T19:37:16.290846Z","shell.execute_reply.started":"2022-10-01T19:36:52.397436Z","shell.execute_reply":"2022-10-01T19:37:16.289787Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tqdm import tqdm\n\nINPUT = '../input/tabular-playground-series-oct-2022/'\n\ndf_train_dtypes = pd.read_csv(INPUT + 'train_dtypes.csv')\ndf_test_dtypes = pd.read_csv(INPUT + 'test_dtypes.csv')\ntrain_dtypes = {k: v for (k, v) in zip(df_train_dtypes.column, df_train_dtypes.dtype)}\ntest_dtypes = {k: v for (k, v) in zip(df_test_dtypes.column, df_test_dtypes.dtype)}\n\ntrain_list = []\n\nfor i in tqdm(range(1)):\n    train_list.append(pd.read_csv(INPUT + f'train_{i}.csv', dtype = train_dtypes))\n    \ntrain_list","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:16.293773Z","iopub.execute_input":"2022-10-01T19:37:16.294851Z","iopub.status.idle":"2022-10-01T19:37:34.222690Z","shell.execute_reply.started":"2022-10-01T19:37:16.294815Z","shell.execute_reply":"2022-10-01T19:37:34.221587Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = pd.read_csv(INPUT + 'test.csv', dtype = test_dtypes)\ntest","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:34.224377Z","iopub.execute_input":"2022-10-01T19:37:34.225024Z","iopub.status.idle":"2022-10-01T19:37:40.217849Z","shell.execute_reply.started":"2022-10-01T19:37:34.224991Z","shell.execute_reply":"2022-10-01T19:37:40.216644Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.read_csv(INPUT + 'sample_submission.csv')\nsubmission","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:40.219459Z","iopub.execute_input":"2022-10-01T19:37:40.219780Z","iopub.status.idle":"2022-10-01T19:37:40.333969Z","shell.execute_reply.started":"2022-10-01T19:37:40.219752Z","shell.execute_reply":"2022-10-01T19:37:40.332787Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train_list[0].shape)\nprint(test.shape)\nprint(submission.shape)\n","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:40.335544Z","iopub.execute_input":"2022-10-01T19:37:40.336439Z","iopub.status.idle":"2022-10-01T19:37:40.343921Z","shell.execute_reply.started":"2022-10-01T19:37:40.336395Z","shell.execute_reply":"2022-10-01T19:37:40.342723Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Define X and y variables","metadata":{}},{"cell_type":"code","source":"y_a = train_list[0]['team_A_scoring_within_10sec']\ny_b = train_list[0]['team_B_scoring_within_10sec']\n\nX = train_list[0].drop(['game_num', 'event_id', 'event_time', 'player_scoring_next', \\\n                        'team_scoring_next', 'team_A_scoring_within_10sec', \\\n                        'team_B_scoring_within_10sec'], axis = 1)\nX_test = test.drop(['id'], axis = 1)\n\nX.shape, y_a.shape,y_b.shape, X_test.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:40.345381Z","iopub.execute_input":"2022-10-01T19:37:40.346277Z","iopub.status.idle":"2022-10-01T19:37:40.596756Z","shell.execute_reply.started":"2022-10-01T19:37:40.346243Z","shell.execute_reply":"2022-10-01T19:37:40.595416Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Split into training and validating sets","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nXa_train, Xa_val, ya_train, ya_val = train_test_split(X, y_a, test_size=0.1, random_state=42, shuffle=True)\nXb_train, Xb_val, yb_train, yb_val = train_test_split(X, y_b, test_size=0.1, random_state=42, shuffle=True)\n\nprint(Xa_train.shape, Xa_val.shape, ya_train.shape, ya_val.shape)\nprint(Xb_train.shape, Xb_val.shape, yb_train.shape, yb_val.shape)","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:40.598405Z","iopub.execute_input":"2022-10-01T19:37:40.598753Z","iopub.status.idle":"2022-10-01T19:37:43.208585Z","shell.execute_reply.started":"2022-10-01T19:37:40.598722Z","shell.execute_reply":"2022-10-01T19:37:43.207434Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Select model","metadata":{}},{"cell_type":"code","source":"import lightgbm as lgb\n\nmodel_A = lgb.LGBMClassifier()\nmodel_B = lgb.LGBMClassifier()\n\nmodel_A.fit(Xa_train,ya_train,eval_set = [(Xa_val,ya_val),(Xa_train,ya_train)])\nmodel_B.fit(Xb_train,yb_train,eval_set = [(Xb_val,yb_val),(Xb_train,yb_train)])\n\ndel train_0,Xa_train,ya_train,Xb_train,yb_train,Xa_val,ya_val,Xb_val,yb_val","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:37:43.213300Z","iopub.execute_input":"2022-10-01T19:37:43.213664Z","iopub.status.idle":"2022-10-01T19:39:23.342081Z","shell.execute_reply.started":"2022-10-01T19:37:43.213632Z","shell.execute_reply":"2022-10-01T19:39:23.340818Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Make predictions","metadata":{}},{"cell_type":"code","source":"predict_A = model_A.predict_proba(X_test)[:,1]\npredict_B = model_B.predict_proba(X_test)[:,1]\n\nprint(predict_A)\nprint(predict_B)","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:39:23.346643Z","iopub.execute_input":"2022-10-01T19:39:23.349116Z","iopub.status.idle":"2022-10-01T19:39:27.064519Z","shell.execute_reply.started":"2022-10-01T19:39:23.349072Z","shell.execute_reply":"2022-10-01T19:39:27.063612Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Prepare submission","metadata":{}},{"cell_type":"code","source":"submission[\"team_A_scoring_within_10sec\"] = predict_A\nsubmission[\"team_B_scoring_within_10sec\"] = predict_B\n\ndisplay(submission)\n\nsubmission.to_csv(\"submission.csv\",index=False)","metadata":{"execution":{"iopub.status.busy":"2022-10-01T19:39:27.068689Z","iopub.execute_input":"2022-10-01T19:39:27.070373Z","iopub.status.idle":"2022-10-01T19:39:29.732866Z","shell.execute_reply.started":"2022-10-01T19:39:27.070328Z","shell.execute_reply":"2022-10-01T19:39:29.731599Z"},"trusted":true},"execution_count":null,"outputs":[]}]}