{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"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\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom matplotlib.pyplot import plot\nfrom matplotlib.pyplot import vlines\nimport matplotlib as plt\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\n'''\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n'''\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-04-24T18:00:42.755755Z","iopub.execute_input":"2023-04-24T18:00:42.756450Z","iopub.status.idle":"2023-04-24T18:00:42.793432Z","shell.execute_reply.started":"2023-04-24T18:00:42.756393Z","shell.execute_reply":"2023-04-24T18:00:42.792188Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#data1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/bdda73c9be.csv');\ndata1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/3e6987cb2d.csv');","metadata":{"execution":{"iopub.status.busy":"2023-04-24T18:00:47.187916Z","iopub.execute_input":"2023-04-24T18:00:47.188382Z","iopub.status.idle":"2023-04-24T18:00:47.724614Z","shell.execute_reply.started":"2023-04-24T18:00:47.188340Z","shell.execute_reply":"2023-04-24T18:00:47.723596Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(data1)","metadata":{"execution":{"iopub.status.busy":"2023-04-18T19:56:13.582777Z","iopub.execute_input":"2023-04-18T19:56:13.584180Z","iopub.status.idle":"2023-04-18T19:56:13.615628Z","shell.execute_reply.started":"2023-04-18T19:56:13.584121Z","shell.execute_reply":"2023-04-18T19:56:13.613952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot(data1.Turn)","metadata":{"execution":{"iopub.status.busy":"2023-04-18T19:56:16.262056Z","iopub.execute_input":"2023-04-18T19:56:16.262626Z","iopub.status.idle":"2023-04-18T19:56:16.628306Z","shell.execute_reply.started":"2023-04-18T19:56:16.262568Z","shell.execute_reply":"2023-04-18T19:56:16.627036Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"a = data1.Turn[1]\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T15:27:34.200631Z","iopub.execute_input":"2023-04-12T15:27:34.201118Z","iopub.status.idle":"2023-04-12T15:27:34.206848Z","shell.execute_reply.started":"2023-04-12T15:27:34.201080Z","shell.execute_reply":"2023-04-12T15:27:34.205728Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Fs = 100;\npadt = 1;\npad = Fs*padt;\nN = len(data1);\nt = 0;\nfor i in range(N):\n    if i>pad and data1.Turn[i] and not data1.Turn[i-1]:\n        t = t+1;\n\nstarts = np.zeros([t,1]);\nends = np.zeros([t,1]);\ns = 0;\ne = 0;\nfor i in range(N):\n    if i>pad and data1.Turn[i] and not data1.Turn[i-1]:\n        starts[s] = i-pad;\n        s = s+1;\n    \n    if i<N-pad and data1.Turn[i] and not data1.Turn[i+1]:\n        ends[e] = i+pad;\n        e = e+1;\n        \n        \n        \n\n        \nt        ","metadata":{"execution":{"iopub.status.busy":"2023-04-19T15:25:19.968765Z","iopub.execute_input":"2023-04-19T15:25:19.969169Z","iopub.status.idle":"2023-04-19T15:25:30.199043Z","shell.execute_reply.started":"2023-04-19T15:25:19.969134Z","shell.execute_reply":"2023-04-19T15:25:30.197788Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ends - starts","metadata":{"execution":{"iopub.status.busy":"2023-04-18T19:58:56.899728Z","iopub.execute_input":"2023-04-18T19:58:56.900314Z","iopub.status.idle":"2023-04-18T19:58:56.911466Z","shell.execute_reply.started":"2023-04-18T19:58:56.900258Z","shell.execute_reply":"2023-04-18T19:58:56.909789Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"event = 5;\nl = int(ends[event]) - int(starts[event]);\ntaxis = np.linspace(-pad,l-pad,l);\nvmin = min(data1.AccV[int(starts[event]):int(ends[event])]);\nvmax = max(data1.AccML[int(starts[event]):int(ends[event])]);\n\nplot(taxis,data1.AccML[int(starts[event]):int(ends[event])]);\nplot(taxis,data1.AccAP[int(starts[event]):int(ends[event])]);\nplot(taxis,data1.AccV[int(starts[event]):int(ends[event])]);\nvlines(l-2*pad,vmin,vmax)\nvlines(0,vmin,vmax)","metadata":{"execution":{"iopub.status.busy":"2023-04-17T17:16:02.806771Z","iopub.execute_input":"2023-04-17T17:16:02.807219Z","iopub.status.idle":"2023-04-17T17:16:03.034551Z","shell.execute_reply.started":"2023-04-17T17:16:02.807180Z","shell.execute_reply":"2023-04-17T17:16:03.033209Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ex = (data1.AccML**2 + data1.AccAP**2 + data1.AccV**2)**(.5);\nplot(ex)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T15:36:33.425310Z","iopub.execute_input":"2023-04-12T15:36:33.425803Z","iopub.status.idle":"2023-04-12T15:36:33.723693Z","shell.execute_reply.started":"2023-04-12T15:36:33.425763Z","shell.execute_reply":"2023-04-12T15:36:33.722169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"input_folder = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction\"\ntest_folders = [\n    os.path.join(input_folder, 'test', 'tdcsfog'),    \n    os.path.join(input_folder, 'test', 'defog'),\n]\ntrain_folders = [  \n    os.path.join(input_folder, 'train', 'defog'),\n]","metadata":{"execution":{"iopub.status.busy":"2023-04-17T15:01:20.517574Z","iopub.execute_input":"2023-04-17T15:01:20.518388Z","iopub.status.idle":"2023-04-17T15:01:20.525348Z","shell.execute_reply.started":"2023-04-17T15:01:20.518344Z","shell.execute_reply":"2023-04-17T15:01:20.523926Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sh = np.zeros([1,100]);\nsh_num = 0;\nwh = np.zeros([1,100]);\nwh_num = 0;\nth = np.zeros([100,1]);\nth_num = 0;\n\nfor folder in train_folders:\n    for fn in os.listdir(folder):\n        data1 = pd.read_csv(os.path.join(folder, fn));\n        ex = (data1.AccML**2 + data1.AccAP**2 + data1.AccV**2)**(.5);\n        ex = ex-1;\n        N = len(ex);\n        for i in range(N):\n            if i > 100 and data1.StartHesitation[i] and not data1.StartHesitation[i-1] and i < N-100:\n                sh = sh + ex[i-50:i+50].to_numpy();\n                sh_num = sh_num + 1;\n            if i > 100 and data1.Turn[i] and not data1.Turn[i-1] and i < N-100:\n                th = th + ex[i-50:i+50].to_numpy();\n                th_num = th_num + 1;\n            if i > 100 and data1.Walking[i] and not data1.Walking[i-1] and i < N-100:\n                wh = wh + ex[i-50:i+50].to_numpy();\n                wh_num = wh_num + 1;\nsh = sh / sh_num;\nth = th / th_num;\nwh = wh / wh_num;","metadata":{"execution":{"iopub.status.busy":"2023-04-17T15:29:18.916686Z","iopub.execute_input":"2023-04-17T15:29:18.917108Z","iopub.status.idle":"2023-04-17T15:36:35.180053Z","shell.execute_reply.started":"2023-04-17T15:29:18.917067Z","shell.execute_reply":"2023-04-17T15:36:35.178642Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sh = np.reshape(sh,sh.size);\nplot(np.linspace(-50,50,100),sh);","metadata":{"execution":{"iopub.status.busy":"2023-04-17T15:37:45.258812Z","iopub.execute_input":"2023-04-17T15:37:45.259293Z","iopub.status.idle":"2023-04-17T15:37:45.481896Z","shell.execute_reply.started":"2023-04-17T15:37:45.259249Z","shell.execute_reply":"2023-04-17T15:37:45.480621Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"wh = np.reshape(wh,wh.size);\nplot(np.linspace(-50,50,100),wh);","metadata":{"execution":{"iopub.status.busy":"2023-04-17T15:37:48.079626Z","iopub.execute_input":"2023-04-17T15:37:48.080076Z","iopub.status.idle":"2023-04-17T15:37:48.244069Z","shell.execute_reply.started":"2023-04-17T15:37:48.080035Z","shell.execute_reply":"2023-04-17T15:37:48.242732Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"th = np.reshape(th,th.size);\nplot(np.linspace(-50,50,100),th);","metadata":{"execution":{"iopub.status.busy":"2023-04-17T15:38:11.694635Z","iopub.execute_input":"2023-04-17T15:38:11.695071Z","iopub.status.idle":"2023-04-17T15:38:11.864872Z","shell.execute_reply.started":"2023-04-17T15:38:11.695029Z","shell.execute_reply":"2023-04-17T15:38:11.863455Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sh_starts = np.zeros([1]);\nsh_ends = np.zeros([1]);\nwh_starts = np.zeros([1]);\nwh_ends = np.zeros([1]);\nth_starts = np.zeros([1]);\nth_ends = np.zeros([1]);\n\nfor folder in train_folders:\n    for fn in os.listdir(folder):\n        data1 = pd.read_csv(os.path.join(folder, fn));\n        N = len(data1.AccML);\n        for i in range(N):\n            if i>pad and data1.Turn[i] and not data1.Turn[i-1]:\n                np.append(th_starts,i-pad);\n            if i<N-pad and data1.Turn[i] and not data1.Turn[i+1]:\n                np.append(th_ends,i+pad);\n            if i>pad and data1.Walking[i] and not data1.Walking[i-1]:\n                np.append(wh_starts,i-pad);\n            if i<N-pad and data1.Walking[i] and not data1.Walking[i+1]:\n                np.append(wh_ends,i+pad);\n            if i>pad and data1.StartHesitation[i] and not data1.StartHesitation[i-1]:\n                np.append(sh_starts,i-pad);\n            if i<N-pad and data1.StartHesitation[i] and not data1.StartHesitation[i+1]:\n                np.append(sh_ends,i+pad);","metadata":{"execution":{"iopub.status.busy":"2023-04-17T15:40:31.119308Z","iopub.execute_input":"2023-04-17T15:40:31.119706Z","iopub.status.idle":"2023-04-17T15:53:45.846436Z","shell.execute_reply.started":"2023-04-17T15:40:31.119671Z","shell.execute_reply":"2023-04-17T15:53:45.844504Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data2 = data1[data1.Turn == True];\ndata3 = data1[data1.Turn == False];\nex2 = (data2.AccML**2 + data2.AccAP**2 + data2.AccV**2)**(.5);\nex3 = (data3.AccML**2 + data3.AccAP**2 + data3.AccV**2)**(.5);","metadata":{"execution":{"iopub.status.busy":"2023-04-18T20:01:03.501695Z","iopub.execute_input":"2023-04-18T20:01:03.502383Z","iopub.status.idle":"2023-04-18T20:01:03.539869Z","shell.execute_reply.started":"2023-04-18T20:01:03.502322Z","shell.execute_reply":"2023-04-18T20:01:03.538826Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#data1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/3e6987cb2d.csv');\ndata1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/4ec23c3d98.csv');","metadata":{"execution":{"iopub.status.busy":"2023-04-23T21:48:14.164164Z","iopub.execute_input":"2023-04-23T21:48:14.164626Z","iopub.status.idle":"2023-04-23T21:48:14.879597Z","shell.execute_reply.started":"2023-04-23T21:48:14.164577Z","shell.execute_reply":"2023-04-23T21:48:14.878211Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Fs = 100;\npadt = 1;\npad = Fs*padt;\nN = len(data1);\nt = 0;\nfor i in range(N):\n    if i>pad and data1.Turn[i] and not data1.Turn[i-1]:\n        t = t+1;\n\nstarts = np.zeros([t,1]);\nends = np.zeros([t,1]);\ns = 0;\ne = 0;\nfor i in range(N):\n    if i>pad and data1.Turn[i] and not data1.Turn[i-1]:\n        starts[s] = i-pad;\n        s = s+1;\n    \n    if i<N-pad and data1.Turn[i] and not data1.Turn[i+1]:\n        ends[e] = i+pad;\n        e = e+1;","metadata":{"execution":{"iopub.status.busy":"2023-04-24T18:01:38.780598Z","iopub.execute_input":"2023-04-24T18:01:38.780973Z","iopub.status.idle":"2023-04-24T18:01:41.147420Z","shell.execute_reply.started":"2023-04-24T18:01:38.780942Z","shell.execute_reply":"2023-04-24T18:01:41.145759Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"event = 3;\nex = (data1.AccML**2 + data1.AccAP**2 + data1.AccV**2)**(.5) - 1;\neventdata = ex[int(starts[event]):int(ends[event])];\neventauto = np.convolve(eventdata,np.flipud(eventdata));\neauto = eventauto\nwindow = np.zeros(len(eventauto));\nmid = int(len(eventauto)/2);\nl = 100;# int(len(eventauto)/4);\nwindow[(mid-l):(mid+l+1)] = np.blackman(2*l+1);\neventauto = eventauto * window;\neventpsd = np.abs(np.fft.fft(eventauto,10000));\n#plt.pyplot.subplot(2,1,1);\n#plot(np.linspace(0,50,5000),eventpsd[0:5000]);\nplt.pyplot.xlabel(\"Lag (s)\");\nplt.pyplot.title(\"Auto-Correlation\");\n#plt.pyplot.subplot(2,1,2);\nplot(np.linspace(-len(eventdata)/100,len(eventdata)/100,2*len(eventdata)-1),eauto);\n#plot(np.linspace(0,len(eventdata)/100,len(eventdata)),eventdata);","metadata":{"execution":{"iopub.status.busy":"2023-04-24T18:23:24.740589Z","iopub.execute_input":"2023-04-24T18:23:24.741046Z","iopub.status.idle":"2023-04-24T18:23:24.920085Z","shell.execute_reply.started":"2023-04-24T18:23:24.741010Z","shell.execute_reply":"2023-04-24T18:23:24.918645Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data2 = data1[data1.Turn == False];\ndata2 = data2[data2.StartHesitation == False];\ndata2 = data2[data2.Walking == False];\n\n#data2 = data1[data1.Turn == True];\nex = (data2.AccML**2 + data2.AccAP**2 + data2.AccV**2)**(.5) - 1;\nnonedata = ex;\nnoneauto = np.convolve(nonedata,np.flipud(nonedata));\nwindow = np.zeros(len(noneauto));\nmid = int(len(noneauto)/2);\nl = 100;\nwindow[(mid-l):(mid+l+1)] = np.blackman(2*l+1);\nnoneauto = noneauto * window;\nnonepsd = np.abs(np.fft.fft(noneauto,len(noneauto)*10));\n#plot(np.linspace(0,50,int(len(nonepsd)/2)),nonepsd[0:int(len(nonepsd)/2)]);\nplot(np.linspace(0,10,int(len(nonepsd)/10)),nonepsd[0:int(len(nonepsd)/10)]);\nplt.pyplot.xlabel(\"Frequency (Hz)\");","metadata":{"execution":{"iopub.status.busy":"2023-04-23T21:49:14.885773Z","iopub.execute_input":"2023-04-23T21:49:14.886346Z","iopub.status.idle":"2023-04-23T21:49:37.457364Z","shell.execute_reply.started":"2023-04-23T21:49:14.886305Z","shell.execute_reply":"2023-04-23T21:49:37.455865Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/15508c7f41.csv');\ndata1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/97e44fa8c3.csv');\ndata1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/0ec76d2d8e.csv');\ndata1 = pd.read_csv('/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/a057215d88.csv');","metadata":{"execution":{"iopub.status.busy":"2023-04-24T18:01:01.365267Z","iopub.execute_input":"2023-04-24T18:01:01.365608Z","iopub.status.idle":"2023-04-24T18:01:02.184347Z","shell.execute_reply.started":"2023-04-24T18:01:01.365581Z","shell.execute_reply":"2023-04-24T18:01:02.183117Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# turn = data1[data1.Turn == True];\nstart = data1[data1.StartHesitation == True];\nwalk = data1[data1.Walking == True];\n\nnone = data1[data1.Turn == False];\nnone = none[none.StartHesitation == False];\nnone = none[none.Walking == False];\n\nt = (turn.AccML**2 + turn.AccAP**2 + turn.AccV**2)**(.5) - 1;\ns = (start.AccML**2 + start.AccAP**2 + start.AccV**2)**(.5) - 1;\nw = (walk.AccML**2 + walk.AccAP**2 + walk.AccV**2)**(.5) - 1;\nn = (none.AccML**2 + none.AccAP**2 + none.AccV**2)**(.5) - 1;\n'''\nt = turn.AccML - (sum(turn.AccML) / len(turn.AccML));\ns = start.AccML - (sum(start.AccML) / len(start.AccML));\nw = walk.AccML - (sum(walk.AccML) / len(walk.AccML));\nn = none.AccML - (sum(none.AccML) / len(none.AccML));\n'''\nif len(t) < 100:\n    t = np.ones(500);\nif len(s) < 100:\n    s = np.ones(500);\nif len(w) < 100:\n    w = np.ones(500);\nif len(n) < 100:\n    n = np.ones(500);\n\ntauto = np.convolve(t,np.flipud(t));\nsauto = np.convolve(s,np.flipud(s));\nwauto = np.convolve(w,np.flipud(w));\nnauto = np.convolve(n,np.flipud(n));\n\ntwindow = np.zeros(len(tauto));\nswindow = np.zeros(len(sauto));\nwwindow = np.zeros(len(wauto));\nnwindow = np.zeros(len(nauto));\n\ntmid = int(len(tauto)/2);\nsmid = int(len(sauto)/2);\nwmid = int(len(wauto)/2);\nnmid = int(len(nauto)/2);\n\nl = 100;\ntwindow[(tmid-l):(tmid+l+1)] = np.blackman(2*l+1);\nswindow[(smid-l):(smid+l+1)] = np.blackman(2*l+1);\nwwindow[(wmid-l):(wmid+l+1)] = np.blackman(2*l+1);\nnwindow[(nmid-l):(nmid+l+1)] = np.blackman(2*l+1);\n\ntauto = tauto * twindow;\nsauto = sauto * swindow;\nwauto = wauto * wwindow;\nnauto = nauto * nwindow;\n\ntpsd = np.abs(np.fft.fft(tauto,len(tauto)*10));\nspsd = np.abs(np.fft.fft(sauto,len(sauto)*10));\nwpsd = np.abs(np.fft.fft(wauto,len(wauto)*10));\nnpsd = np.abs(np.fft.fft(nauto,len(nauto)*10));\n\nfig, ax = plt.pyplot.subplots(2,2);\n\nplt.pyplot.subplot(2,2,1);\nplot(np.linspace(0,50,int(len(tpsd)/2)),tpsd[0:int(len(tpsd)/2)]);\nplt.pyplot.title(\"Turn\");\nplt.pyplot.xlabel(\"Frequency (Hz)\");\nplt.pyplot.subplot(2,2,2);\nplot(np.linspace(0,50,int(len(spsd)/2)),spsd[0:int(len(spsd)/2)]);\nplt.pyplot.title(\"StartHesitation\")\nplt.pyplot.xlabel(\"Frequency (Hz)\");\nplt.pyplot.subplot(2,2,3);\nplot(np.linspace(0,50,int(len(wpsd)/2)),wpsd[0:int(len(wpsd)/2)]);\nplt.pyplot.title(\"Walking\")\nplt.pyplot.xlabel(\"Frequency (Hz)\");\nplt.pyplot.subplot(2,2,4);\nplot(np.linspace(0,50,int(len(npsd)/2)),npsd[0:int(len(npsd)/2)]);\nplt.pyplot.title(\"None\")\nplt.pyplot.xlabel(\"Frequency (Hz)\");\nfig.tight_layout()","metadata":{"execution":{"iopub.status.busy":"2023-04-23T22:00:15.459594Z","iopub.execute_input":"2023-04-23T22:00:15.460028Z","iopub.status.idle":"2023-04-23T22:00:22.142701Z","shell.execute_reply.started":"2023-04-23T22:00:15.459990Z","shell.execute_reply":"2023-04-23T22:00:22.141289Z"}},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"binw = 200;\nbins = int(len(data1) / binw);\nspect = np.zeros([bins,500]);\n\n#ex = (data1.AccML**2 + data1.AccAP**2 + data1.AccV**2)**(.5) - 1;\nex = data1.AccML**2 + data1.AccAP**2;\nex = ex - (sum(ex))/len(ex);\n\n\nfor i in range(bins):\n    temp = np.convolve(ex[i*binw:i*binw + binw],np.flipud(ex[i*binw:i*binw + binw]));\n    win = np.zeros(2*binw-1);\n    mid = binw;\n    l = 50;\n    win[(mid-l):(mid+l+1)] = np.blackman(2*l+1);\n    temp = temp * win;\n    spect[i,:] = np.fft.fft(temp,1000)[0:500];\n    spect[i,:] = abs(spect[i,:]) / max(abs(spect[i,:]));\n    \n    ","metadata":{"execution":{"iopub.status.busy":"2023-04-24T18:01:15.482719Z","iopub.execute_input":"2023-04-24T18:01:15.483066Z","iopub.status.idle":"2023-04-24T18:01:15.586860Z","shell.execute_reply.started":"2023-04-24T18:01:15.483040Z","shell.execute_reply":"2023-04-24T18:01:15.585839Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nax1 = plt.pyplot.subplot(2,1,1)\nax1.imshow(np.flipud(spect.T), extent=[0,bins,0,50])\nax1.set_aspect('auto')\nplt.pyplot.ylabel(\"Frequency (Hz)\");\nax1.figsize=(3,3)\n\nax2 = plt.pyplot.subplot(2,1,2)\nplt.pyplot.xlim([0,bins])\nplt.pyplot.ylabel(\"Turn (T/F)\");\nax2.plot(np.linspace(0,bins,len(data1)),data1.Turn)","metadata":{"execution":{"iopub.status.busy":"2023-04-24T18:01:24.029466Z","iopub.execute_input":"2023-04-24T18:01:24.029883Z","iopub.status.idle":"2023-04-24T18:01:24.402505Z","shell.execute_reply.started":"2023-04-24T18:01:24.029840Z","shell.execute_reply":"2023-04-24T18:01:24.401728Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.decomposition import PCA","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"group = ['/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/850748a138.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/88c6d288fb.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/95e9824e15.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/02ea782681.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/06414383cf.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/092b4c1819.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/6dc94db321.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/7030643376.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/68e7e02a47.csv',\n        '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/77d7d95074.csv',];\n\ngroup2 = [\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/9f2b3555c8.csv',\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/c50f164e00.csv',\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/0c55be4384.csv',\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/0d7ab3a9f9.csv',\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/7a467da4f3.csv',\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/8282009100.csv',\n]\ngroup3 = [\n    '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/test/defog/02ab235146.csv',\n]","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#DEFOG\nr = 100;\nraw_data_t = np.zeros([r,4]);\nraw_data_v = np.zeros([r,4]);\nraw_data_e = np.zeros([r,3]);\nfor f in group:\n    temp = pd.read_csv(f);\n    temp = temp.to_numpy();\n    temp[:,4] = temp[:,4] + 2*temp[:,5] + 3*temp[:,6];\n    raw_data_t = np.concatenate((raw_data_t,temp[:,1:5]));\n    raw_data_t = np.concatenate((raw_data_t,np.zeros([r,4])));\n    \n    print(temp.shape);\n    \nfor f in group2:\n    temp = pd.read_csv(f);\n    temp = temp.to_numpy();\n    \n    temp[:,4] = temp[:,4] + 2*temp[:,5] + 3*temp[:,6];\n    raw_data_v = np.concatenate((raw_data_v,temp[:,1:5]));\n    raw_data_v = np.concatenate((raw_data_v,np.zeros([r,4])));\n    \n    print(temp.shape);\n    \n\nfor f in group3:\n    temp = pd.read_csv(f);\n    temp = temp.to_numpy();\n    \n    raw_data_e = np.concatenate((raw_data_e,temp[:,1:4]));\n    raw_data_e = np.concatenate((raw_data_e,np.zeros([r,3])));\n    \n    print(temp.shape);","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#DEFOG\nn = len(raw_data_t);\nfft_data_t = np.zeros([n-2*r,r]);\nl = 100;\nfor i in range(n):\n    if i > r and i < n-r:\n        temp = (raw_data_t[i-r:i+r+1,0]**2 + raw_data_t[i-r:i+r+1,1]**2 + raw_data_t[i-r:i+r+1,2]**2)**(.5)\n        temp = temp - (sum(temp)/len(temp));\n        fft_data_t[i-r] = np.abs(np.fft.fft(temp))[0:r];\n\na = raw_data_t[r:n-r,3] == 0;\nb = raw_data_t[r:n-r,3] == 1;\nc = raw_data_t[r:n-r,3] == 2;\nd = raw_data_t[r:n-r,3] == 3;\n\nprint(sum(a));\nprint(sum(b));\nprint(sum(c));\nprint(sum(d));\n\nzero = fft_data_t[a,:];\none = fft_data_t[b,:];\ntwo = fft_data_t[c,:];\nthree = fft_data_t[d,:];\n\ntarget = 60000;\n\np0 = target / sum(a);\np1 = int(target / sum(b));\np2 = target / sum(c);\np3 = int(target / sum(d));\n\nout0 = np.zeros(len(zero),dtype=bool);\nout2 = np.zeros(len(two),dtype=bool);\nfor i in range(len(zero)):\n    if np.random.uniform() < p0:\n        out0[i] = True;  \n        \nfor i in range(len(two)):\n    if np.random.uniform() < p2:\n        out2[i] = True;\n        \nout1 = np.zeros((sum(b)*p1,l));\nfor i in range(p1):\n    out1[i*sum(b):(i+1)*sum(b)] = one;\n    \nout3 = np.zeros((sum(d)*p3,l));\nfor i in range(p3):\n    out3[i*sum(d):(i+1)*sum(d)] = three;\n    \ntest = zero[out0,:];\ntest = np.concatenate((test,out1));\ntest = np.concatenate((test,two[out2,:]));\ntest = np.concatenate((test,out3));\n\ntest2 = np.zeros(len(zero[out0,:]));\ntest2 = np.concatenate((test2,np.ones(len(out1))));\ntest2 = np.concatenate((test2,2*np.ones(len(two[out2,:]))));\ntest2 = np.concatenate((test2,3*np.ones(len(out3))));\n\nbal_fft_data_t = test;\nbal_fft_data_ty = test2;        \n\nn = len(raw_data_v);\nfft_data_v = np.zeros([n-2*r,r]);\nfor i in range(n):\n    if i > r and i < n-r:\n        temp = (raw_data_v[i-r:i+r+1,0]**2 + raw_data_v[i-r:i+r+1,1]**2 + raw_data_v[i-r:i+r+1,2]**2)**(.5)\n        temp = temp - (sum(temp)/len(temp));\n        fft_data_v[i-r] = np.abs(np.fft.fft(temp))[0:r];\n        \n\nn = len(raw_data_e);\nfft_data_ve = np.zeros([n-2*r,l]);\nfor i in range(n):\n    if i > r and i < n-r:\n        temp = (raw_data_e[i-r:i+r+1,0]**2 + raw_data_e[i-r:i+r+1,1]**2 + raw_data_e[i-r:i+r+1,2]**2)**(.5)\n        temp = temp - (sum(temp)/len(temp));\n        fft_data_e[i-r] = np.abs(np.fft.fft(temp))[0:l];\n        \nfrom sklearn.preprocessing import StandardScaler\nscaler = StandardScaler();\nfft_data_t = scaler.fit_transform(fft_data_t);\nfft_data_v = scaler.fit_transform(fft_data_v);\nfft_data_e = scaler.fit_transform(fft_data_e);\nbal_fft_data_t = scaler.fit_transform(bal_fft_data_t);\n\nn = len(raw_data_t);\n#train_data = fft_data_t;\n#train_y = raw_data_t[r:n-r,3];\ntrain_data = bal_fft_data_t;\ntrain_y = bal_fft_data_ty;\nn = len(raw_data_v);\nval_data = fft_data_v;\nval_y = raw_data_v[r:n-r,3];\ntest_data = fft_data_e;\n\nlowf = 0;\nhighf = 50;\n\nlf = lowf * 2;\nhf = highf * 2;\n\ntrain = train_data[:,lf:hf];\ntest = val_data[:,lf:hf];\n\npca = PCA(n_components=25);\ntrain = pca.fit_transform(train_data);\ntest = pca.fit_transform(val_data);\ntest2 = pca.fit_transform(test_data);\n\ndata = train;\nlabel = train_y;\ntest = test;\ntest_Y = val_y;\ndtrain = xgb.DMatrix(data, label=label)\ndtest = xgb.DMatrix(test ,label = test_Y)\n\n#param = {'max_depth':5,'objective':'multi:softmax','eval_metric': 'mlogloss','num_class':4,'subsample':.25,'max_delta_step':1}\n#num_round = 10;\n\nparam = {'max_depth':15,'objective':'multi:softmax','eval_metric': 'mlogloss','num_class':4,'max_delta_step':0}#,'scale_pos_weight':spw} \nnum_round = 13;\n\nd = dict()\nw = [(dtrain,'train'),(dtest,'test')]\n\nbst = xgb.train(param,dtrain,num_round,w,evals_result = d)\n\nvalpred = bst.predict(xgb.DMatrix(test))\ntrainpred = bst.predict(xgb.DMatrix(data))\ntestpred = bst.predict(xgb.DMatrix(test2))\n\nTrueY = val_y;\nPredY = valpred;\n\nmat = np.zeros([4,4]);\n#No Issue, Start, Turn, Walk\n#[Predicted , True]\n\nmat[0,0] = sum((TrueY == 0) * (PredY == 0));\nmat[0,1] = sum((TrueY == 1) * (PredY == 0));\nmat[0,2] = sum((TrueY == 2) * (PredY == 0));\nmat[0,3] = sum((TrueY == 3) * (PredY == 0));\nmat[1,0] = sum((TrueY == 0) * (PredY == 1));\nmat[1,1] = sum((TrueY == 1) * (PredY == 1));\nmat[1,2] = sum((TrueY == 2) * (PredY == 1));\nmat[1,3] = sum((TrueY == 3) * (PredY == 1));\nmat[2,0] = sum((TrueY == 0) * (PredY == 2));\nmat[2,1] = sum((TrueY == 1) * (PredY == 2));\nmat[2,2] = sum((TrueY == 2) * (PredY == 2));\nmat[2,3] = sum((TrueY == 3) * (PredY == 2));\nmat[3,0] = sum((TrueY == 0) * (PredY == 3));\nmat[3,1] = sum((TrueY == 1) * (PredY == 3));\nmat[3,2] = sum((TrueY == 2) * (PredY == 3));\nmat[3,3] = sum((TrueY == 3) * (PredY == 3));\n\nmat[:,0] = mat[:,0] / sum(TrueY == 0);\nmat[:,1] = mat[:,1] / max(1,sum(TrueY == 1));\nmat[:,2] = mat[:,2] / sum(TrueY == 2);\nmat[:,3] = mat[:,3] / sum(TrueY == 3);\n\nmat = (mat * 1000).astype(int) / 10;\nmat","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#TDCS\n#TDCS\ntrain_folders = [  \n    os.path.join(input_folder, 'train', 'tdcsfog'),\n]\ng1c = 500;\ng2c = 700;\ng3c = 833;\n\ni = 0;\nr = 128;\nraw_data_t = np.zeros([r,4]);\nraw_data_v = np.zeros([r,4]);\nraw_data_e = np.zeros([r,3]);\n\nfor folder in train_folders:\n    for fn in os.listdir(folder):\n        series_id = fn.split('.')[0]\n        series = pd.read_csv(os.path.join(folder, fn))\n        temp = series.to_numpy()\n        if i < g1c:\n            temp[:,4] = temp[:,4] + 2*temp[:,5] + 3*temp[:,6];\n            raw_data_t = np.concatenate((raw_data_t,temp[:,1:5]));\n            raw_data_t = np.concatenate((raw_data_t,np.zeros([r,4])));\n            #print(temp.shape);\n    \n        if i > g1c and i < g2c:\n            temp[:,4] = temp[:,4] + 2*temp[:,5] + 3*temp[:,6];\n            raw_data_v = np.concatenate((raw_data_v,temp[:,1:5]));\n            raw_data_v = np.concatenate((raw_data_v,np.zeros([r,4])));\n            #print(temp.shape);\n        \n        if i > g2c and i < g3c:\n            raw_data_e = np.concatenate((raw_data_e,temp[:,1:4]));\n            raw_data_e = np.concatenate((raw_data_e,np.zeros([r,3])));\n            print(temp.shape);\n        \n        i = i + 1;\n\nn = len(raw_data_t);\nl = 128;\nfft_data_t = np.zeros([n-2*r,l]);\n#keep l <= 100, that is the halfway point(close enough)\n#l = 60 will be the 30Hz range\n#l = 40 is capping at 20Hz\nfor i in range(n):\n    if i > r and i < n-r:\n        temp = (raw_data_t[i-r:i+r+1,0]**2 + raw_data_t[i-r:i+r+1,1]**2 + raw_data_t[i-r:i+r+1,2]**2)**(.5);\n        temp = temp - (sum(temp)/len(temp));\n        fft_data_t[i-r] = np.abs(np.fft.fft(temp))[0:l];\n        if i % 10000 == 0:\n            print(i, \"Percent Done: \", i/n);\n\n#TDCS\nn = len(raw_data_t);\n\nprint(sum(raw_data_t[:,3] == 0))\nprint(sum(raw_data_t[:,3] == 1))\nprint(sum(raw_data_t[:,3] == 2))\nprint(sum(raw_data_t[:,3] == 3))\n\na = raw_data_t[r:n-r,3] == 0;\nb = raw_data_t[r:n-r,3] == 1;\nc = raw_data_t[r:n-r,3] == 2;\nd = raw_data_t[r:n-r,3] == 3;\n\nprint(sum(a));\nprint(sum(b));\nprint(sum(c));\nprint(sum(d));\n\nzero = fft_data_t[a,:];\none = fft_data_t[b,:];\ntwo = fft_data_t[c,:];\nthree = fft_data_t[d,:];\n\ntarget = 60000;\n\np0 = target / sum(a);\np1 = int(target / max(1,sum(b)));\np2 = target / sum(c);\np3 = int(target / max(1,sum(d)));\n\nout0 = np.zeros(len(zero),dtype=bool);\nout2 = np.zeros(len(two),dtype=bool);\nfor i in range(len(zero)):\n    if np.random.uniform() < p0:\n        out0[i] = True;  \n        \nfor i in range(len(two)):\n    if np.random.uniform() < p2:\n        out2[i] = True;\n        \nout1 = np.zeros((sum(b)*p1,l));\nfor i in range(p1):\n    out1[i*sum(b):(i+1)*sum(b)] = one;\n    \nout3 = np.zeros((sum(d)*p3,l));\nfor i in range(p3):\n    out3[i*sum(d):(i+1)*sum(d)] = three;\n    \ntest = zero[out0,:];\ntest = np.concatenate((test,out1));\ntest = np.concatenate((test,two[out2,:]));\ntest = np.concatenate((test,out3));\n\ntest2 = np.zeros(len(zero[out0,:]));\ntest2 = np.concatenate((test2,np.ones(len(out1))));\ntest2 = np.concatenate((test2,2*np.ones(len(two[out2,:]))));\ntest2 = np.concatenate((test2,3*np.ones(len(out3))));\n\nbal_fft_data_t = test;\nbal_fft_data_ty = test2;\n         \nprint(sum(bal_fft_data_ty == 0))\nprint(sum(bal_fft_data_ty == 1))\nprint(sum(bal_fft_data_ty == 2))\nprint(sum(bal_fft_data_ty == 3))\n\n#TDCS\nn = len(raw_data_v);\nfft_data_v = np.zeros([n-2*r,l]);\nfor i in range(n):\n    if i > r and i < n-r:\n        temp = (raw_data_v[i-r:i+r+1,0]**2 + raw_data_v[i-r:i+r+1,1]**2 + raw_data_v[i-r:i+r+1,1]**2)**(.5)\n        #temp = raw_data_t[i-r:i+r+1,1];\n        #temp = raw_data_t[i-r:i+r+1,2];\n        #temp = raw_data_t[i-r:i+r+1,3];\n        temp = temp - (sum(temp)/len(temp));\n        fft_data_v[i-r] = np.abs(np.fft.fft(temp))[0:l];\n        \nn = len(raw_data_e);\nfft_data_e = np.zeros([n-2*r,l]);\nfor i in range(n):\n    if i > r and i < n-r:\n        temp = (raw_data_e[i-r:i+r+1,0]**2 + raw_data_e[i-r:i+r+1,1]**2 + raw_data_e[i-r:i+r+1,2]**2)**(.5)\n        temp = temp - (sum(temp)/len(temp));\n        fft_data_e[i-r] = np.abs(np.fft.fft(temp))[0:l];        \n        \nscaler = StandardScaler();\n#fft_data_t = scaler.fit_transform(fft_data_t);\nbal_fft_data_t = scaler.fit_transform(bal_fft_data_t)\nfft_data_v = scaler.fit_transform(fft_data_v);\n\nn = len(raw_data_t);\ntrain_data = bal_fft_data_t;\ntrain_y = bal_fft_data_ty;\nn = len(raw_data_v);\nval_data = fft_data_v;\nval_y = raw_data_v[r:n-r,3];\n\nlowf = 0;\nhighf = 30;\n\nlft = lowf * 2;\nhft = highf * 2;\n\ntrain = train_data[:,lft:hft];\ntrain_Y = train_y;\n\ntest = val_data[:,lft:hft];\ntest_Y = val_y;\n\n\n\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = train;\nlabel = train_y;\n#test = test;\n#test_Y = val_y;\ndtrain = xgb.DMatrix(data, label=label)\ndtest = xgb.DMatrix(test ,label = test_Y)\n\n#spw = sum(train_y) / len(train_y);\n#spw = 1 / spw;\n#'subsample':.9\n#param = {'max_depth':15,'objective':'multi:softmax','eval_metric': 'mlogloss','num_class':4,'max_delta_step':0}#,'scale_pos_weight':spw} \n#num_round = 13;\n\nparam = {'max_depth':15,'objective':'multi:softmax','eval_metric': 'mlogloss','num_class':4,'max_delta_step':3}#,'scale_pos_weight':spw} \nnum_round = 12;#18;\n\nd = dict()\nw = [(dtrain,'train'),(dtest,'test')]\n\nbst2 = xgb.train(param,dtrain,num_round,w,evals_result = d)\n\nvalpred = bst2.predict(xgb.DMatrix(test))\ntrainpred = bst2.predict(xgb.DMatrix(data))\ntestpred = bst2.predict(xgb.DMatrix(test2))\n\nTrueY = val_y;\nPredY = valpred;\n\nmat = np.zeros([4,4]);\n#No Issue, Start, Turn, Walk\n#[Predicted , True]\n\nmat[0,0] = sum((TrueY == 0) * (PredY == 0));\nmat[0,1] = sum((TrueY == 1) * (PredY == 0));\nmat[0,2] = sum((TrueY == 2) * (PredY == 0));\nmat[0,3] = sum((TrueY == 3) * (PredY == 0));\nmat[1,0] = sum((TrueY == 0) * (PredY == 1));\nmat[1,1] = sum((TrueY == 1) * (PredY == 1));\nmat[1,2] = sum((TrueY == 2) * (PredY == 1));\nmat[1,3] = sum((TrueY == 3) * (PredY == 1));\nmat[2,0] = sum((TrueY == 0) * (PredY == 2));\nmat[2,1] = sum((TrueY == 1) * (PredY == 2));\nmat[2,2] = sum((TrueY == 2) * (PredY == 2));\nmat[2,3] = sum((TrueY == 3) * (PredY == 2));\nmat[3,0] = sum((TrueY == 0) * (PredY == 3));\nmat[3,1] = sum((TrueY == 1) * (PredY == 3));\nmat[3,2] = sum((TrueY == 2) * (PredY == 3));\nmat[3,3] = sum((TrueY == 3) * (PredY == 3));\n\nmat[:,0] = mat[:,0] / sum(TrueY == 0);\nmat[:,1] = mat[:,1] / max(1,sum(TrueY == 1));\nmat[:,2] = mat[:,2] / sum(TrueY == 2);\nmat[:,3] = mat[:,3] / sum(TrueY == 3);\n\nmat = (mat * 1000).astype(int) / 10;\nmat","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Submission Code, for use after both classifiers\ntest_folders = [\n    os.path.join(input_folder, 'test', 'tdcsfog'),    \n    os.path.join(input_folder, 'test', 'defog'),\n]\n\n\nsubmission_list = []\nfor folder in test_folders:\n    for fn in os.listdir(folder):\n        series_id = fn.split('.')[0]\n        series = pd.read_csv(os.path.join(folder, fn))\n        series['Id'] = series['Time'].apply(lambda time: f\"{series_id}_{time}\")\n        series['StartHesitation'] = 0\n        series['Turn'] = 0\n        series['Walking'] = 0\n        \n        if folder == '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/test/defog':\n            r = 100;\n            l = 100;\n            f = series.to_numpy();\n            n = len(f);\n            fft_data_v = np.zeros([n-2*r,l]);\n            for i in range(n):\n                if i > r and i < n-r:\n                    temp = (f[i-r:i+r+1,1]**2 + f[i-r:i+r+1,2]**2 + f[i-r:i+r+1,3]**2)**(.5)\n                    temp = temp - (sum(temp)/len(temp));\n                    fft_data_v[i-r] = np.abs(np.fft.fft(temp))[0:l];\n            \n            fft_data_v = scaler.fit_transform(fft_data_v);\n            \n            fft_data_v = fft_data_v[:,lf:hf];\n            \n            valpred = bst.predict(xgb.DMatrix(fft_data_v)); \n            for i in range(len(valpred)):\n                if valpred[i] == 1:\n                    series.loc[i+r,\"StartHesitation\"] = 1;\n                if valpred[i] == 2:\n                    series.loc[i+r,\"Turn\"] = 1;\n                if valpred[i] == 3:\n                    series.loc[i+r,\"Walking\"] = 1;\n        \n        if folder == '/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/test/tdcsfog':\n            r = 128;\n            l = 128;\n            f = series.to_numpy();\n            n = len(f);\n            fft_data_v = np.zeros([n-2*r,l]);\n            for i in range(n):\n                if i > r and i < n-r:\n                    temp = (f[i-r:i+r+1,1]**2 + f[i-r:i+r+1,2]**2 + f[i-r:i+r+1,3]**2)**(.5)\n                    temp = temp - (sum(temp)/len(temp));\n                    fft_data_v[i-r] = np.abs(np.fft.fft(temp))[0:l];\n            \n            fft_data_v = scaler.fit_transform(fft_data_v);\n            \n            fft_data_v = fft_data_v[:,lft:hft];\n            \n            valpred = bst2.predict(xgb.DMatrix(fft_data_v)); \n            for i in range(len(valpred)):\n                if valpred[i] == 1:\n                    series.loc[i+r,\"StartHesitation\"] = 1;\n                if valpred[i] == 2:\n                    series.loc[i+r,\"Turn\"] = 1;\n                if valpred[i] == 3:\n                    series.loc[i+r,\"Walking\"] = 1;\n        \n        submission_list.append(series[['Id', 'StartHesitation', 'Turn', 'Walking']])","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}