{"cells":[{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"a51ad2f0-c8df-08d4-38d3-997526761863"},"outputs":[],"source":"import pandas as pd\nimport numpy as np \n\nreg = 10 # trying anokas idea of regularization\neval = True\n\ntrain = pd.read_csv(\"../input/clicks_train.csv\")\n\nif eval:\n\tids = train.display_id.unique()\n\tids = np.random.choice(ids, size=len(ids)//10, replace=False)\n\n\tvalid = train[train.display_id.isin(ids)]\n\ttrain = train[~train.display_id.isin(ids)]\n\t\n\tprint (valid.shape, train.shape)\n\ncnt = train[train.clicked==1].ad_id.value_counts()\ncntall = train.ad_id.value_counts()\ndel train\n\ndef get_prob(k):\n    if k not in cnt:\n        return 0\n    return cnt[k]/(float(cntall[k]) + reg)\n\ndef srt(x):\n    ad_ids = map(int, x.split())\n    ad_ids = sorted(ad_ids, key=get_prob, reverse=True)\n    return \" \".join(map(str,ad_ids))\n   \nif eval:\n\tfrom ml_metrics import mapk\n\t\n\ty = valid[valid.clicked==1].ad_id.values\n\ty = [[_] for _ in y]\n\tp = valid.groupby('display_id').ad_id.apply(list)\n\tp = [sorted(x, key=get_prob, reverse=True) for x in p]\n\t\n\tprint (mapk(y, p, k=12))\nelse:\n\tsubm = pd.read_csv(\"../input/sample_submission.csv\") \n\tsubm['ad_id'] = subm.ad_id.apply(lambda x: srt(x))\n\tsubm.to_csv(\"subm_reg_1.csv\", index=False)"}],"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}