-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWeAllWalk_CLA.py
More file actions
117 lines (101 loc) · 3.76 KB
/
WeAllWalk_CLA.py
File metadata and controls
117 lines (101 loc) · 3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import numpy as np
import os, sys
from scipy.stats import zscore
from pandas import read_csv
from architecturefns import *
from collections import OrderedDict
from copy import deepcopy
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True})
from datetime import datetime
from icecream import ic
import time
from pandas import read_csv
from plotty import *
from experimentsetup import *
from preprocessingandrecords import *
def dictprecisCLA(dataset,labels, DICTYPE):
print("DICTYPE: {}".format(DICTYPE))
NUMPAT = 8
CYCLELEN = 25
# YEH + PRECIS
ePRECIS = Experiment("PRECIS", [NUMPAT,CYCLELEN])
ROUNDS = 1
if DICTYPE=="RAND":
ROUNDS = 10
accrates = []
for R in range(ROUNDS):
use_dicts = []
numdicts = 0
for i in tqdm(range(len(dataset)),desc="Building Dictionaries"):
ts = zscore(dataset[i],nan_policy="omit")
d = None
if DICTYPE == "YEH":
d, _ = ePRECIS.make_exemplar(ts)
elif DICTYPE == "RAND":
d, _ = randdict(ts,NUMPAT,CYCLELEN)
use_dicts.append(d)
numdicts += 1
STARTTIME = time.time()
PRECISdistmat = ePRECIS.distmat_from_dicts(use_dicts)
ENDTIME = time.time()
accrate, _ = CLA_inference(PRECISdistmat,labels,numdicts)
print("{}+PRECIS accrate: {}".format(DICTYPE,accrate))
accrates.append(accrate)
# log = open("icdm_logofresults.txt", "a") # append mode
# # DATETIME,DICTYPE,DISTFN,NUMPAT,CYCLELEN,ENDTIME-STARTTIME,ACCRATE
# log.write("{}, {}, {}, {}, {}, {}, {}\n".format(datetime.now(),DICTYPE,"PRECIS",NUMPAT,CYCLELEN,ENDTIME-STARTTIME, accrate))
# log.close()
print("Average accrate over {} rounds: {}".format(ROUNDS,np.mean(accrates)))
return
if __name__ == "__main__":
main_dir = "wewalksubset_accelerometer" # allsites as potential dataset?
dataset = []
item = 0
fref = OrderedDict() # DISTMAT IDX
label_colors = OrderedDict()
idtoidx = OrderedDict()
labels = []
lens = []
for (root,dirs,files) in os.walk(main_dir):
print(len(files))
for f in files:
d = read_csv(main_dir+'/'+f,sep=",",header=None)
d = d.iloc[:,3] # AccelerationTimeStamp, timeStartingAt0, Acceleration-X, Acceleration-Y, Acceleration-Z, RMSValueOFXYZ
dataset.append(np.asarray(d)) # all rows, second column
lens.append(len(d))
txt = f[:-23]
txt = txt.replace("2R_","")
fref[item] = txt.replace("_"," ")
tmp = fref[item]
idtoidx[fref[item]] = item
if "ID6" in fref[item]:
label_colors[tmp] = 'r'
labels.append("ID6")
elif "ID7" in fref[item]:
label_colors[tmp] = 'g'
labels.append("ID7")
elif "ID8" in fref[item]:
label_colors[tmp] = 'b'
labels.append("ID8")
elif "ID11" in fref[item]:
label_colors[tmp] = 'c'
labels.append("ID11")
elif "ID13" in fref[item]:
label_colors[tmp] = 'm'
labels.append("ID13")
elif "ID14" in fref[item]:
label_colors[tmp] = 'y'
labels.append("ID14")
else:
label_colors[tmp] = 'k'
item += 1
# values,counts =np.unique(lens,return_counts=True)
# for i in zip(values,counts):
# print(i)
# catch22CLA(dataset,labels,"ALL")
# catch22CLA(dataset,labels,"BEST")
# badidxs = catch22CLA(dataset,labels,"FS")
# print("Catch22 Found NanVfs: {}".format(badidxs))
dictprecisCLA(dataset,labels,"YEH")
dictprecisCLA(dataset,labels,"RAND")