{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"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 in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.linear_model import LogisticRegression\nimport matplotlib.pyplot as plt\nfrom sklearn.utils import shuffle\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.model_selection import KFold\nimport lightgbm as lgb\nimport xgboost as xgb\nfrom xgboost import XGBClassifier\nimport gc\nimport matplotlib.pyplot as plt\nfrom sklearn import preprocessing\nimport pymc3 as pm\nimport matplotlib.pyplot as plt\nimport seaborn as sns","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Loading Data **"},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Compact_Results  = pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WDataFiles_Stage1/WNCAATourneyCompactResults.csv')\nTourney_Seeds = pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WDataFiles_Stage1/WNCAATourneySeeds.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"RegularSeason_Compact_Results = pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WDataFiles_Stage1/WRegularSeasonCompactResults.csv')\n\nMSeasons = pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WDataFiles_Stage1/WSeasons.csv')\nMTeams=pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WDataFiles_Stage1/WTeams.csv')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Merging Data frame for Seed and Tourney result**"},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Results_Compact=pd.merge(Tourney_Compact_Results, Tourney_Seeds, left_on=['Season', 'WTeamID'], right_on=['Season', 'TeamID'], how='left')\nTourney_Results_Compact.rename(columns={'Seed':'WinningSeed'},inplace=True)\nTourney_Results_Compact=Tourney_Results_Compact.drop(['TeamID'],axis=1)\n\nTourney_Results_Compact = pd.merge(Tourney_Results_Compact, Tourney_Seeds, left_on=['Season', 'LTeamID'], right_on=['Season', 'TeamID'], how='left')\nTourney_Results_Compact.rename(columns={'Seed':'LoosingSeed'}, inplace=True)\nTourney_Results_Compact=Tourney_Results_Compact.drop(['TeamID','NumOT','WLoc'],axis=1)\n\n\nTourney_Results_Compact","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Compact_Results.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**We have achieve the results for Winning Seed Team. Let us rename some columns and also get the Seed for Loosing Team**"},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Results_Compact=Tourney_Results_Compact.drop(['WScore','LScore'],axis=1)\nTourney_Results_Compact.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Results_Compact['WinningSeed'] = Tourney_Results_Compact['WinningSeed'].str.extract('(\\d+)', expand=True)\nTourney_Results_Compact['LoosingSeed'] = Tourney_Results_Compact['LoosingSeed'].str.extract('(\\d+)', expand=True)\nTourney_Results_Compact.WinningSeed = pd.to_numeric(Tourney_Results_Compact.WinningSeed, errors='coerce')\nTourney_Results_Compact.LoosingSeed = pd.to_numeric(Tourney_Results_Compact.LoosingSeed, errors='coerce')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"season_winning_team = RegularSeason_Compact_Results[['Season', 'WTeamID', 'WScore']]\nseason_losing_team = RegularSeason_Compact_Results[['Season', 'LTeamID', 'LScore']]\nseason_winning_team.rename(columns={'WTeamID':'TeamID','WScore':'Score'}, inplace=True)\nseason_losing_team.rename(columns={'LTeamID':'TeamID','LScore':'Score'}, inplace=True)\nRegularSeason_Compact_Results = pd.concat((season_winning_team, season_losing_team)).reset_index(drop=True)\nRegularSeason_Compact_Results","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"RegularSeason_Compact_Results_Final = RegularSeason_Compact_Results.groupby(['Season', 'TeamID'])['Score'].sum().reset_index()\nRegularSeason_Compact_Results_Final","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Results_Compact = pd.merge(Tourney_Results_Compact, RegularSeason_Compact_Results_Final, left_on=['Season', 'WTeamID'], right_on=['Season', 'TeamID'], how='left')\nTourney_Results_Compact.rename(columns={'Score':'WScoreTotal'}, inplace=True)\nTourney_Results_Compact","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Results_Compact = Tourney_Results_Compact.drop('TeamID', axis=1)\nTourney_Results_Compact = pd.merge(Tourney_Results_Compact, RegularSeason_Compact_Results_Final, left_on=['Season', 'LTeamID'], right_on=['Season', 'TeamID'], how='left')\nTourney_Results_Compact.rename(columns={'Score':'LScoreTotal'}, inplace=True)\nTourney_Results_Compact = Tourney_Results_Compact.drop('TeamID', axis=1)\n#Tourney_Results_Compact.to_csv('Tourney_Win_Results_Train.csv', index=False)\nTourney_Results_Compact=Tourney_Results_Compact[Tourney_Results_Compact['Season'] < 2016] \nTourney_Results_Compact","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Win_Results=Tourney_Results_Compact.drop(['Season','WTeamID','LTeamID','DayNum'],axis=1)\nTourney_Win_Results","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Win_Results.rename(columns={'WinningSeed':'Seed1', 'LoosingSeed':'Seed2', 'WScoreTotal':'ScoreT1', 'LScoreTotal':'ScoreT2'}, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Win_Results","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_lose_result = Tourney_Win_Results.copy()\ntourney_lose_result['Seed1'] = Tourney_Win_Results['Seed2']\ntourney_lose_result['Seed2'] = Tourney_Win_Results['Seed1']\ntourney_lose_result['ScoreT1'] = Tourney_Win_Results['ScoreT2']\ntourney_lose_result['ScoreT2'] = Tourney_Win_Results['ScoreT1']\ntourney_lose_result","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Training Data**"},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Win_Results['Seed_diff'] = Tourney_Win_Results['Seed1'] - Tourney_Win_Results['Seed2']\nTourney_Win_Results['ScoreT_diff'] = Tourney_Win_Results['ScoreT1'] - Tourney_Win_Results['ScoreT2']\n#Tourney_Win_Results['Score_diff'] = Tourney_Win_Results['Score1'] - Tourney_Win_Results['Score2']\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_Results['result'] = 1\ntourney_lose_result['result'] = 0\ntourney_result_Final = pd.concat((Tourney_Win_Results, tourney_lose_result)).reset_index(drop=True)\n\ntourney_result_Final.to_csv('Tourneyvalidate.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_result_Final1 = tourney_result_Final[[\n    'Seed1', 'Seed2', 'ScoreT1', 'ScoreT2', 'Seed_diff', 'ScoreT_diff', 'result']]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tourney_result_Final1.loc[lambda x: (x['Seed1'].isin([14,15,16])) & (x['Seed2'].isin([1,2,3])),'result'\n        ] = 0\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df = pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WSampleSubmissionStage1_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]))\ntest_df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Tourney_Seeds.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df = pd.merge(test_df, Tourney_Seeds, 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_Seeds, 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)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df = pd.merge(test_df, RegularSeason_Compact_Results_Final, 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, RegularSeason_Compact_Results_Final, 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)\ntest_df\ntest_df.to_csv('test_df_Test.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df['Seed1'] = test_df['Seed1'].str.extract('(\\d+)', expand=True)\ntest_df['Seed2'] = test_df['Seed2'].str.extract('(\\d+)', expand=True)\ntest_df.Seed1 = pd.to_numeric(test_df.Seed1, errors='coerce')\ntest_df.Seed2 = pd.to_numeric(test_df.Seed2, errors='coerce')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_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)\ntest_df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = tourney_result_Final1.drop('result', axis=1)\ny = tourney_result_Final1.result","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Standardization for regression models\ndf = pd.concat([X, test_df], axis=0, sort=False).reset_index(drop=True)\ndf_log = pd.DataFrame(\n    preprocessing.MinMaxScaler().fit_transform(df),\n    columns=df.columns,\n    index=df.index\n)\ntrain_log, test_log = df_log.iloc[:len(X),:], df_log.iloc[len(X):,:].reset_index(drop=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"logreg = LogisticRegression()\nlogreg.fit(train_log, y)\ncoeff_logreg = pd.DataFrame(train_log.columns.delete(0))\ncoeff_logreg.columns = ['feature']\ncoeff_logreg[\"score_logreg\"] = pd.Series(logreg.coef_[0])\ncoeff_logreg.sort_values(by='score_logreg', ascending=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_logreg_train = logreg.predict(train_log)\ny_logreg_pred = logreg.predict_proba(test_log)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier\nclf = RandomForestClassifier(n_estimators=200,max_depth=50)\n#clf = RandomForestClassifier(n_estimators=200,max_depth=90,min_samples_leaf=300,min_samples_split=200,max_features=5)\n#We can get accuracy of 0.7145738779626828 using {'max_depth': 30, 'max_features': 5, 'min_samples_leaf': 300, 'min_samples_split': 300, 'n_estimators': 200}\n#clf.fit(X, y)\nclf.fit(train_log, y)\nclf_probs = clf.predict_proba(test_log)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred_df_random = pd.DataFrame(clf_probs)\ny_pred_1 = y_pred_df_random.iloc[:,[1]]\n#y_pred_1.head()\ny_pred_df_random","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission_df = pd.read_csv('../input/google-cloud-ncaa-march-madness-2020-division-1-womens-tournament/WSampleSubmissionStage1_2020.csv')\nsubmission_df['Pred'] = y_pred_1\nsubmission_df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission_df.to_csv('submission_New8.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}