{"cells":[{"cell_type":"markdown","metadata":{"_cell_guid":"29853811-d836-7a48-ee3b-8c2a30f9acc0"},"source":""},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"6ca4a5ea-ff79-4f42-c4e9-68d157adcbbd"},"outputs":[],"source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nfrom subprocess import check_output\nprint(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n\n# Any results you write to the current directory are saved as output."},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"50b236e6-2b53-e10a-2883-044c51ba610e"},"outputs":[],"source":"import xgboost\nprint(xgboost.__version__)\nexit()\n\nimport 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)\n"}],"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.6.0"}},"nbformat":4,"nbformat_minor":0}