Parkinson‘s Freezing of Gait Prediction- baseline 学习

关注我的公众号YueTan进行交流探讨
欢迎关注数据比赛方案仓库 https://github.com/hongyingyue/Competition-solutions

base

time-series 🤝 tsflex - 0.237

def reader(f):
    try:
        df = pd.read_csv(f, index_col="Time", usecols=['Time', 'AccV', 'AccML', 'AccAP', 'StartHesitation', 'Turn' , 'Walking'])
        df['Id'] = f.split('/')[-1].split('.')[0]
        df = pd.merge(df, tasks[['Id','t_kmeans']], how='left', on='Id').fillna(-1)
        df = pd.merge(df, subjects[['Id','s_kmeans']], how='left', on='Id').fillna(-1)
        df_feats = fc.calculate(df, return_df=True, include_final_window=True, approve_sparsity=True, window_idx="begin").astype(np.float32)
        df = df.merge(df_feats, how="left", left_index=True, right_index=True)
        df.fillna(method="ffill", inplace=True)
        return df
    except: pass
train = pd.concat([reader(f) for f in tqdm(train)]).fillna(0); print(train.shape)
cols = [c for c in train.columns if c not in ['Id', 'Time', 'StartHesitation', 'Turn' , 'Walking', 'Valid', 'Task','Event']]
pcols = ['StartHesitation', 'Turn' , 'Walking']
scols = ['Id', 'StartHesitation', 'Turn' , 'Walking']
  • 从tasks中增加kmeans类别
  • 从subject中增加kmean类别
  • 用tsflex增加时序特征【basic_feats, emg_feats】
  • ensemble.ExtraTreesRegressor同时预测三个目标

base

GroupKfold Cross-Validation tsflex-0.246

  • GroupKfold Cross Validation
def reader(f):
    try:
        df = pd.read_csv(f, index_col="Time", usecols=['Time', 'AccV', 'AccML', 'AccAP', 'StartHesitation', 'Turn' , 'Walking'])
        df['Id'] = f.split('/')[-1].split('.')[0]
        df['Module'] = pathlib.Path(f).parts[-2]
        df = pd.merge(df, tasks[['Id','t_kmeans']], how='left', on='Id').fillna(-1)
#         df = pd.merge(df, subjects[['Id','s_kmeans']], how='left', on='Id').fillna(-1)
        df = pd.merge(df, metadata_complex[['Id','Subject']+['Visit','Test','Medication','s_kmeans']], how='left', on='Id').fillna(-1)
        df_feats = fc.calculate(df, return_df=True, include_final_window=True, approve_sparsity=True, window_idx="begin").astype(np.float32)
        df = df.merge(df_feats, how="left", left_index=True, right_index=True)
        df.fillna(method="ffill", inplace=True)
        return df
    except: pass
  • 保留采用subject聚类特征,而是采用了meta_data中关于subject的特征

base

Simple EDA on Time for targets-0.306

import pathlib
def reader(f):
    try:
        df = pd.read_csv(f, index_col="Time", usecols=['Time', 'AccV', 'AccML', 'AccAP', 'StartHesitation', 'Turn' , 'Walking'])
        
        df['Id'] = f.split('/')[-1].split('.')[0]
        df['Module'] = pathlib.Path(f).parts[-2]
        
        df['Time_frac']=(df.index/df.index.max()).values#currently the index of data is actually "Time"
        
        df = pd.merge(df, tasks[['Id','t_kmeans']], how='left', on='Id').fillna(-1)
#         df = pd.merge(df, subjects[['Id','s_kmeans']], how='left', on='Id').fillna(-1)
        df = pd.merge(df, metadata_complex[['Id','Subject']+['Visit','Test','Medication','s_kmeans']], how='left', on='Id').fillna(-1)
        df_feats = fc.calculate(df, return_df=True, include_final_window=True, approve_sparsity=True, window_idx="begin").astype(np.float32)
        df = df.merge(df_feats, how="left", left_index=True, right_index=True)
        df.fillna(method="ffill", inplace=True)
        return df
    except: pass
train = pd.concat([reader(f) for f in tqdm(train)]).fillna(0); print(train.shape)
cols = [c for c in train.columns if c not in ['Id','Subject','Module', 'Time', 'StartHesitation', 'Turn' , 'Walking', 'Valid', 'Task','Event']]
pcols = ['StartHesitation', 'Turn' , 'Walking']
scols = ['Id', 'StartHesitation', 'Turn' , 'Walking']

测试时

df['Time_frac']=(df.index/df.index.max()).values#currently the index of data is actually "Time"
    df = pd.merge(df, tasks[['Id','t_kmeans']], how='left', on='Id').fillna(-1)
#     df = pd.merge(df, subjects[['Id','s_kmeans']], how='left', on='Id').fillna(-1)
    df = pd.merge(df, metadata_complex[['Id','Subject']+['Visit','Test','Medication','s_kmeans']], how='left', on='Id').fillna(-1)
    df_feats = fc.calculate(df, return_df=True, include_final_window=True, approve_sparsity=True, window_idx="begin")
  • 新特征
  • 模型LGB

base

Gait Prediction-0.311/0.283

base-nn-torch

PyTorch FOG End-to-End Baseline [LB 0.254]

base-nn-tf

Parkinson FoG Pred Conv1D Separate TF Model-0.296

  • 针对两种数据集分开建立模型训练,主要采用序列数据
_is_tdcs = basename(dirname(path)).startswith('tdcs')
df = pd.read_csv(path)  # 加载该序列数据

_cols = [*self.cfg.feature_list, *self.cfg.label_list, 'Valid', 'Task']  # 三个加速度,label 和Valid Task
self.valid_position = self.cfg.n_features + self.cfg.n_labels
self.task_position = self.valid_position + 1

# Pads past and future rows to dataframe values for indexing   # 选出需要的列,并padding
_values = df[cols].values.astype(np.float16)
return np.pad(_values, ((self.past_pad, self.future_pad),(0,0)), 'edge')

# 以上是单个——read
_values = [self._read(f) for f in df_paths]
        
self.mapping = []
_length = 0
for _value in _values:
    _shape = _value.shape[0]
    self.mapping.extend(range(_length+self.past_pad, _length+_shape-self.future_pad))
    _length += _shape

对于这个数据集,如何构建三维的关键在这里

  • 对于y,根据batch的index选择即可
  • 对于x, idx到过去的pad, idx到未来的pad, 中间还有间隔。也就是此baseline的关键
def _get_X_y(self, indices):
        _X = np.empty((len(indices), self.cfg.window_size, self.cfg.n_features), dtype=np.float16)
        for i, idx in enumerate(indices):
            _X[i] = self.values[idx-self.past_pad: idx+self.future_pad+1:self.cfg.wx, :self.cfg.n_features]
        return _X, self.values[indices, self.cfg.n_features:self.cfg.n_features+self.cfg.n_labels]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
帕金森病是一种慢性进行性神经系统疾病,它主要影响中枢神经系统,导致运动功能障碍和其他非运动症状。帕金森病的确切原因尚不清楚,但它与脑部多巴胺生成不足有关。 帕金森病的临床特点包括:震颤、肌肉僵硬、运动迟缓和不稳定。此外,患者还可能经历非运动症状,如抑郁、认知功能下降和自主神经功能紊乱。这使得帕金森病的诊断相对困难。 作为一种慢性疾病,帕金森病需要长期的管理和治疗。目前,药物疗法是主要的治疗方法,以增加脑内多巴胺的水平,从而改善患者的运动功能。然而,药物疗法并不能治愈疾病,只能缓解症状,而且在长期使用后可能出现副作用。 除了药物疗法外,康复训练也是帕金森病的重要治疗手段。康复训练可以帮助患者恢复功能,减轻症状,并提高生活质量。常见的康复训练包括物理治疗、语言治疗和认知训练等。 当然,帕金森病患者的照护也是至关重要的。患者需要在日常生活中得到支持和照顾,包括合理的饮食、规律的运动、良好的睡眠和定期的医疗随访。 总之,帕金森病是一种常见的神经系统疾病,主要表现为运动障碍和其他非运动症状。它需要综合治疗,包括药物疗法、康复训练和照护,以改善患者的生活质量。希望未来能有更多的研究和进展,以找到更有效的治疗方法,帮助患者管理和控制帕金森病。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YueTann

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值