{"cells":[{"metadata":{"_uuid":"d926806e83da165dc5e5cd9fbba3f30e0d36df82"},"cell_type":"markdown","source":"# 1 Imports "},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"from fastai.imports import *\nfrom fastai.structured import *\n\nfrom sklearn.ensemble import RandomForestRegressor\nfrom IPython.display import display\n\nfrom sklearn import metrics","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"PATH = '../input/'\n!ls {PATH}","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"c39551e1aa0b31682c15c2a23c36c6abf83eb4ab"},"cell_type":"markdown","source":"# 2 Read data"},{"metadata":{"trusted":true,"_uuid":"7b156ece90949701ee9d03598ac82de92bc04e5c"},"cell_type":"code","source":"types = {\n    'id': 'int64',\n    'item_nbr': 'int32',\n    'store_nbr': 'int8',\n    'unit_sales': 'float32',\n    'onpromotion': 'object'\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"820a03c2cede08b15a3a034be9afc755ed779816"},"cell_type":"code","source":"%%time\ndf_all = pd.read_csv(f'{PATH}train.csv', parse_dates=['date'], dtype=types, \n                     infer_datetime_format=True, skiprows=range(1,100000000))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b4c881d08e93f95eba88a232b2bb9485131e2b4e"},"cell_type":"code","source":"df_all.onpromotion.fillna(False, inplace=True)\ndf_all.onpromotion = df_all.onpromotion.map({'False': False, 'True': True})\ndf_all.onpromotion = df_all.onpromotion.astype(bool)\n\nos.makedirs('tmp', exist_ok=True)\n%time df_all.to_feather('tmp/raw_groceries')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0f14aba164eab0e77fd8fb23cea60eb951a88b8b"},"cell_type":"code","source":"%time df_all.describe(include='all')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6a44de686ee950f9f9a2bfbf5479af81628e854a"},"cell_type":"code","source":"df_test = pd.read_csv(f'{PATH}test.csv',parse_dates=['date'], dtype=types, infer_datetime_format=True)\n\ndf_test.onpromotion.fillna(False, inplace=True)\ndf_test.onpromotion = df_all.onpromotion.map({'False': False, 'True': True})\ndf_test.onpromotion = df_all.onpromotion.astype(bool)\ndf_test.describe(include='all')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b015edb1897f5dda284f5a091d1033c31fadc89f"},"cell_type":"code","source":"df_all.tail()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"66b2255b166b0ba9418eaee30dede612e486a742"},"cell_type":"code","source":"df_all.unit_sales = np.log1p(np.clip(df_all.unit_sales, 0, None))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1e674f68916a82ef047dcccddff526d56f5d12d4"},"cell_type":"code","source":"%time add_datepart(df_all, 'date')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fc36971f58f735164f36e2e03e7a88e08b460b77"},"cell_type":"code","source":"def split_vals(a, n): return a[:n].copy(), a[n:].copy()\n\nn_valid = len(df_test)\nn_trn = len(df_all) - n_valid\ntrain, valid = split_vals(df_all, n_trn)\ntrain.shape, valid.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"760b1b85e895738fc0acd843c5c6ef54497b5614"},"cell_type":"code","source":"%%time\ntrn, y, nas = proc_df(train, 'unit_sales')\nval, y_val, nas = proc_df(valid, 'unit_sales')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"2559cfeed3bb2edc75fab43bdc2e3ec5f7e462c4"},"cell_type":"markdown","source":"# 3 Models"},{"metadata":{"trusted":true,"_uuid":"d9b795bf862355e5864616f6a29529bb6347fd7d"},"cell_type":"code","source":"def rmse(x, y): return math.sqrt(((x-y)**2).mean())\n\ndef print_score(m):\n    res = [rmse(m.predict(x), y), rmse(m.predict(val), y_val),\n          m.score(x, y), m.score(val, y_val)]\n    if hasattr(m, 'oob_score_'): res.append(m.oob_score_)\n    print(res)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8bb9ca082b1ba30bc56eafcb23b8c9605be37d11"},"cell_type":"code","source":"set_rf_samples(1000000)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e53570d5cc91dad54601de72a7662bc8d18e728b"},"cell_type":"code","source":"%time x = np.array(trn, dtype=np.float32)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9e15182481a92e93a628fcf5a34b56e0d06075b8"},"cell_type":"code","source":"m = RandomForestRegressor(n_estimators=20, min_samples_leaf=100, n_jobs=-1)\n%time m.fit(x, y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"422b5358727db6b6475ed7ec0446a177ff407427"},"cell_type":"code","source":"print_score(m)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f164f30de9eee55ebbd4521aaf01f8587f540ad7"},"cell_type":"code","source":"m = RandomForestRegressor(n_estimators=20, min_samples_leaf=10, n_jobs=-1)\n%time m.fit(x, y)\nprint_score(m)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f0ded0c32510e6ef71767c8f0267916c84b9a63b"},"cell_type":"code","source":"m = RandomForestRegressor(n_estimators=20, min_samples_leaf=10, n_jobs=-1)\n%time m.fit(x, y)\nprint_score(m)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}