{"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":"# Import Libraries","metadata":{}},{"cell_type":"code","source":"import gc\nimport os\nimport joblib\nimport numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import KFold\nfrom lightgbm import LGBMClassifier, early_stopping, log_evaluation","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-10-10T20:44:42.220789Z","iopub.execute_input":"2022-10-10T20:44:42.221484Z","iopub.status.idle":"2022-10-10T20:44:51.649295Z","shell.execute_reply.started":"2022-10-10T20:44:42.221435Z","shell.execute_reply":"2022-10-10T20:44:51.647992Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load Train data\nThe train and Test data were generated in this [notebook](https://www.kaggle.com/code/ahmedelfazouan/g2net-prepare-features).","metadata":{}},{"cell_type":"code","source":"train = [pd.read_csv(f'../input/g2net-prepare-features/train{i}.csv') for i in range(1,8)]\ntrain = pd.concat(train)\ntrain = train[train['target']!=-1]\ntrain.reset_index(inplace = True, drop = True)\nFEATURES = [i for i in train.columns if i not in ['id', 'target']]\ntrain[FEATURES] = train[FEATURES].astype(np.float32)\ngc.collect()\nprint('Train shape', train.shape)\ndisplay(train.head())","metadata":{"execution":{"iopub.status.busy":"2022-10-10T20:49:07.436767Z","iopub.execute_input":"2022-10-10T20:49:07.438763Z","iopub.status.idle":"2022-10-10T20:49:07.447335Z","shell.execute_reply.started":"2022-10-10T20:49:07.438681Z","shell.execute_reply":"2022-10-10T20:49:07.445687Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load Test data","metadata":{}},{"cell_type":"code","source":"test = [pd.read_csv(f'../input/g2net-prepare-features/test{i}.csv') for i in range(1,81)]\ntest = pd.concat(test)\ntest.reset_index(inplace = True, drop = True)\ntest_indexs = test['id'].tolist()\ntest = test[FEATURES].astype(np.float32)\ngc.collect()\nprint('Test shape', test.shape)\ndisplay(test.head())","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Train & Infer LGBM model","metadata":{}},{"cell_type":"code","source":"model_name = 'LGBM'\n\nFEATURES = [i for i in train.columns if i not in ['id', 'target']]\nskf = KFold(n_splits = 5, shuffle = True, random_state = 42)\noof = np.zeros((len(train),))\npredictions = []\nfor fold,(train_idx, valid_idx) in enumerate(skf.split(train, train['target'] )):\n    X_train = train.loc[train_idx, FEATURES]\n    y_train = train.loc[train_idx, 'target']\n    X_val = train.loc[valid_idx, FEATURES]\n    y_val = train.loc[valid_idx, 'target']\n    model = LGBMClassifier(n_estimators = 50000, learning_rate = 0.01, \n                           max_depth = 2, lambda_l1 = 2, lambda_l2 = 2)\n    model.fit(X_train,y_train,eval_set=[(X_val,y_val)],callbacks = [early_stopping(50), log_evaluation(500)])\n    joblib.dump(model,model_name+'_'+str(fold)+'.pkl')\n    oof[valid_idx] = [i[1] for i in model.predict_proba(X_val)]\n    predictions.append([i[1] for i in model.predict_proba(test)])\n    del model\n    gc.collect()\npredictions = np.average(predictions, axis = 0)\nnp.save('oof.npy',oof)","metadata":{"execution":{"iopub.status.busy":"2022-10-10T21:02:01.557616Z","iopub.execute_input":"2022-10-10T21:02:01.558176Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Submission","metadata":{}},{"cell_type":"code","source":"sub = pd.DataFrame(list(zip(test_indexs, predictions)), columns = ['id','target'])\nsub = sub.groupby('id').mean().reset_index()\nsub.to_csv('submission.csv', index = False)\nsub.head()","metadata":{},"execution_count":null,"outputs":[]}]}