{"cells":[{"metadata":{"_uuid":"33d67ae698a2d66e4d449d2e4b48c86ad416db84"},"cell_type":"markdown","source":"This TRICK can help you improve the score but I recommand you build your own model.\n\nBest score: **0.714** - Version 1\n\n### Reference: \n* https://www.kaggle.com/suicaokhoailang/ensembling-with-averaged-probabilities-0-701-lb\n* https://www.kaggle.com/matthewa313/ensembling-algorithm-for-average-precision-metric\n* https://www.kaggle.com/ateplyuk/resnext50-no-0-crop-sz384\n* etc..."},{"metadata":{"trusted":true,"_uuid":"9941567f8736b880731b91b71fd5760e89613f5e"},"cell_type":"code","source":"import csv\nimport pandas as pd # not key to functionality of kernel\n\nsub_files = ['../input/whale-ensemble/ensemble/0657.csv',\n             '../input/whale-ensemble/ensemble/0685.csv',\n             '../input/ensembling-m14-0-748/sub_ens.csv']\n\n# Weights of the individual subs\nsub_weight = [0.657**2,\n              0.685**2,\n              0.748**2]","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"Hlabel = 'Image' \nHtarget = 'Id'\nnpt = 5 # number of places in target\n\nplace_weights = {}\nfor i in range(npt):\n    place_weights[i] = ( 1 / (i + 1) )\n    \nprint(place_weights)\n\nlg = len(sub_files)\nsub = [None]*lg\nfor i, file in enumerate( sub_files ):\n    ## input files ##\n    print(\"Reading {}: w={} - {}\". format(i, sub_weight[i], file))\n    reader = csv.DictReader(open(file,\"r\"))\n    sub[i] = sorted(reader, key=lambda d: str(d[Hlabel]))\n\n## output file ##\nout = open(\"submit_v8.csv\", \"w\", newline='')\nwriter = csv.writer(out)\nwriter.writerow([Hlabel,Htarget])\n\nfor p, row in enumerate(sub[0]):\n    target_weight = {}\n    for s in range(lg):\n        row1 = sub[s][p]\n        for ind, trgt in enumerate(row1[Htarget].split(' ')):\n            target_weight[trgt] = target_weight.get(trgt,0) + (place_weights[ind]*sub_weight[s])\n    tops_trgt = sorted(target_weight, key=target_weight.get, reverse=True)[:npt]\n    writer.writerow([row1[Hlabel], \" \".join(tops_trgt)])\nout.close()","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}