Newer
Older
x_train = make_windows_from_id(x_train_df, data_cols)
y_train = y_train_df['cpm'].values.reshape(-1, 1)
x_test = make_windows_from_id(x_test_df, data_cols)
# x_train = y_train_df['bvp_est'].values.reshape(-1, 1)
# x_test = y_test_df['bvp_est'].values.reshape(-1, 1)
print("minirocket transforming...")
x_train = np.swapaxes(x_train, 1, 2)
x_test = np.swapaxes(x_test, 1, 2)
minirocket = MiniRocketMultivariate()
x_train = minirocket.fit_transform(x_train)
x_test = minirocket.transform(x_test)
elif use_tsfresh:
x_train = train_df.iloc[:, 3:].values
x_test = test_df.iloc[:, 3:].values
y_test = test_df[lbl_str].values.reshape(-1, 1)
else:
x_train_df, y_train_df = get_df_windows(train_df,
df_win_task,
window_size=window_size,
window_shift=window_shift,
fs=fs,
cols=data_cols,
)
x_train = make_windows_from_id(x_train_df, data_cols)
x_test = make_windows_from_id(x_test_df, data_cols)
y_train = y_train_df['cpm'].values.reshape(-1, 1)
y_test = y_test_df[lbl_str].values.reshape(-1, 1)
transforms, model = model_training(mdl_str, x_train, y_train,
marker, validation_data=None,
overwrite=overwrite,
is_regression=True,
project_directory=project_dir,
window_size=int(window_size*fs),
extra_train=200,
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
)
if transforms is not None:
x_test = transforms.transform(x_test)
preds = model.predict(x_test)
eval_handle = EvalHandler(y_test.flatten(), preds.flatten(), subject,
pfh, mdl_str, overwrite=overwrite)
eval_handle.update_eval_history()
eval_handle.save_eval_history()
pp = PrettyPrinter()
pp.pprint(eval_handle.load_eval_history())
fig, ax = plt.subplots()
fig_title = '_'.join([mdl_str, subject]+[combi_str])
ax.plot(y_test)
ax.plot(preds)
ax.set_title(fig_title)
ax.legend([lbl_str, 'pred'])
fig_dir = join(project_dir, 'figures')
if not exists(fig_dir): mkdir(fig_dir)
fig.savefig(join(fig_dir, fig_title+".png"))
plt.close()
def arg_parser():
parser = argparse.ArgumentParser()
parser.add_argument("-m", '--model', type=str,
default='linreg',
choices=['linreg', 'ard', 'xgboost', 'knn',
'svr', 'cnn1d', 'fnn', 'lstm', 'ridge',
'elastic'],
)
parser.add_argument("-s", '--subject', type=int,
)
parser.add_argument("-f", '--feature_method', type=str,
default='minirocket',
choices=['tsfresh', 'minirocket', 'None']
)
parser.add_argument("-o", '--overwrite', type=int,
default=0,
)
parser.add_argument('--win_size', type=int,
default=12,
)
parser.add_argument('--win_shift', type=float,
default=0.2,
)
parser.add_argument('-l', '--lbl_str', type=str,
)
parser.add_argument('-tl', '--train_len', type=int,
parser.add_argument('-d', '--data_input', type=str,
default='imu',
help='imu, bvp, imu+bvp: select data cols for input'
)
parser.add_argument('-ts', '--test_standing', type=int,
default=0,
help='1 or 0 input, choose if standing data will be '\
'recorded or not'
)
args = parser.parse_args()
return args
if __name__ == '__main__':
# choose either intra or inter subject features to use for model training
# '[!M]*'
np.random.seed(100)
args = arg_parser()
mdl_str = args.model
subject = args.subject
feature_method = args.feature_method
window_size = args.win_size
window_shift = args.win_shift
lbl_str = args.lbl_str
train_len = args.train_len
overwrite = args.overwrite
data_input = args.data_input
test_standing = args.test_standing
print(args)
assert train_len>0,"--train_len must be an integer greater than 0"
sens_rr_model(subject,
window_size=window_size,
window_shift=window_shift,
lbl_str=lbl_str,
mdl_str=mdl_str,
overwrite=overwrite,
feature_method=feature_method,
train_len=train_len,
test_standing=test_standing,
data_input=data_input,
)
subjects = [subject_pre_string+str(i).zfill(2) for i in \
range(1, n_subject_max+1) if i not in imu_issues]
rr_func = partial(sens_rr_model,
window_size=window_size,
window_shift=window_shift,
lbl_str=lbl_str,
mdl_str=mdl_str,
overwrite=overwrite,
feature_method=feature_method,
train_len=train_len,
test_standing=test_standing,
data_input=data_input,
)
if mdl_str in ['fnn', 'lstm', 'cnn1d', 'elastic', 'ard', 'xgboost']:
for subject in subjects:
else:
ncpu = min(len(subjects), cpu_count())
with Pool(ncpu) as p: