{"cells":[{"cell_type":"markdown","metadata":{"_cell_guid":"97e639de-f2b0-e4f3-6c90-cf4cc5578094"},"source":"Exploring the Users Click Dilemma\n=============================="},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"92857977-4188-8f25-b843-92ab1e477673"},"outputs":[],"source":"import numpy as np\nimport pandas as pd\nimport os, glob\nimport zipfile\nfrom subprocess import check_output\n#print(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))  \n#^--- might need later for more optimal data processing\n\nfiles = glob.glob('../input/*')\nfor f in files:\n    h = open(f,'r').readline().split(',')\n    print(f.split('/')[2])\n    print(str(h).replace('\\\\n',''),\"\\n\"+(\"=\"*20))"},{"cell_type":"markdown","metadata":{"_cell_guid":"2e71f396-4d18-f564-9b1d-c6932801d848"},"source":"The Cost Function\n=================\n[ Mean Average Precision @12][1]\n\n\n  [1]: https://github.com/benhamner/Metrics/blob/master/Python/ml_metrics/average_precision.py"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"43cb1da0-aa77-d8f9-6090-96be9e58b47b"},"outputs":[],"source":"def apk(actual, predicted, k=12):\n    if len(predicted)>k:\n        predicted = predicted[:k]\n    score = 0.0\n    num_hits = 0.0\n    for i,p in enumerate(predicted):\n        if p in actual and p not in predicted[:i]:\n            num_hits += 1.0\n            score += num_hits / (i+1.0)\n    if not actual:\n        return 0.0\n    return score / min(len(actual), k)\n\ndef mapk(actual, predicted, k=12):\n    return np.mean([apk(a,p,k) for a,p in zip(actual, predicted)])"},{"cell_type":"markdown","metadata":{"_cell_guid":"db1d0fe7-447a-05df-db3d-ab19627114dd"},"source":"The Starting Line - Default Submission\n======================================"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"72834757-fbed-050b-4031-8b81a5ae27c7"},"outputs":[],"source":"pd.read_csv('../input/sample_submission.csv').to_csv('sample_submission.csv')\nz = zipfile.ZipFile('sample_submission.csv.zip', \"w\", zipfile.ZIP_DEFLATED)\nz.write('sample_submission.csv')\nz.close()\nos.remove('sample_submission.csv')"},{"cell_type":"markdown","metadata":{"_cell_guid":"d4d57f84-a2b1-ff71-7013-fdb1a7d23f99"},"source":"A Pure Python Approach (\"The Challenge\")\n======================"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"e3397190-95b7-7682-26af-6e506d72259a"},"outputs":[],"source":"#coming soon to kernel near  you..."}],"metadata":{"_change_revision":0,"_is_fork":false,"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0}