{"cells":[{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"1f785edf-4b6d-adfb-c051-c3bd23feb7ae"},"outputs":[],"source":"import pandas as pd\nimport numpy as np "},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"fdd583cf-9feb-1283-5adc-aaa7fe515d12"},"outputs":[],"source":"train = pd.read_csv(\"../input/clicks_train.csv\",index_col=0)\n"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"efc4e11d-8cc6-08c1-0ba7-61ee5457484e"},"outputs":[],"source":"# for the case of singleton actual\ndef sapk(actual, predicted, k=12):\n    i=predicted.index(actual)\n    return 1/(i+1) if i < 12 else 0\n\ndef msapk(actual, predicted, k=12):\n    return np.mean([sapk(a,p,k) for a,p in zip(actual, predicted)])\n"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"97f1864c-4a86-df8f-a5aa-321588f352e3"},"outputs":[],"source":""}],"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}