{"cells":[{"metadata":{},"cell_type":"markdown","source":"## Import Library & Load Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.metrics import log_loss","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"directory = '/kaggle/input/google-cloud-ncaa-march-madness-2020-division-1-mens-tournament/'\ntourney_result = pd.read_csv(directory+'MDataFiles_Stage1/MNCAATourneyCompactResults.csv')\ntourney_seed = pd.read_csv(directory+'MDataFiles_Stage1/MNCAATourneySeeds.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# deleting unnecessary columns\ntourney_result = tourney_result.drop(['DayNum', 'WScore', 'LScore', 'WLoc', 'NumOT'], axis=1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Merge Seed"},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_result = pd.merge(tourney_result, tourney_seed, left_on=['Season', 'WTeamID'], right_on=['Season', 'TeamID'], how='left')\ntourney_result.rename(columns={'Seed':'WSeed'}, inplace=True)\ntourney_result = tourney_result.drop('TeamID', axis=1)\ntourney_result = pd.merge(tourney_result, tourney_seed, left_on=['Season', 'LTeamID'], right_on=['Season', 'TeamID'], how='left')\ntourney_result.rename(columns={'Seed':'LSeed'}, inplace=True)\ntourney_result = tourney_result.drop('TeamID', axis=1)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_seed(x):\n    return int(x[1:3])\n\ntourney_result['WSeed'] = tourney_result['WSeed'].map(lambda x: get_seed(x))\ntourney_result['LSeed'] = tourney_result['LSeed'].map(lambda x: get_seed(x))\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Merge Score"},{"metadata":{"trusted":true},"cell_type":"code","source":"season_result = pd.read_csv(directory+'MDataFiles_Stage1/MRegularSeasonCompactResults.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"season_win_result = season_result[['Season', 'WTeamID', 'WScore']]\nseason_lose_result = season_result[['Season', 'LTeamID', 'LScore']]\nseason_win_result.rename(columns={'WTeamID':'TeamID', 'WScore':'Score'}, inplace=True)\nseason_lose_result.rename(columns={'LTeamID':'TeamID', 'LScore':'Score'}, inplace=True)\nseason_result = pd.concat((season_win_result, season_lose_result)).reset_index(drop=True)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"season_score = season_result.groupby(['Season', 'TeamID'])['Score'].sum().reset_index()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_result = pd.merge(tourney_result, season_score, left_on=['Season', 'WTeamID'], right_on=['Season', 'TeamID'], how='left')\ntourney_result.rename(columns={'Score':'WScoreT'}, inplace=True)\ntourney_result = tourney_result.drop('TeamID', axis=1)\ntourney_result = pd.merge(tourney_result, season_score, left_on=['Season', 'LTeamID'], right_on=['Season', 'TeamID'], how='left')\ntourney_result.rename(columns={'Score':'LScoreT'}, inplace=True)\ntourney_result = tourney_result.drop('TeamID', axis=1)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_win_result = tourney_result.drop(['Season', 'WTeamID', 'LTeamID'], axis=1)\ntourney_win_result.rename(columns={'WSeed':'Seed1', 'LSeed':'Seed2', 'WScoreT':'ScoreT1', 'LScoreT':'ScoreT2'}, inplace=True)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_lose_result = tourney_win_result.copy()\ntourney_lose_result['Seed1'] = tourney_win_result['Seed2']\ntourney_lose_result['Seed2'] = tourney_win_result['Seed1']\ntourney_lose_result['ScoreT1'] = tourney_win_result['ScoreT2']\ntourney_lose_result['ScoreT2'] = tourney_win_result['ScoreT1']\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Prepare Training Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_win_result['Seed_diff'] = tourney_win_result['Seed1'] - tourney_win_result['Seed2']\ntourney_win_result['ScoreT_diff'] = tourney_win_result['ScoreT1'] - tourney_win_result['ScoreT2']\ntourney_lose_result['Seed_diff'] = tourney_lose_result['Seed1'] - tourney_lose_result['Seed2']\ntourney_lose_result['ScoreT_diff'] = tourney_lose_result['ScoreT1'] - tourney_lose_result['ScoreT2']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_win_result['result'] = 1\ntourney_lose_result['result'] = 0\ntourney_result = pd.concat((tourney_win_result, tourney_lose_result)).reset_index(drop=True)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Preparing testing data"},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df = pd.read_csv(directory+'MSampleSubmissionStage1_2020.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df['Season'] = test_df['ID'].map(lambda x: int(x[:4]))\ntest_df['WTeamID'] = test_df['ID'].map(lambda x: int(x[5:9]))\ntest_df['LTeamID'] = test_df['ID'].map(lambda x: int(x[10:14]))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df = pd.merge(test_df, tourney_seed, left_on=['Season', 'WTeamID'], right_on=['Season', 'TeamID'], how='left')\ntest_df.rename(columns={'Seed':'Seed1'}, inplace=True)\ntest_df = test_df.drop('TeamID', axis=1)\ntest_df = pd.merge(test_df, tourney_seed, left_on=['Season', 'LTeamID'], right_on=['Season', 'TeamID'], how='left')\ntest_df.rename(columns={'Seed':'Seed2'}, inplace=True)\ntest_df = test_df.drop('TeamID', axis=1)\ntest_df = pd.merge(test_df, season_score, left_on=['Season', 'WTeamID'], right_on=['Season', 'TeamID'], how='left')\ntest_df.rename(columns={'Score':'ScoreT1'}, inplace=True)\ntest_df = test_df.drop('TeamID', axis=1)\ntest_df = pd.merge(test_df, season_score, left_on=['Season', 'LTeamID'], right_on=['Season', 'TeamID'], how='left')\ntest_df.rename(columns={'Score':'ScoreT2'}, inplace=True)\ntest_df = test_df.drop('TeamID', axis=1)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df['Seed1'] = test_df['Seed1'].map(lambda x: get_seed(x))\ntest_df['Seed2'] = test_df['Seed2'].map(lambda x: get_seed(x))\ntest_df['Seed_diff'] = test_df['Seed1'] - test_df['Seed2']\ntest_df['ScoreT_diff'] = test_df['ScoreT1'] - test_df['ScoreT2']\ntest_df = test_df.drop(['ID', 'Pred', 'Season', 'WTeamID', 'LTeamID'], axis=1)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Train"},{"metadata":{"trusted":true},"cell_type":"code","source":"X = tourney_result.drop('result', axis=1)\ny = tourney_result.result","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for a in X.columns:\n    print(a,X[a].isnull().sum())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ss = StandardScaler()\nss.fit(pd.concat([X[X.columns],test_df[X.columns]],sort=False))\nX[X.columns] = ss.transform(X[X.columns])\ntest_df[X.columns] = ss.transform(test_df[X.columns])","execution_count":null,"outputs":[]},{"metadata":{"scrolled":true,"trusted":true},"cell_type":"code","source":"def Output(p):\n    return 1.0/(1.+np.exp(-p))\n\ndef GPI(data):\n    return Output(  0.100000*np.tanh((((((((((13.17023181915283203)) * ((((-((data[\"Seed_diff\"])))) * 2.0)))) - (((data[\"Seed1\"]) + (data[\"ScoreT2\"]))))) * 2.0)) - (np.cos(((-((data[\"Seed_diff\"])))))))) +\n                    0.100000*np.tanh(((((((((((data[\"ScoreT_diff\"]) + (((((data[\"Seed_diff\"]) * ((-3.0)))) * 2.0)))) * 2.0)) * 2.0)) * 2.0)) + (data[\"Seed_diff\"]))) +\n                    0.100000*np.tanh((((((14.09049892425537109)) * (((((-((((((np.cos((data[\"Seed2\"]))) + (data[\"ScoreT_diff\"]))) * 2.0))))) + ((((14.09049892425537109)) * ((-((data[\"Seed_diff\"])))))))/2.0)))) * 2.0)) +\n                    0.100000*np.tanh(((data[\"Seed2\"]) + (((((data[\"ScoreT_diff\"]) + ((((((((((-((data[\"Seed_diff\"])))) + (((np.cos((data[\"Seed2\"]))) / 2.0)))) * 2.0)) * 2.0)) * 2.0)))) * 2.0)))) +\n                    0.100000*np.tanh(((((((((data[\"ScoreT_diff\"]) + (((((((data[\"Seed2\"]) + (((-0.994007))))) - (data[\"Seed1\"]))) * 2.0)))) * 2.0)) - (((data[\"Seed2\"]) + (data[\"Seed1\"]))))) * 2.0)))\n\ndef GPII(data):\n    return Output(  0.100000*np.tanh(((((((((((((((data[\"ScoreT_diff\"]) + ((((((-2.0)) * (data[\"Seed_diff\"]))) * 2.0)))) * 2.0)) - (data[\"Seed_diff\"]))) * 2.0)) - (data[\"Seed_diff\"]))) * 2.0)) * 2.0)) +\n                    0.100000*np.tanh(((data[\"Seed_diff\"]) * (((data[\"ScoreT_diff\"]) + ((((((data[\"Seed2\"]) <= (np.cos((((data[\"Seed1\"]) * 2.0)))))*1.)) - ((((3.0)) * 2.0)))))))) +\n                    0.100000*np.tanh(((((((((((((data[\"Seed_diff\"]) * (((((-1.411442))) * 2.0)))) * 2.0)) - (((np.sin((data[\"ScoreT_diff\"]))) * 2.0)))) * 2.0)) * 2.0)) - (np.sin((data[\"Seed_diff\"]))))) +\n                    0.100000*np.tanh((((((((((0.501484))) + (data[\"Seed_diff\"]))/2.0)) + ((((-((((data[\"Seed_diff\"]) - ((((((0.411693))) + (data[\"ScoreT_diff\"]))/2.0))))))) * ((12.19133663177490234)))))) * ((10.94865894317626953)))) +\n                    0.100000*np.tanh(((((((((((((data[\"ScoreT_diff\"]) - ((((np.cos((data[\"Seed2\"]))) > (data[\"Seed2\"]))*1.)))) - (data[\"Seed_diff\"]))) * 2.0)) - (data[\"Seed_diff\"]))) * 2.0)) - (data[\"Seed1\"]))))\ndef GPIII(data):\n    return Output(  0.100000*np.tanh(((((((((np.where(data[\"Seed2\"] <= (-((data[\"Seed_diff\"]))), ((((-1.411442))) - ((2.0))), 0 )) * (((data[\"Seed_diff\"]) * 2.0)))) - (data[\"Seed_diff\"]))) * 2.0)) * 2.0)) +\n                    0.100000*np.tanh(((np.sin((np.minimum(((data[\"ScoreT2\"])), ((((data[\"Seed2\"]) - (data[\"Seed_diff\"])))))))) + (((((((data[\"Seed1\"]) - ((11.37786579132080078)))) - ((11.37786579132080078)))) * (data[\"Seed_diff\"]))))) +\n                    0.100000*np.tanh(((data[\"Seed_diff\"]) * (((((-(((13.00282287597656250))))) + (((((((((np.cos((((data[\"Seed1\"]) * 2.0)))) * 2.0)) * 2.0)) * 2.0)) + (((data[\"ScoreT1\"]) * 2.0)))))/2.0)))) +\n                    0.100000*np.tanh((((((((((((-((data[\"Seed_diff\"])))) - (data[\"Seed_diff\"]))) + (np.tanh(((((data[\"Seed2\"]) <= (data[\"Seed_diff\"]))*1.)))))) + (data[\"ScoreT_diff\"]))) * 2.0)) * 2.0)) +\n                    0.100000*np.tanh((((((((((((((((((((((-3.0)) * (data[\"Seed_diff\"]))) + (data[\"ScoreT_diff\"]))) + (((-1.435063))))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)))\ndef GPIV(data):\n    return Output(  0.100000*np.tanh((((((-3.0)) * ((((9.0)) + (data[\"ScoreT1\"]))))) * (np.minimum(((data[\"Seed_diff\"])), (((((data[\"ScoreT1\"]) <= ((((5.0)) + (((-1.221382))))))*1.))))))) +\n                    0.100000*np.tanh(((((((data[\"ScoreT_diff\"]) * (data[\"ScoreT_diff\"]))) * (data[\"ScoreT_diff\"]))) - (((data[\"Seed_diff\"]) * ((4.93693542480468750)))))) +\n                    0.100000*np.tanh(((((((((((((((((data[\"ScoreT_diff\"]) - (((data[\"Seed_diff\"]) * 2.0)))) * 2.0)) * 2.0)) - (data[\"Seed_diff\"]))) * 2.0)) * (data[\"Seed_diff\"]))) * (data[\"Seed_diff\"]))) * 2.0)) +\n                    0.100000*np.tanh(((((((np.minimum(((data[\"Seed2\"])), (((((((-((data[\"Seed_diff\"])))) * 2.0)) * (data[\"Seed_diff\"])))))) * (((((data[\"Seed_diff\"]) * 2.0)) * 2.0)))) * 2.0)) * 2.0)) +\n                    0.100000*np.tanh((((((((data[\"Seed_diff\"]) * 2.0)) > ((((data[\"ScoreT1\"]) + (((((data[\"Seed_diff\"]) * 2.0)) * (data[\"ScoreT1\"]))))/2.0)))*1.)) - (((((data[\"Seed_diff\"]) * 2.0)) * 2.0)))))\ndef GPV(data):\n    return Output(  0.100000*np.tanh(((((((((data[\"ScoreT_diff\"]) + (np.tanh(((((-3.0)) * (((((((((data[\"Seed_diff\"]) * 2.0)) * 2.0)) * 2.0)) * 2.0)))))))) - (data[\"Seed_diff\"]))) * 2.0)) * 2.0)) +\n                    0.100000*np.tanh((((((((-3.0)) * (np.cos(((((-3.0)) - (data[\"Seed1\"]))))))) - ((((-3.0)) * (((((data[\"Seed_diff\"]) * ((-3.0)))) * 2.0)))))) * 2.0)) +\n                    0.100000*np.tanh(((((((((((((((((((((data[\"ScoreT_diff\"]) / 2.0)) - (data[\"Seed_diff\"]))) + (((-0.152974))))) * 2.0)) * 2.0)) + (((-0.152974))))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +\n                    0.100000*np.tanh(((((data[\"Seed_diff\"]) * ((((-2.0)) - (np.sin(((((((-3.0)) - (((((data[\"Seed2\"]) * ((-3.0)))) * 2.0)))) / 2.0)))))))) * 2.0)) +\n                    0.100000*np.tanh((((((((((((-2.0)) * (data[\"Seed_diff\"]))) + (data[\"ScoreT_diff\"]))) + ((((((data[\"Seed2\"]) - (data[\"Seed_diff\"]))) <= (data[\"ScoreT_diff\"]))*1.)))) * 2.0)) * 2.0)))\ndef GPVI(data):\n    return Output(  0.100000*np.tanh(np.real(((np.where(np.abs(((((data[\"Seed2\"]) - (data[\"Seed1\"]))) * (complex(14.38402175903320312)))) >= np.abs(((((data[\"ScoreT1\"]) + (data[\"ScoreT_diff\"]))) + (data[\"Seed1\"]))),((((data[\"Seed2\"]) - (data[\"Seed1\"]))) * (complex(14.38402175903320312))), ((((data[\"ScoreT1\"]) + (data[\"ScoreT_diff\"]))) + (data[\"Seed1\"])) )) * 2.0))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(((data[\"ScoreT_diff\"]) - (((complex(-3.0)) * (data[\"Seed_diff\"]))))) >= np.abs(((complex(3.0)) * (((complex(-3.0)) * (data[\"Seed_diff\"]))))),((data[\"ScoreT_diff\"]) - (((complex(-3.0)) * (data[\"Seed_diff\"])))), ((complex(3.0)) * (((complex(-3.0)) * (data[\"Seed_diff\"])))) ))) +\n                    0.100000*np.tanh(np.real((((((((((((((-((((data[\"Seed_diff\"]) + (((((((complex(0.026572)) * 2.0)) * 2.0)) / (data[\"Seed2\"])))))))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0))) +\n                    0.100000*np.tanh(np.real(((((np.where(np.abs(data[\"ScoreT_diff\"]) <= np.abs(((complex(7.0)) * (np.sin((data[\"Seed_diff\"]))))),data[\"ScoreT_diff\"], ((complex(7.0)) * (np.sin((data[\"Seed_diff\"])))) )) - (np.sinh((data[\"Seed_diff\"]))))) - (np.sinh((np.sinh((np.sinh((data[\"Seed_diff\"])))))))))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(((data[\"Seed_diff\"]) - (np.where(np.abs(complex(-0.665339)) > np.abs(data[\"ScoreT2\"]),complex(1.), complex(0.) )))) >= np.abs(((np.where(np.abs(data[\"Seed2\"]) >= np.abs((((-((data[\"Seed_diff\"])))) - (data[\"Seed1\"]))),data[\"Seed2\"], (((-((data[\"Seed_diff\"])))) - (data[\"Seed1\"])) )) - (data[\"Seed_diff\"]))),((data[\"Seed_diff\"]) - (np.where(np.abs(complex(-0.665339)) > np.abs(data[\"ScoreT2\"]),complex(1.), complex(0.) ))), ((np.where(np.abs(data[\"Seed2\"]) >= np.abs((((-((data[\"Seed_diff\"])))) - (data[\"Seed1\"]))),data[\"Seed2\"], (((-((data[\"Seed_diff\"])))) - (data[\"Seed1\"])) )) - (data[\"Seed_diff\"])) ))))\n\ndef GPVII(data):\n    return Output(  0.100000*np.tanh(np.real(((((((((((((np.where(np.abs(data[\"ScoreT_diff\"]) > np.abs(complex(-0.665339)), data[\"ScoreT_diff\"], complex(0.) )) - (data[\"Seed_diff\"]))) * 2.0)) - (data[\"ScoreT_diff\"]))) - (data[\"Seed_diff\"]))) * 2.0)) * (complex(7.19583606719970703))))) +\n                    0.100000*np.tanh(np.real(((data[\"Seed_diff\"]) * (((((-((((np.where(np.abs(complex(-1.411442)) <= np.abs(data[\"ScoreT2\"]), np.cosh((complex(7.86849117279052734))), complex(0.) )) + (np.cosh((complex(-3.0))))))))) + (data[\"ScoreT2\"]))/2.0))))) +\n                    0.100000*np.tanh(np.real((((-((np.sinh((data[\"Seed2\"])))))) + ((((((((-((data[\"Seed1\"])))) + (np.sinh((np.sinh((data[\"Seed2\"]))))))) * 2.0)) + (data[\"ScoreT_diff\"])))))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(((data[\"Seed_diff\"]) * 2.0)) > np.abs(complex(-0.361695)), ((complex(0.411693)) + (((((((data[\"ScoreT_diff\"]) + ((((-((data[\"Seed_diff\"])))) * 2.0)))) * 2.0)) * 2.0))), complex(0.) ))) +\n                    0.100000*np.tanh(np.real(((np.where(np.abs(((complex(0.355140)) * (np.sinh((data[\"ScoreT_diff\"]))))) >= np.abs(np.where(np.abs((((-((data[\"Seed1\"])))) * 2.0)) >= np.abs(np.sinh((data[\"Seed2\"]))),(((-((data[\"Seed1\"])))) * 2.0), np.sinh((data[\"Seed2\"])) )),((complex(0.355140)) * (np.sinh((data[\"ScoreT_diff\"])))), np.where(np.abs((((-((data[\"Seed1\"])))) * 2.0)) >= np.abs(np.sinh((data[\"Seed2\"]))),(((-((data[\"Seed1\"])))) * 2.0), np.sinh((data[\"Seed2\"])) ) )) - (data[\"Seed_diff\"])))))\n\ndef GPVIII(data):\n    return Output(  0.100000*np.tanh(np.real(((np.where(np.abs(((np.where(np.abs(((complex(0,1)*np.conjugate(data[\"Seed_diff\"])) * (complex(0,1)*np.conjugate(complex(14.20872020721435547))))) >= np.abs(np.sinh((data[\"ScoreT_diff\"]))),((complex(0,1)*np.conjugate(data[\"Seed_diff\"])) * (complex(0,1)*np.conjugate(complex(14.20872020721435547)))), np.sinh((data[\"ScoreT_diff\"])) )) * 2.0)) >= np.abs(np.sinh((complex(0,1)*np.conjugate(complex(14.20872020721435547))))),((np.where(np.abs(((complex(0,1)*np.conjugate(data[\"Seed_diff\"])) * (complex(0,1)*np.conjugate(complex(14.20872020721435547))))) >= np.abs(np.sinh((data[\"ScoreT_diff\"]))),((complex(0,1)*np.conjugate(data[\"Seed_diff\"])) * (complex(0,1)*np.conjugate(complex(14.20872020721435547)))), np.sinh((data[\"ScoreT_diff\"])) )) * 2.0), np.sinh((complex(0,1)*np.conjugate(complex(14.20872020721435547)))) )) * 2.0))) +\n                    0.100000*np.tanh(np.real(((((((np.where(np.abs(((((((data[\"ScoreT_diff\"]) - (data[\"Seed_diff\"]))) - (data[\"Seed_diff\"]))) * 2.0)) >= np.abs((((-((complex(0.355140))))) / (data[\"Seed_diff\"]))),((((((data[\"ScoreT_diff\"]) - (data[\"Seed_diff\"]))) - (data[\"Seed_diff\"]))) * 2.0), (((-((complex(0.355140))))) / (data[\"Seed_diff\"])) )) * 2.0)) * 2.0)) * 2.0))) +\n                    0.100000*np.tanh(np.real(((((data[\"Seed_diff\"]) - (((np.where(np.abs(data[\"ScoreT2\"]) <= np.abs(data[\"Seed2\"]),complex(1.), complex(0.) )) + (np.where(np.abs(data[\"ScoreT2\"]) <= np.abs(data[\"ScoreT1\"]),complex(1.), complex(0.) )))))) - (((complex(9.63826560974121094)) * (data[\"Seed_diff\"])))))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs((((-((data[\"Seed_diff\"])))) * (np.cosh((((data[\"Seed2\"]) * (complex(8.06685638427734375)))))))) >= np.abs(np.cos((np.cosh((((data[\"Seed2\"]) * (complex(8.06685638427734375)))))))),(((-((data[\"Seed_diff\"])))) * (np.cosh((((data[\"Seed2\"]) * (complex(8.06685638427734375))))))), np.cos((np.cosh((((data[\"Seed2\"]) * (complex(8.06685638427734375))))))) ))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(complex(-1.435063)) <= np.abs(((data[\"Seed_diff\"]) * (((complex(-3.0)) * 2.0)))), ((((((((data[\"ScoreT_diff\"]) - (np.sinh((data[\"Seed_diff\"]))))) * 2.0)) * 2.0)) - (data[\"Seed_diff\"])), complex(0.) ))))\n\ndef GPIX(data):\n    return Output(  0.100000*np.tanh(np.real(((np.where(np.abs(((np.where(np.abs(np.where(np.abs(np.sqrt((complex(-3.0)))) > np.abs(complex(0.0)),complex(1.), complex(0.) )) > np.abs(data[\"ScoreT1\"]),complex(1.), complex(0.) )) / (data[\"Seed1\"]))) >= np.abs(((np.sinh((complex(-3.0)))) * (data[\"Seed_diff\"]))),((np.where(np.abs(np.where(np.abs(np.sqrt((complex(-3.0)))) > np.abs(complex(0.0)),complex(1.), complex(0.) )) > np.abs(data[\"ScoreT1\"]),complex(1.), complex(0.) )) / (data[\"Seed1\"])), ((np.sinh((complex(-3.0)))) * (data[\"Seed_diff\"])) )) * 2.0))) +\n                    0.100000*np.tanh(np.real(((((((((((((np.where(np.abs(np.tanh((data[\"Seed1\"]))) <= np.abs(data[\"Seed_diff\"]), data[\"ScoreT_diff\"], complex(0.) )) - (((data[\"Seed_diff\"]) * 2.0)))) * 2.0)) * 2.0)) * 2.0)) - (data[\"Seed1\"]))) * 2.0))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(((data[\"ScoreT_diff\"]) / (complex(-0.452108)))) >= np.abs(np.sinh((np.where(np.abs(np.where(np.abs(((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108)))) >= np.abs(np.sinh((data[\"ScoreT_diff\"]))),((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108))), np.sinh((data[\"ScoreT_diff\"])) )) >= np.abs(complex(-0.452108)),np.where(np.abs(((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108)))) >= np.abs(np.sinh((data[\"ScoreT_diff\"]))),((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108))), np.sinh((data[\"ScoreT_diff\"])) ), complex(-0.452108) )))),((data[\"ScoreT_diff\"]) / (complex(-0.452108))), np.sinh((np.where(np.abs(np.where(np.abs(((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108)))) >= np.abs(np.sinh((data[\"ScoreT_diff\"]))),((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108))), np.sinh((data[\"ScoreT_diff\"])) )) >= np.abs(complex(-0.452108)),np.where(np.abs(((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108)))) >= np.abs(np.sinh((data[\"ScoreT_diff\"]))),((((data[\"Seed_diff\"]) * 2.0)) / (complex(-0.452108))), np.sinh((data[\"ScoreT_diff\"])) ), complex(-0.452108) ))) ))) +\n                    0.100000*np.tanh(np.real(np.sinh((np.sinh((np.where(np.abs(((data[\"Seed_diff\"]) / (complex(-0.452108)))) >= np.abs(np.where(np.abs(complex(0,1)*np.conjugate(np.sin((np.cosh((data[\"ScoreT_diff\"])))))) >= np.abs(data[\"ScoreT_diff\"]),complex(0,1)*np.conjugate(np.sin((np.cosh((data[\"ScoreT_diff\"]))))), data[\"ScoreT_diff\"] )),((data[\"Seed_diff\"]) / (complex(-0.452108))), np.where(np.abs(complex(0,1)*np.conjugate(np.sin((np.cosh((data[\"ScoreT_diff\"])))))) >= np.abs(data[\"ScoreT_diff\"]),complex(0,1)*np.conjugate(np.sin((np.cosh((data[\"ScoreT_diff\"]))))), data[\"ScoreT_diff\"] ) ))))))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(np.where(np.abs(np.sinh((data[\"ScoreT_diff\"]))) >= np.abs(((complex(-3.0)) * (np.sinh((data[\"Seed_diff\"]))))),np.sinh((data[\"ScoreT_diff\"])), ((complex(-3.0)) * (np.sinh((data[\"Seed_diff\"])))) )) >= np.abs(np.sqrt((complex(-3.0)))),np.where(np.abs(np.sinh((data[\"ScoreT_diff\"]))) >= np.abs(((complex(-3.0)) * (np.sinh((data[\"Seed_diff\"]))))),np.sinh((data[\"ScoreT_diff\"])), ((complex(-3.0)) * (np.sinh((data[\"Seed_diff\"])))) ), np.sqrt((complex(-3.0))) ))))\n\ndef GPX(data):\n    return Output(  0.100000*np.tanh(np.real(((((data[\"Seed_diff\"]) / (np.where(np.abs(np.where(np.abs(complex(-0.079116)) <= np.abs(((data[\"Seed_diff\"]) / (np.sinh((complex(0.499892)))))),complex(-0.079116), ((data[\"Seed_diff\"]) / (np.sinh((complex(0.499892))))) )) <= np.abs(((data[\"Seed_diff\"]) / (np.sinh((data[\"ScoreT_diff\"]))))),np.where(np.abs(complex(-0.079116)) <= np.abs(((data[\"Seed_diff\"]) / (np.sinh((complex(0.499892)))))),complex(-0.079116), ((data[\"Seed_diff\"]) / (np.sinh((complex(0.499892))))) ), ((data[\"Seed_diff\"]) / (np.sinh((data[\"ScoreT_diff\"])))) )))) * 2.0))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(((((data[\"Seed_diff\"]) * (((((complex(-3.0)) - (complex(1.368404)))) + (np.where(np.abs(data[\"Seed_diff\"]) <= np.abs(complex(-0.513372)), complex(1.368404), complex(0.) )))))) + (data[\"ScoreT_diff\"]))) >= np.abs(data[\"ScoreT_diff\"]),((((data[\"Seed_diff\"]) * (((((complex(-3.0)) - (complex(1.368404)))) + (np.where(np.abs(data[\"Seed_diff\"]) <= np.abs(complex(-0.513372)), complex(1.368404), complex(0.) )))))) + (data[\"ScoreT_diff\"])), data[\"ScoreT_diff\"] ))) +\n                    0.100000*np.tanh(np.real(((((np.where(np.abs(np.where(np.abs(data[\"Seed2\"]) >= np.abs(data[\"ScoreT_diff\"]),data[\"Seed2\"], data[\"ScoreT_diff\"] )) >= np.abs(((((data[\"Seed_diff\"]) / (complex(-0.260113)))) - (((np.tanh((data[\"Seed2\"]))) - (data[\"ScoreT_diff\"]))))),np.where(np.abs(data[\"Seed2\"]) >= np.abs(data[\"ScoreT_diff\"]),data[\"Seed2\"], data[\"ScoreT_diff\"] ), ((((data[\"Seed_diff\"]) / (complex(-0.260113)))) - (((np.tanh((data[\"Seed2\"]))) - (data[\"ScoreT_diff\"])))) )) * 2.0)) * 2.0))) +\n                    0.100000*np.tanh(np.real(np.where(np.abs(data[\"Seed_diff\"]) >= np.abs(((np.where(np.abs(np.sinh((((complex(-2.0)) * (((complex(-3.0)) * (data[\"Seed_diff\"]))))))) <= np.abs(data[\"ScoreT_diff\"]),np.sinh((((complex(-2.0)) * (((complex(-3.0)) * (data[\"Seed_diff\"])))))), data[\"ScoreT_diff\"] )) + (((complex(-3.0)) * (data[\"Seed_diff\"]))))),data[\"Seed_diff\"], ((np.where(np.abs(np.sinh((((complex(-2.0)) * (((complex(-3.0)) * (data[\"Seed_diff\"]))))))) <= np.abs(data[\"ScoreT_diff\"]),np.sinh((((complex(-2.0)) * (((complex(-3.0)) * (data[\"Seed_diff\"])))))), data[\"ScoreT_diff\"] )) + (((complex(-3.0)) * (data[\"Seed_diff\"])))) ))) +\n                    0.100000*np.tanh(np.real(np.sinh((((data[\"Seed_diff\"]) * (((((np.cos((((((np.cosh((np.cos((data[\"Seed2\"]))))) - (complex(4.0)))) * (data[\"Seed2\"]))))) * 2.0)) - (complex(4.0))))))))))\n\ndef GP(data):\n    return (GPI(data)+GPII(data)+GPIII(data)+GPIV(data)+GPV(data)+\n            GPVI(data.astype(complex))+GPVII(data.astype(complex))+\n            GPVIII(data.astype(complex))+GPIX(data.astype(complex))+\n            GPX(data.astype(complex)))/10","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"log_loss(y,GP(X))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Predict & Make Submission File"},{"metadata":{"trusted":true},"cell_type":"code","source":"submission_df = pd.read_csv(directory+'MSampleSubmissionStage1_2020.csv')\nsubmission_df['Pred'] = GP(test_df).values\nsubmission_df.to_csv('submission.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.3"}},"nbformat":4,"nbformat_minor":1}