{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":53666,"databundleVersionId":6589269,"sourceType":"competition"}],"dockerImageVersionId":30579,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\ntrain_events = pd.read_csv(\"/kaggle/input/child-mind-institute-detect-sleep-states/train_events.csv\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-11-14T00:26:48.675525Z","iopub.execute_input":"2023-11-14T00:26:48.676254Z","iopub.status.idle":"2023-11-14T00:26:49.190169Z","shell.execute_reply.started":"2023-11-14T00:26:48.676214Z","shell.execute_reply":"2023-11-14T00:26:49.188943Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_events","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:49.192241Z","iopub.execute_input":"2023-11-14T00:26:49.192673Z","iopub.status.idle":"2023-11-14T00:26:49.232637Z","shell.execute_reply.started":"2023-11-14T00:26:49.192639Z","shell.execute_reply":"2023-11-14T00:26:49.231192Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_events = train_events.dropna(how='any')\ntrain_events","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:49.233893Z","iopub.execute_input":"2023-11-14T00:26:49.234250Z","iopub.status.idle":"2023-11-14T00:26:49.268230Z","shell.execute_reply.started":"2023-11-14T00:26:49.234221Z","shell.execute_reply":"2023-11-14T00:26:49.266651Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# train_events.index = pd.to_datetime(train_events['timestamp'], utc=True)\ntrain_events = train_events.assign(datetime=pd.to_datetime(train_events['timestamp'], utc=True))\n# train_events = train_events.assign(dt_time=train_events['datetime'].dt.time)\ntrain_events = train_events.assign(datetime_10min=train_events['datetime'].round(\"10MIN\"))\ntrain_events = train_events.assign(hour=train_events['datetime_10min'].dt.hour, minute=train_events['datetime_10min'].dt.minute)\ntrain_events","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:49.272427Z","iopub.execute_input":"2023-11-14T00:26:49.273375Z","iopub.status.idle":"2023-11-14T00:26:49.408348Z","shell.execute_reply.started":"2023-11-14T00:26:49.273323Z","shell.execute_reply":"2023-11-14T00:26:49.407530Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:49.409803Z","iopub.execute_input":"2023-11-14T00:26:49.410395Z","iopub.status.idle":"2023-11-14T00:26:49.415074Z","shell.execute_reply.started":"2023-11-14T00:26:49.410363Z","shell.execute_reply":"2023-11-14T00:26:49.413821Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"_count = train_events.loc[train_events['event']=='onset', ['hour', 'minute', 'timestamp']].groupby(['hour', 'minute']).count()\nonset_time = _count.idxmax().values[0]\nprint(onset_time)\nfig, ax = plt.subplots(figsize=(20, 3))\n_count.plot(kind=\"bar\", ax=ax)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:49.416962Z","iopub.execute_input":"2023-11-14T00:26:49.417734Z","iopub.status.idle":"2023-11-14T00:26:50.596121Z","shell.execute_reply.started":"2023-11-14T00:26:49.417700Z","shell.execute_reply":"2023-11-14T00:26:50.594889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"_count = train_events.loc[train_events['event']=='wakeup', ['hour', 'minute', 'timestamp']].groupby(['hour', 'minute']).count()\nwakeup_time = _count.idxmax().values[0]\nprint(wakeup_time)\nfig, ax = plt.subplots(figsize=(20, 3))\n_count.plot(kind=\"bar\", ax=ax)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:50.598109Z","iopub.execute_input":"2023-11-14T00:26:50.598904Z","iopub.status.idle":"2023-11-14T00:26:51.806298Z","shell.execute_reply.started":"2023-11-14T00:26:50.598856Z","shell.execute_reply":"2023-11-14T00:26:51.804961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_series = pd.read_parquet(\"/kaggle/input/child-mind-institute-detect-sleep-states/test_series.parquet\")\n\ntest_series","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:26:51.808523Z","iopub.execute_input":"2023-11-14T00:26:51.808977Z","iopub.status.idle":"2023-11-14T00:26:52.203154Z","shell.execute_reply.started":"2023-11-14T00:26:51.808935Z","shell.execute_reply":"2023-11-14T00:26:52.202199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_series = test_series.assign(datetime=pd.to_datetime(test_series['timestamp'], utc=True))\ntest_series = test_series.assign(datetime_10min=test_series['datetime'].round(\"10MIN\"))\ntest_series = test_series.assign(hour=test_series['datetime_10min'].dt.hour, minute=test_series['datetime_10min'].dt.minute)\ntest_series = test_series.assign(date=test_series['datetime_10min'].dt.strftime(\"%Y-%m-%d\"))\ntest_series","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:27:09.411252Z","iopub.execute_input":"2023-11-14T00:27:09.411678Z","iopub.status.idle":"2023-11-14T00:27:09.459914Z","shell.execute_reply.started":"2023-11-14T00:27:09.411643Z","shell.execute_reply":"2023-11-14T00:27:09.458658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"if len(test_series)<=450:\n    onset_time = (18, 0)\n    wakeup_time = (19, 30)","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:27:14.203429Z","iopub.execute_input":"2023-11-14T00:27:14.203833Z","iopub.status.idle":"2023-11-14T00:27:14.209902Z","shell.execute_reply.started":"2023-11-14T00:27:14.203802Z","shell.execute_reply":"2023-11-14T00:27:14.208631Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"series_ids = test_series['series_id'].unique()\nresult = []\n\n_row_id = 0\nfor series_id in series_ids:\n    _test_series = test_series[test_series['series_id']==series_id]\n    \n    dates = _test_series['date'].unique()\n    for date in dates:\n        _test_series_date = _test_series[_test_series['date']==date]\n\n        _onset_test_series = _test_series_date[(_test_series_date['hour']==onset_time[0]) & (_test_series_date['minute']==onset_time[1])]\n        if len(_onset_test_series)>0:\n            result.append({\n                'row_id': _row_id,\n                'series_id': series_id,\n                'step': int(_onset_test_series['step'].mean()),\n                'event': 'onset',\n                'score': 1.0\n            })\n            _row_id += 1\n\n        _wakeup_test_series = _test_series_date[(_test_series_date['hour']==wakeup_time[0]) & (_test_series_date['minute']==wakeup_time[1])]\n        if len(_wakeup_test_series)>0:\n            result.append({\n                'row_id': _row_id,\n                'series_id': series_id,\n                'step': int(_wakeup_test_series['step'].mean()),\n                'event': 'wakeup',\n                'score': 1.0\n            })\n            _row_id += 1\n    ","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:27:32.300857Z","iopub.execute_input":"2023-11-14T00:27:32.301413Z","iopub.status.idle":"2023-11-14T00:27:32.335858Z","shell.execute_reply.started":"2023-11-14T00:27:32.301365Z","shell.execute_reply":"2023-11-14T00:27:32.334057Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.DataFrame(result)\nsubmission","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:27:38.206328Z","iopub.execute_input":"2023-11-14T00:27:38.206844Z","iopub.status.idle":"2023-11-14T00:27:38.225576Z","shell.execute_reply.started":"2023-11-14T00:27:38.206798Z","shell.execute_reply":"2023-11-14T00:27:38.223823Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2023-11-14T00:27:38.914352Z","iopub.execute_input":"2023-11-14T00:27:38.914839Z","iopub.status.idle":"2023-11-14T00:27:38.924220Z","shell.execute_reply.started":"2023-11-14T00:27:38.914801Z","shell.execute_reply":"2023-11-14T00:27:38.923048Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}