{"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-24T02:58:16.338499Z","iopub.execute_input":"2022-10-24T02:58:16.338844Z","iopub.status.idle":"2022-10-24T02:58:16.345194Z","shell.execute_reply.started":"2022-10-24T02:58:16.338818Z","shell.execute_reply":"2022-10-24T02:58:16.343681Z"},"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-24T02:58:16.347006Z","iopub.execute_input":"2022-10-24T02:58:16.347367Z","iopub.status.idle":"2022-10-24T02:58:16.360632Z","shell.execute_reply.started":"2022-10-24T02:58:16.347334Z","shell.execute_reply":"2022-10-24T02:58:16.359649Z"},"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-24T02:58:16.362135Z","iopub.execute_input":"2022-10-24T02:58:16.362600Z","iopub.status.idle":"2022-10-24T02:58:30.659503Z","shell.execute_reply.started":"2022-10-24T02:58:16.362574Z","shell.execute_reply":"2022-10-24T02:58:30.658503Z"},"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\ndfs = ( pd.read_csv(INPUT + f'train_{i}.csv', dtype = train_dtypes) for i in tqdm(range(1)) )\ntrain_list = pd.concat(dfs).groupby(level=0).mean()\n    \ntrain_list","metadata":{"execution":{"iopub.status.busy":"2022-10-24T02:58:30.661753Z","iopub.execute_input":"2022-10-24T02:58:30.662068Z","iopub.status.idle":"2022-10-24T02:58:44.879487Z","shell.execute_reply.started":"2022-10-24T02:58:30.662038Z","shell.execute_reply":"2022-10-24T02:58:44.878050Z"},"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-24T02:58:44.880717Z","iopub.execute_input":"2022-10-24T02:58:44.881006Z","iopub.status.idle":"2022-10-24T02:58:48.633580Z","shell.execute_reply.started":"2022-10-24T02:58:44.880981Z","shell.execute_reply":"2022-10-24T02:58:48.632593Z"},"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-24T02:58:48.634593Z","iopub.execute_input":"2022-10-24T02:58:48.635832Z","iopub.status.idle":"2022-10-24T02:58:48.735062Z","shell.execute_reply.started":"2022-10-24T02:58:48.635779Z","shell.execute_reply":"2022-10-24T02:58:48.733988Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train_list.shape)\nprint(test.shape)\nprint(submission.shape)\n","metadata":{"execution":{"iopub.status.busy":"2022-10-24T02:58:48.736020Z","iopub.execute_input":"2022-10-24T02:58:48.736242Z","iopub.status.idle":"2022-10-24T02:58:48.743169Z","shell.execute_reply.started":"2022-10-24T02:58:48.736220Z","shell.execute_reply":"2022-10-24T02:58:48.741468Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Define X and y variables","metadata":{}},{"cell_type":"code","source":"y_a = train_list['team_A_scoring_within_10sec']\ny_b = train_list['team_B_scoring_within_10sec']\n# print(y_a)\n\nX = train_list.drop(['game_num', 'event_id', 'event_time', 'player_scoring_next', \\\n                         '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-24T02:58:48.745383Z","iopub.execute_input":"2022-10-24T02:58:48.745875Z","iopub.status.idle":"2022-10-24T02:58:49.101510Z","shell.execute_reply.started":"2022-10-24T02:58:48.745766Z","shell.execute_reply":"2022-10-24T02:58:49.100599Z"},"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-24T02:58:49.103748Z","iopub.execute_input":"2022-10-24T02:58:49.104044Z","iopub.status.idle":"2022-10-24T02:58:52.078395Z","shell.execute_reply.started":"2022-10-24T02:58:49.104015Z","shell.execute_reply":"2022-10-24T02:58:52.077075Z"},"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-24T02:58:52.079751Z","iopub.execute_input":"2022-10-24T02:58:52.080013Z","iopub.status.idle":"2022-10-24T03:00:21.792661Z","shell.execute_reply.started":"2022-10-24T02:58:52.079989Z","shell.execute_reply":"2022-10-24T03:00:21.791802Z"},"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-24T03:00:21.795392Z","iopub.execute_input":"2022-10-24T03:00:21.795739Z","iopub.status.idle":"2022-10-24T03:00:24.985448Z","shell.execute_reply.started":"2022-10-24T03:00:21.795713Z","shell.execute_reply":"2022-10-24T03:00:24.984691Z"},"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-24T03:00:24.989132Z","iopub.execute_input":"2022-10-24T03:00:24.991213Z","iopub.status.idle":"2022-10-24T03:00:27.240101Z","shell.execute_reply.started":"2022-10-24T03:00:24.991182Z","shell.execute_reply":"2022-10-24T03:00:27.239033Z"},"trusted":true},"execution_count":null,"outputs":[]}]}