{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":false,"collapsed":true},"cell_type":"code","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)\nimport math\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\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","collapsed":true,"trusted":false},"cell_type":"code","source":"def calculate_mean_deal_prob(dic):\n    probabilities = list(dic.values())\n    probs = []\n    for p in probabilities:\n        probs.append(p['deal_probability'])\n        \n    return sum(probs) / float(len(probs))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"47e2ff80f5439cb9ccd8173f8bc4d44aca9c6550","_cell_guid":"f3cd7210-7b7f-49b6-b1c7-de9685a22cf6","collapsed":true,"trusted":false},"cell_type":"code","source":"def get_predictions(df, dic, mean):\n    y_pred = []\n    \n    for row in df.itertuples():\n        category_name = row.category_name\n\n        if category_name in dic:\n            y_pred.append(dic[category_name]['deal_probability'])\n        else:\n            y_pred.append(mean)\n    \n    return y_pred","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"85bfcbc3388a84f2296b8473ae42892e56158ccd","_cell_guid":"771145b4-67a0-43aa-b3a9-6c706e5b6fd7","collapsed":true,"trusted":false},"cell_type":"code","source":"def rmse(x,y): return math.sqrt(((x-y)**2).mean())","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"f5fcce39e39fcefc5465a0529f134c89570a63ca","_cell_guid":"0243deef-0118-420e-8ff3-d0c2361a10d8","collapsed":true,"trusted":false},"cell_type":"code","source":"df = pd.read_csv('../input/train.csv')\ndf_test = pd.read_csv('../input/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1969f757e0764650862123272b426d5a250ff80b","_cell_guid":"f3b399ec-79c3-42e0-863e-2bccac469ef2","collapsed":true,"trusted":false},"cell_type":"code","source":"df_train = df[df.activation_date <= '2017-03-24']\ndf_val = df[df.activation_date > '2017-03-24']","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"033c71a6663fc72135da3769dae52b8136df7247","_cell_guid":"b1cf00b5-eec3-461f-9d1f-3bbcecffef85","trusted":false,"collapsed":true},"cell_type":"code","source":"len(df_train)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"097f76259e4df320ec30f5153494ed36b48bc314","_cell_guid":"c4444a08-bd64-4b05-96cb-849165db16da","trusted":false,"collapsed":true},"cell_type":"code","source":"len(df_val)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"cff44422b912ccdef22acb7bf026030f924ca83b","_cell_guid":"060d73ab-5983-4583-9032-bc81d8f6e447","collapsed":true,"trusted":false},"cell_type":"code","source":"groupby = df_train.groupby(by=['category_name'])\ndeal_prob_by_category_name = (groupby.agg({'deal_probability': 'sum'})) / (groupby.agg({'deal_probability': 'count'}))\ndic = deal_prob_by_category_name.to_dict(orient='index')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b6a09682f44fb6de9e8176d0b12b52d33c24eecc","_cell_guid":"2eb82144-3e72-4429-af38-0353239bb14e","trusted":false,"collapsed":true},"cell_type":"code","source":"len(dic)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"caa67e739445db3b98b5301b016dc19cbb14bd8c","_cell_guid":"4d8630dc-cc61-4b51-9201-89a583b667c1","collapsed":true,"trusted":false},"cell_type":"code","source":"mean = calculate_mean_deal_prob(dic)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e417b09b62f8d8ba51f39c49c00bcb9cde7aa3fc","_cell_guid":"b2511c2b-2264-440e-a782-676e17aad51a","trusted":false,"collapsed":true},"cell_type":"code","source":"mean","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"c9aea9880731ebcec75f0dde6a44f88b969a7a2f","_cell_guid":"ca164cd5-cdac-4a52-8f93-f2a5f0f2c53a","collapsed":true,"trusted":false},"cell_type":"code","source":"y = df_val['deal_probability'].as_matrix().ravel()\ny_pred = get_predictions(df_val, dic, mean)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"dc62833571b59cd83b953d0986c1548ce9de9449","_cell_guid":"82ef605f-7224-4cf5-b80a-f996a1c2ddfb","trusted":false,"collapsed":true},"cell_type":"code","source":"rmse(y, y_pred)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e197a559083243c3e0757a7c2717df7c26cabf0a","_cell_guid":"c90b4d8a-5143-4e5a-a1c7-571988d5acd5","collapsed":true,"trusted":false},"cell_type":"code","source":"y_pred = get_predictions(df_test, dic, mean)\ndf_test['deal_probability'] = y_pred\ndf_test[['item_id','deal_probability']].to_csv('submission.csv', index=False)","execution_count":null,"outputs":[]}],"metadata":{"language_info":{"name":"python","version":"3.6.5","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":1}