{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np \nimport pandas as pd\nfrom tqdm import tqdm\nfrom PIL import Image\nimport random\nimport os\nimport warnings\nwarnings.filterwarnings('ignore')\nimport lightgbm as lgb\nfrom sklearn.model_selection import GroupKFold, StratifiedKFold, KFold\nfrom sklearn import metrics\nfrom sklearn import preprocessing\nfrom bayes_opt import BayesianOptimization\nfrom catboost import CatBoostClassifier\nimport gc","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\ncsv1 = ['../input/melanoma-latest-oofs/exp38450_oof_16tta_92511.csv',\n        '../input/melanoma-latest-oofs/exp38450_oof_notta_92869.csv',\n        '../input/melanoma-latest-oofs/exp38450_oof_oldaug_3tta_91687.csv',\n        '../input/melanoma-latest-oofs/exp38470_oof_16tta_92401.csv',\n        '../input/melanoma-latest-oofs/exp38470_oof_notta_91759.csv',\n        '../input/melanoma-latest-oofs/exp38470_oof_oldaug_3tta_91198.csv',\n        '../input/melanoma-latest-oofs/exp3847_oof_16tta_92082.csv',\n        '../input/melanoma-latest-oofs/exp3847_oof_notta_90459.csv',\n        '../input/melanoma-latest-oofs/exp3847_oof_oldaug_3tta_90717.csv',\n        '../input/melanoma-latest-oofs/exp5123_new_oof_16tta_93036_580.csv',\n        '../input/melanoma-latest-oofs/exp5123_new_oof_notta_93222_580.csv',\n        '../input/melanoma-latest-oofs/exp5123_new_oof_22tta_92431.csv',\n        '../input/melanoma-latest-oofs/exp5123_new_oof_notta_92598.csv',\n        '../input/melanoma-latest-oofs/exp5123_new_oof_oldaug_3tta_90901.csv',\n        '../input/melanoma-latest-oofs/exp5123_oof_16tta_93063.csv',\n        '../input/melanoma-latest-oofs/exp5123_oof_notta_92904.csv',\n        '../input/melanoma-latest-oofs/exp5123_oof_oldaug_3tta_90996.csv',\n        '../input/melanoma-latest-oofs/exp51250_oof_16tta_92383.csv',\n        '../input/melanoma-latest-oofs/exp51250_oof_notta_92534.csv',\n        '../input/melanoma-latest-oofs/exp51250_oof_oldaug_3tta_91027.csv',\n        '../input/melanoma-latest-oofs/exp5125_oof_16tta_93209.csv',\n        '../input/melanoma-latest-oofs/exp5125_oof_notta_92885.csv',\n        '../input/melanoma-latest-oofs/exp5125_oof_oldaug_3tta_91750.csv',\n        '../input/melanoma-latest-oofs/exp51270_oof_16tta_92738.csv',\n        '../input/melanoma-latest-oofs/exp51270_oof_notta_92153.csv',\n        '../input/melanoma-latest-oofs/exp51270_oof_oldaug_3tta_90757.csv',\n        '../input/melanoma-latest-oofs/exp5127_oof_16tta_92403.csv',\n        '../input/melanoma-latest-oofs/exp5127_oof_notta_92489.csv',\n        '../input/melanoma-latest-oofs/exp5127_oof_oldaug_3tta_91805.csv',\n        '../input/melanoma-latest-oofs/exp512dpn131_oof_16tta_92108.csv',\n        '../input/melanoma-latest-oofs/exp512dpn131_oof_notta_92274.csv',\n        '../input/melanoma-latest-oofs/exp512dpn131_oof_oldaug_3tta_89954.csv',\n        '../input/melanoma-latest-oofs/exp512se50_oof_16tta_92062.csv',\n        '../input/melanoma-latest-oofs/exp512se50_oof_notta_92788.csv',\n        '../input/melanoma-latest-oofs/exp512se50_oof_oldaug_3tta_90352.csv',\n        '../input/melanoma-latest-oofs/exp512sk50_oof_16tta_91944.csv',\n        '../input/melanoma-latest-oofs/exp512sk50_oof_notta_91991.csv',\n        '../input/melanoma-latest-oofs/exp512sk50_oof_oldaug_3tta_90370.csv',\n        '../input/melanoma-latest-oofs/exp7680_oof_oldaug_3tta_91116.csv',\n        '../input/melanoma-latest-oofs/exp7683_oof_16tta_92352.csv',\n        '../input/melanoma-latest-oofs/exp7683_oof_notta_92670.csv',\n        '../input/melanoma-latest-oofs/exp7683_oof_oldaug_3tta_92054.csv']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"subs = []\nfor index, path in enumerate(csv1):\n    df = pd.read_csv(path)\n    df.columns = ['image_name', f'preds{index}']\n    subs.append(df)\ntrain_oof = subs[0]\n\nfor sub_index in range(1, len(subs)):\n    train_oof = train_oof.merge(subs[sub_index], on='image_name')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_oof.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_oof.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"csv = [\n    \n    \n '../input/melanoma-latest-subs/38450_submission_1_16tta.csv', #0.9251\n '../input/melanoma-latest-subs/38450_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/38450_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/38450_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/38450_submission_5_16tta.csv',\n    \n        \n '../input/melanoma-latest-subs/38450_submission_1_notta.csv', #0.9286\n '../input/melanoma-latest-subs/38450_submission_2_notta.csv',\n '../input/melanoma-latest-subs/38450_submission_3_notta.csv',\n '../input/melanoma-latest-subs/38450_submission_4_notta.csv',\n '../input/melanoma-latest-subs/38450_submission_5_notta.csv',\n    \n '../input/melanoma-latest-subs/38450_oldaug_submission_1_3tta.csv', # 0.9168\n '../input/melanoma-latest-subs/38450_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/38450_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/38450_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/38450_oldaug_submission_5_3tta.csv',\n    \n '../input/melanoma-latest-subs/38470_submission_1_16tta.csv', # 0.9240\n '../input/melanoma-latest-subs/38470_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/38470_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/38470_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/38470_submission_5_16tta.csv',\n    \n '../input/melanoma-latest-subs/38470_submission_1_notta.csv', # 9175\n '../input/melanoma-latest-subs/38470_submission_2_notta.csv',\n '../input/melanoma-latest-subs/38470_submission_3_notta.csv',\n '../input/melanoma-latest-subs/38470_submission_4_notta.csv',\n '../input/melanoma-latest-subs/38470_submission_5_notta.csv',   \n\n    \n    \n    \n '../input/melanoma-latest-subs/38470_oldaug_submission_1_3tta.csv', # 0.9119\n '../input/melanoma-latest-subs/38470_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/38470_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/38470_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/38470_oldaug_submission_5_3tta.csv',    \n    \n\n '../input/melanoma-latest-subs/3847_submission_1_16tta.csv', # 0.9208\n '../input/melanoma-latest-subs/3847_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/3847_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/3847_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/3847_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/3847_submission_1_notta.csv', # 9045\n '../input/melanoma-latest-subs/3847_submission_2_notta.csv',\n '../input/melanoma-latest-subs/3847_submission_3_notta.csv',\n '../input/melanoma-latest-subs/3847_submission_4_notta.csv',\n '../input/melanoma-latest-subs/3847_submission_5_notta.csv',    \n\n    \n '../input/melanoma-latest-subs/3847_oldaug_submission_1_3tta.csv', # 0.9071\n '../input/melanoma-latest-subs/3847_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/3847_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/3847_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/3847_oldaug_submission_5_3tta.csv',      \n    \n    \n '../input/melanoma-latest-subs/5123_new_submission_1_16tta_580.csv', # 0.930\n '../input/melanoma-latest-subs/5123_new_submission_2_16tta_580.csv',\n '../input/melanoma-latest-subs/5123_new_submission_3_16tta_580.csv',\n '../input/melanoma-latest-subs/5123_new_submission_4_16tta_580.csv',\n '../input/melanoma-latest-subs/5123_new_submission_5_16tta_580.csv',\n    \n    \n '../input/melanoma-latest-subs/5123_new_submission_1_notta_580.csv', # 0.932\n '../input/melanoma-latest-subs/5123_new_submission_2_notta_580.csv',\n '../input/melanoma-latest-subs/5123_new_submission_3_notta_580.csv',\n '../input/melanoma-latest-subs/5123_new_submission_4_notta_580.csv',\n '../input/melanoma-latest-subs/5123_new_submission_5_notta_580.csv',\n    \n    \n    \n    \n    \n    \n '../input/melanoma-latest-subs/5123_new_submission_1_22tta.csv', # 0.924\n '../input/melanoma-latest-subs/5123_new_submission_2_22tta.csv',\n '../input/melanoma-latest-subs/5123_new_submission_3_22tta.csv',\n '../input/melanoma-latest-subs/5123_new_submission_4_22tta.csv',\n '../input/melanoma-latest-subs/5123_new_submission_5_22tta.csv',\n    \n '../input/melanoma-latest-subs/5123_new_submission_1_notta.csv', # 925\n '../input/melanoma-latest-subs/5123_new_submission_2_notta.csv',\n '../input/melanoma-latest-subs/5123_new_submission_3_notta.csv',\n '../input/melanoma-latest-subs/5123_new_submission_4_notta.csv',\n '../input/melanoma-latest-subs/5123_new_submission_5_notta.csv', \n    \n    \n '../input/melanoma-latest-subs/5123_new_oldaug_submission_1_3tta.csv', # 0.909\n '../input/melanoma-latest-subs/5123_new_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/5123_new_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/5123_new_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/5123_new_oldaug_submission_5_3tta.csv', \n    \n    \n '../input/melanoma-latest-subs/5123_submission_1_16tta.csv', # 0.930\n '../input/melanoma-latest-subs/5123_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/5123_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/5123_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/5123_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/5123_submission_1_notta.csv', # 929\n '../input/melanoma-latest-subs/5123_submission_2_notta.csv',\n '../input/melanoma-latest-subs/5123_submission_3_notta.csv',\n '../input/melanoma-latest-subs/5123_submission_4_notta.csv',\n '../input/melanoma-latest-subs/5123_submission_5_notta.csv',    \n\n '../input/melanoma-latest-subs/5123_oldaug_submission_1_3tta.csv', # 0.909\n '../input/melanoma-latest-subs/5123_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/5123_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/5123_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/5123_oldaug_submission_5_3tta.csv', \n    \n    \n    \n '../input/melanoma-latest-subs/51250_submission_1_16tta.csv', # 0.923\n '../input/melanoma-latest-subs/51250_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/51250_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/51250_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/51250_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/51250_submission_1_notta.csv', # 925\n '../input/melanoma-latest-subs/51250_submission_2_notta.csv',\n '../input/melanoma-latest-subs/51250_submission_3_notta.csv',\n '../input/melanoma-latest-subs/51250_submission_4_notta.csv',\n '../input/melanoma-latest-subs/51250_submission_5_notta.csv',    \n\n '../input/melanoma-latest-subs/51250_oldaug_submission_1_3tta.csv', # 0.910\n '../input/melanoma-latest-subs/51250_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/51250_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/51250_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/51250_oldaug_submission_5_3tta.csv', \n    \n \n '../input/melanoma-latest-subs/5125_submission_1_16tta.csv', # 0.932\n '../input/melanoma-latest-subs/5125_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/5125_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/5125_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/5125_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/5125_submission_1_notta.csv', # 928\n '../input/melanoma-latest-subs/5125_submission_2_notta.csv',\n '../input/melanoma-latest-subs/5125_submission_3_notta.csv',\n '../input/melanoma-latest-subs/5125_submission_4_notta.csv',\n '../input/melanoma-latest-subs/5125_submission_5_notta.csv',    \n\n '../input/melanoma-latest-subs/5125_oldaug_submission_1_3tta.csv', # 0.917\n '../input/melanoma-latest-subs/5125_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/5125_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/5125_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/5125_oldaug_submission_5_3tta.csv', \n    \n\n    \n    \n '../input/melanoma-latest-subs/51270_submission_1_16tta.csv', # 0.927\n '../input/melanoma-latest-subs/51270_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/51270_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/51270_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/51270_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/51270_submission_1_notta.csv', # .921\n '../input/melanoma-latest-subs/51270_submission_2_notta.csv',\n '../input/melanoma-latest-subs/51270_submission_3_notta.csv',\n '../input/melanoma-latest-subs/51270_submission_4_notta.csv',\n '../input/melanoma-latest-subs/51270_submission_5_notta.csv',    \n\n '../input/melanoma-latest-subs/51270_oldaug_submission_1_3tta.csv', # 0.907\n '../input/melanoma-latest-subs/51270_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/51270_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/51270_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/51270_oldaug_submission_5_3tta.csv', \n    \n    \n '../input/melanoma-latest-subs/5127_submission_1_16tta.csv', # 0.924\n '../input/melanoma-latest-subs/5127_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/5127_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/5127_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/5127_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/5127_submission_1_notta.csv', # 924\n '../input/melanoma-latest-subs/5127_submission_2_notta.csv',\n '../input/melanoma-latest-subs/5127_submission_3_notta.csv',\n '../input/melanoma-latest-subs/5127_submission_4_notta.csv',\n '../input/melanoma-latest-subs/5127_submission_5_notta.csv',    \n\n '../input/melanoma-latest-subs/5127_oldaug_submission_1_3tta.csv', # 0.918\n '../input/melanoma-latest-subs/5127_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/5127_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/5127_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/5127_oldaug_submission_5_3tta.csv', \n    \n    \n    \n    \n '../input/melanoma-latest-subs/512dpn131_submission_1_16tta.csv', # 0.921\n '../input/melanoma-latest-subs/512dpn131_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/512dpn131_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/512dpn131_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/512dpn131_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/512dpn131_submission_1_notta.csv', # 922\n '../input/melanoma-latest-subs/512dpn131_submission_2_notta.csv',\n '../input/melanoma-latest-subs/512dpn131_submission_3_notta.csv',\n '../input/melanoma-latest-subs/512dpn131_submission_4_notta.csv',\n '../input/melanoma-latest-subs/512dpn131_submission_5_notta.csv',    \n\n    \n '../input/melanoma-latest-subs/512dpn131_oldaug_submission_1_3tta.csv', # 0.899\n '../input/melanoma-latest-subs/512dpn131_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/512dpn131_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/512dpn131_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/512dpn131_oldaug_submission_5_3tta.csv', \n    \n\n '../input/melanoma-latest-subs/512se50_submission_1_16tta.csv', # 0.920\n '../input/melanoma-latest-subs/512se50_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/512se50_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/512se50_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/512se50_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/512se50_submission_1_notta.csv', # 927\n '../input/melanoma-latest-subs/512se50_submission_2_notta.csv',\n '../input/melanoma-latest-subs/512se50_submission_3_notta.csv',\n '../input/melanoma-latest-subs/512se50_submission_4_notta.csv',\n '../input/melanoma-latest-subs/512se50_submission_5_notta.csv',    \n\n    \n    \n '../input/melanoma-latest-subs/512se50_oldaug_submission_1_3tta.csv', # 0.903\n '../input/melanoma-latest-subs/512se50_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/512se50_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/512se50_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/512se50_oldaug_submission_5_3tta.csv', \n    \n    \n    \n '../input/melanoma-latest-subs/512sk50_submission_1_16tta.csv', # 0.919\n '../input/melanoma-latest-subs/512sk50_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/512sk50_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/512sk50_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/512sk50_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/512sk50_submission_1_notta.csv', # 919\n '../input/melanoma-latest-subs/512sk50_submission_2_notta.csv',\n '../input/melanoma-latest-subs/512sk50_submission_3_notta.csv',\n '../input/melanoma-latest-subs/512sk50_submission_4_notta.csv',\n '../input/melanoma-latest-subs/512sk50_submission_5_notta.csv',    \n\n    \n '../input/melanoma-latest-subs/512sk50_oldaug_submission_1_3tta.csv', # 0.903\n '../input/melanoma-latest-subs/512sk50_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/512sk50_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/512sk50_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/512sk50_oldaug_submission_5_3tta.csv', \n    \n    \n  \n '../input/melanoma-latest-subs/7680_oldaug_submission_1_3tta.csv', # 0.9116\n '../input/melanoma-latest-subs/7680_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/7680_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/7680_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/7680_oldaug_submission_5_3tta.csv', \n    \n\n '../input/melanoma-latest-subs/7683_submission_1_16tta.csv', # 0.923\n '../input/melanoma-latest-subs/7683_submission_2_16tta.csv',\n '../input/melanoma-latest-subs/7683_submission_3_16tta.csv',\n '../input/melanoma-latest-subs/7683_submission_4_16tta.csv',\n '../input/melanoma-latest-subs/7683_submission_5_16tta.csv',\n        \n '../input/melanoma-latest-subs/7683_submission_1_notta.csv', # 926\n '../input/melanoma-latest-subs/7683_submission_2_notta.csv',\n '../input/melanoma-latest-subs/7683_submission_3_notta.csv',\n '../input/melanoma-latest-subs/7683_submission_4_notta.csv',\n '../input/melanoma-latest-subs/7683_submission_5_notta.csv',    \n\n    \n '../input/melanoma-latest-subs/7683_oldaug_submission_1_3tta.csv', # 0.920\n '../input/melanoma-latest-subs/7683_oldaug_submission_2_3tta.csv',\n '../input/melanoma-latest-subs/7683_oldaug_submission_3_3tta.csv',\n '../input/melanoma-latest-subs/7683_oldaug_submission_4_3tta.csv',\n '../input/melanoma-latest-subs/7683_oldaug_submission_5_3tta.csv', \n    \n    \n]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"subs = []\nfor index, path in enumerate(csv):\n    df = pd.read_csv(path)\n    df.columns = ['image_name', f'target{index}']\n    subs.append(df)\n\ntest_oof = subs[0]\n\nfor sub_index in range(1, len(subs)):\n    test_oof = test_oof.merge(subs[sub_index], on='image_name')\nfor i in range(42):\n    test_oof['preds'+str(i)] = test_oof[list(test_oof.columns.values[i*5:(i+1)*5])].mean(axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_oof.drop(test_oof.columns[[x for x in range(1,211)]], axis=1, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_oof.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_oof.shape","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"## function to seed everything\ndef seed_everything(seed):\n    random.seed(seed)\n    np.random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    \n# define a seed\nSEED = 42\n    \n# let´s start seeding everything\nseed_everything(SEED)\n\n# function to read data and image data models predictions\ndef read_data():\n    train = pd.read_csv('../input/melanoma-csv/train_with_mean_rgb.csv')\n    test = pd.read_csv('../input/melanoma-csv/test_with_mean_rgb.csv')\n    sub = pd.read_csv('/kaggle/input/siim-isic-melanoma-classification/sample_submission.csv')\n    train1 = pd.read_csv('../input/oofs-melanoma/oof_DEDED_9419.csv')\n    train2 = pd.read_csv('../input/oofs-melanoma/oof_DenseNet201_9481.csv')\n    train3 = pd.read_csv('../input/oofs-melanoma/oof_EB6_9482.csv')\n    train4 = pd.read_csv('../input/oofs-melanoma/oof_InceptionResNetV2_9328.csv')\n\n    test1 = pd.read_csv('../input/oofs-melanoma/submission_DEDED_9419.csv')\n    test2 = pd.read_csv('../input/oofs-melanoma/submission_DenseNet201_9481.csv')\n    test3 = pd.read_csv('../input/oofs-melanoma/submission_EB6_9482.csv')\n    test4 = pd.read_csv('../input/oofs-melanoma/submission_InceptionResNetV2_9328.csv')\n\n    \n    def fix_predictions(train, test, model):\n        test.columns = ['image_name', 'preds{}'.format(model)]\n        train = train[['image_name', 'pred']]\n        train.columns = ['image_name', 'preds{}'.format(model)]\n        return train, test\n    \n    train1, test1 = fix_predictions(train1, test1, '42')\n    train2, test2 = fix_predictions(train2, test2, '43')\n    train3, test3 = fix_predictions(train3, test3, '44')\n    train4, test4 = fix_predictions(train4, test4, '45')\n\n\n    train = train.merge(train1, on = 'image_name').merge(train2, on = 'image_name').merge(train3, on = 'image_name').merge(train4, on = 'image_name')\n    test = test.merge(test1, on = 'image_name').merge(test2, on = 'image_name').merge(test3, on = 'image_name').merge(test4, on = 'image_name')\n    return train, test, sub\n\ntrain, test, sub = read_data()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = train.merge(train_oof, on = 'image_name')\ntest = test.merge(test_oof, on = 'image_name')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.columns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def print_roc_auc(df):\n    for i in range(46):\n        roc_auc = metrics.roc_auc_score(df['target'], df['preds'+str(i)])\n        print(f'Our model {i} out of folds roc auc score is {roc_auc}')\n        print('-'*50)\n        print('\\n')\n        \nprint_roc_auc(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.columns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def feature_engineering(train, test):\n    # size of images\n    trn_images = train['image_name'].values\n    trn_sizes = np.zeros((trn_images.shape[0], 2))\n    for i, img_path in enumerate(tqdm(trn_images)):\n        img = Image.open(os.path.join('/kaggle/input/siim-isic-melanoma-classification/jpeg/train/', f'{img_path}.jpg'))\n        trn_sizes[i] = np.array([img.size[0], img.size[1]])\n    test_images = test['image_name'].values\n    test_sizes = np.zeros((test_images.shape[0],2))\n    for i, img_path in enumerate(tqdm(test_images)):\n        img = Image.open(os.path.join('/kaggle/input/siim-isic-melanoma-classification/jpeg/test/', f'{img_path}.jpg'))\n        test_sizes[i] = np.array([img.size[0],img.size[1]])\n    train['w'] = trn_sizes[:,0]\n    train['h'] = trn_sizes[:,1]\n    test['w'] = test_sizes[:,0]\n    test['h'] = test_sizes[:,1]\n    \n    return train, test\n\ntrain, test = feature_engineering(train, test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_bk = train\ntest_bk = test","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = train_bk\ntest = test_bk","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#train['group'] = train['patient_id'].apply(lambda x:x[4]).astype(int)\ntrain['group2'] = train['patient_id'].apply(lambda x:x[4]+x[5]+x[6]+x[7]+x[8]+x[9]).astype(int)\n\n#test['group'] = test['patient_id'].apply(lambda x:x[9]).astype(int)\n#test['group2'] = test['patient_id'].apply(lambda x:x[9]).astype(int)\n\ntest['group2'] = test['patient_id'].apply(lambda x:x[4]+x[5]+x[6]+x[7]+x[8]+x[9]).astype(int)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#train_temp = pd.read_csv('../input/siim-isic-melanoma-classification/train.csv')\n#test_temp = pd.read_csv('../input/siim-isic-melanoma-classification/test.csv')\n#train['sex'] = train_temp['sex']\n#test['sex'] = test_temp['sex']\n#train['anatom_site_general_challenge'] = train_temp['anatom_site_general_challenge']\n#test['anatom_site_general_challenge'] = test_temp['anatom_site_general_challenge']\n\ndef encode_categorical(train, test):\n    for col in ['sex', 'anatom_site_general_challenge']:\n        encoder = preprocessing.LabelEncoder()\n        train[col].fillna('unknown', inplace = True)\n        test[col].fillna('unknown', inplace = True)\n        train[col] = encoder.fit_transform(train[col])\n        test[col] = encoder.transform(test[col])\n    age_approx = np.nanmean(np.concatenate([np.array(train['age_approx']), np.array(test['age_approx'])]))\n    train['age_approx'].fillna(age_approx, inplace = True)\n    test['age_approx'].fillna(age_approx, inplace = True)\n    train['patient_id'].fillna('unknown', inplace = True)\n    return train, test\n\n\ntrain, test = encode_categorical(train, test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"dups=pd.read_csv('/kaggle/input/siim-list-of-duplicates/2020_Challenge_duplicates.csv')\n#train_duplicates = dups[dups['partition']=='train']['ISIC_id']\n#train = train[~train['image_name'].isin(train_duplicates)].reset_index(drop=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def train_and_evaluate_lgbm(train, test, params, verbose_eval, folds = 5):\n    \n    # define usefull features\n    features = [col for col in train.columns if col not in ['image_name', 'patient_id', 'diagnosis', 'benign_malignant', 'target', 'source', 'split', 'tfrecord']]\n    if verbose_eval != False:\n        print('Training with features: ', features)\n    \n    \n    # groupkfolds to predict evaluate unknown clients (just like the test set)\n    kf = GroupKFold(n_splits = folds)\n    target = 'target'\n    \n    oof_pred = np.zeros(len(train))\n    y_pred = np.zeros(len(test))\n     \n    for fold, (tr_ind, val_ind) in enumerate(kf.split(train, groups = train['patient_id'])):\n        if verbose_eval != False:\n            print('\\n')\n            print('-'*50)\n            print(f'Training fold {fold + 1}\"')\n        x_train, x_val = train[features].iloc[tr_ind], train[features].iloc[val_ind]\n        y_train, y_val = train[target][tr_ind], train[target][val_ind]\n        train_set = lgb.Dataset(x_train, y_train)\n        val_set = lgb.Dataset(x_val, y_val)\n        \n        model = lgb.train(params, train_set, num_boost_round = 10000, early_stopping_rounds = 50, \n                         valid_sets = [train_set, val_set], verbose_eval = verbose_eval)\n        \n        \n        oof_pred[val_ind] = model.predict(x_val)\n        \n        y_pred += model.predict(test[features]) / kf.n_splits\n        \n    rauc = metrics.roc_auc_score(train['target'], oof_pred)\n    if verbose_eval != False:\n        print(f'Our oof roc auc score for our lgbm model is {rauc}')\n        \n    gc.collect()\n    \n    return rauc, y_pred","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def run_lgb_bayesian(num_leaves, learning_rate, max_depth, lambda_l1, lambda_l2, bagging_fraction, bagging_freq, colsample_bytree, colsample_bynode, min_data_per_leaf, min_sum_hessian_per_leaf):\n    \n    params = {\n        'boosting_type': 'gbdt',\n        'metric': 'auc',\n        'objective': 'binary',\n        'n_jobs': -1,\n        'seed': SEED,\n        'num_leaves': int(num_leaves),\n        'learning_rate': learning_rate,\n        'max_depth': int(max_depth),\n        'lambda_l1': lambda_l1,\n        'lambda_l2': lambda_l2,\n        'bagging_fraction': bagging_fraction,\n        'bagging_freq': int(bagging_freq),\n        'colsample_bytree': colsample_bytree,\n        'colsample_bynode': colsample_bynode,\n        'min_data_per_leaf': int(min_data_per_leaf),\n        'min_sum_hessian_per_leaf': min_sum_hessian_per_leaf,\n        'verbose': 0\n    }\n    \n    rauc, y_pred = train_and_evaluate_lgbm(train, test, params, False)\n    return rauc\n\n\n# run bayesian optimization with optimal features\nbounds_lgb = {\n    'num_leaves': (20, 500),\n    'learning_rate': (0.01, 0.2),\n    'max_depth': (8, 250),\n    'lambda_l1': (0, 3),\n    'lambda_l2': (0, 3),\n    'bagging_fraction': (0.4, 1),\n    'bagging_freq': (1, 10),\n    'colsample_bytree': (0.4, 1),\n    'colsample_bynode': (0.4, 1),\n    'min_data_per_leaf': (10, 100),\n    'min_sum_hessian_per_leaf': (0.0001, 0.01)\n}\n\nlgb_bo = BayesianOptimization(run_lgb_bayesian, bounds_lgb, random_state = SEED)\nlgb_bo.maximize(init_points = 300, n_iter = 300, acq = 'ucb', xi = 0.0, alpha = 1e-6)\n\nparams = {\n    'boosting_type': 'gbdt',\n    'metric': 'auc',\n    'objective': 'binary',\n    'n_jobs': -1,\n    'seed': SEED,\n    'num_leaves': int(lgb_bo.max['params']['num_leaves']),\n    'learning_rate': lgb_bo.max['params']['learning_rate'],\n    'max_depth': int(lgb_bo.max['params']['max_depth']),\n    'lambda_l1': lgb_bo.max['params']['lambda_l1'],\n    'lambda_l2': lgb_bo.max['params']['lambda_l2'],\n    'bagging_fraction': lgb_bo.max['params']['bagging_fraction'],\n    'bagging_freq': int(lgb_bo.max['params']['bagging_freq']),\n    'colsample_bytree': lgb_bo.max['params']['colsample_bytree'],\n    'colsample_bynode': lgb_bo.max['params']['colsample_bynode'],\n    'min_data_per_leaf': int(lgb_bo.max['params']['min_data_per_leaf']),\n    'min_sum_hessian_per_leaf': lgb_bo.max['params']['min_sum_hessian_per_leaf']\n}\n\n\n# train with new hyperparameters\nroc_auc, y_pred = train_and_evaluate_lgbm(train, test, params, 50)\n\n# predict\ntest['target'] = y_pred\nsub = test[['image_name', 'target']]\nsub.to_csv('lgbm_baseline_sub.csv', index = False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","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}