{"cells":[{"metadata":{},"cell_type":"markdown","source":"Based on: \nhttps://www.kaggle.com/solomonk/minmax-ensemble-0-9526-lb?rvi=1\nhttps://www.kaggle.com/truonghoang/stacking-ensemble-on-my-submissions\nhttps://www.kaggle.com/datafan07/analysis-of-melanoma-metadata-and-effnet-ensemble\n","execution_count":null},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os \n\ndef MinMaxBestBaseStacking(input_folder, best_base, output_path):\n    sub_base = pd.read_csv(best_base)\n    all_files = os.listdir(input_folder)\n\n    # Read and concatenate submissions\n    outs = [pd.read_csv(os.path.join(input_folder, f), index_col=0) for f in all_files]\n    concat_sub = pd.concat(outs, axis=1)\n    cols = list(map(lambda x: \"target\" + str(x), range(len(concat_sub.columns))))\n    concat_sub.columns = cols\n    concat_sub.reset_index(inplace=True)\n\n    # get the data fields ready for stacking\n    concat_sub['is_iceberg_max'] = concat_sub.iloc[:, 1:6].max(axis=1)\n    concat_sub['is_iceberg_min'] = concat_sub.iloc[:, 1:6].min(axis=1)\n    concat_sub['is_iceberg_mean'] = concat_sub.iloc[:, 1:6].mean(axis=1)\n    concat_sub['is_iceberg_median'] = concat_sub.iloc[:, 1:6].median(axis=1)\n\n    # set up cutoff threshold for lower and upper bounds\n#     cutoff_lo = 0.66\n#     cutoff_hi = 0.33\n    \n    cutoff_lo = 0.85\n    cutoff_hi = 0.17\n\n    concat_sub['is_iceberg_base'] = sub_base['target']\n    concat_sub['target'] = np.where(np.all(concat_sub.iloc[:, 1:6] > cutoff_lo, axis=1),\n                                        concat_sub['is_iceberg_max'],\n                                        np.where(np.all(concat_sub.iloc[:, 1:6] < cutoff_hi, axis=1),\n                                                 concat_sub['is_iceberg_min'],\n                                                 concat_sub['is_iceberg_base']))\n    concat_sub[['image_name', 'target']].to_csv(output_path,\n                                            index=False, float_format='%.12f')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"\nMinMaxBestBaseStacking('../input/cs0099/', '../input/cs0099/submission.csv', 'submission_6.csv')\n\n# data1 = pd.read_csv('../input/minmax-ensemble-0-9526-lb/submission.csv')\n# data2 = pd.read_csv('../input/stacking-ensemble-on-my-submissions/submission_mean.csv')\n# submission = data1.copy()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# submission['target'] = 2/3 * data1['target'] + 1/3 * data2['target']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# submission.to_csv('submission.csv', index=False, float_format='%.6f')","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}