时间序列数据集-Human Activity Recognition database (HAR)

该文介绍了用于人类活动识别的两个数据集,HAR和HAPT,它们基于30名志愿者的日常活动记录,使用智能手机上的加速度计和陀螺仪数据。数据经过预处理,包括滤波和特征提取,用于多变量时间序列的分类和聚类。HAPT数据集提供了原始采样数据,而HAR数据集包含了预处理后的特征向量和标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Human Activity Recognition database 由 30 名志愿者在携带带有嵌入式惯性传感器的腰部智能手机进行日常生活活动 (ADL) 的记录中构建而成。有两个版本的数据,第一个版本发布于2012年,更新后的版本发布于2015年。

version 1:UCI HAR Dataset

https://archive.ics.uci.edu/ml/datasets/human+activity+recognition+using+smartphones​archive.ics.uci.edu/ml/datasets/human+activity+recognition+using+smartphones

updated version:HAPT Data SET

Smartphone-Based Recognition of Human Activities and Postural Transitions Data Set​archive.ics.uci.edu/ml/datasets/Smartphone-Based+Recognition+of+Human+Activities+and+Postural+Transitions

Associated Tasks:

  • Multivariate Time-Series Classification 分类
  • Multivariate Time-Series Clustering 聚类

UCI HAR Dataset

基本信息

总共选取了30 名志愿者,年龄范围在19-48 岁年龄段。每个人在腰部佩戴智能手机进行六项活动(WALKING、WALKING_UPSTAIRS、WALKING_DOWNSTAIRS、SITTING、STANDING、LAYING)。同时使用嵌入式加速度计和陀螺仪采集数据,原始数据是以 50Hz 的恒定速率捕获了 3 轴线性加速度和 3 轴角速度。获得的数据集被随机分成两组,其中 70% 的志愿者(也就是21名志愿者)被选择用于生成训练数据,剩下30% 的志愿者(也就是9名志愿者)被选择用于生成测试数据。

在这个版本中,传感器的信号首选通过噪声滤波器进行预处理,然后每个样本以2.56秒这一固定的时间窗口选取数据,也就是128个采样点的数据。而传感器加速度信号具有重力和身体运动分量,使用巴特沃斯低通滤波器将其分离为身体加速度和重力加速度。假设了重力只有低频分量,因此使用了截止频率为 0.3 Hz 的滤波器。在每个时间窗口中,计算了时域和频域的特征向量,具体的计算方法可以看features_info.txt这个文件。

需要说明所有的数据都已经处理到[-1, 1]。

每一个样本都包含以下信息

  • 来自加速度计的三轴总加速度和估计的身体加速度;
  • 来自陀螺仪的三轴角速度;
  • 时域和频域的 561 个特征向量;
  • 标签;
  • 志愿者标识符;

文件目录如下

整个数据集包含以下文件

文件名说明
'README.txt'数据集说明文件
'features_info.txt'每一个样本特征计算方法说明文件
'features.txt'计算的时域和频域特征集合,包括所有特征的名称列表,总共561种特征
'activity_labels.txt'六项活动对应的标签(1-6)
'train/X_train.txt'训练集
'train/y_train.txt'训练标签
'train/subject_train.txt'一共7353行,每行标识为每个样本对应的志愿者编号,范围是1-30
'train/Inertial Signals/total_acc_x_train.txt'Shape: 7352*128。来自智能手机加速度计 X 轴的加速度信号,以标准重力单位“g”表示。 每行是一个128维的向量
'train/Inertial Signals/total_acc_y_train.txt'Shape: 7352*128。来自智能手机加速度计 Y 轴的加速度信号,以标准重力单位“g”表示。 每行是一个128维的向量
'train/Inertial Signals/total_acc_z_train.txt'Shape: 7352*128。来自智能手机加速度计 Z 轴的加速度信号,以标准重力单位“g”表示。 每行是一个128维的向量
'train/Inertial Signals/body_acc_x_train.txt'Shape: 7352*128。总加速度减去重力得到的身体加速度信号,X轴
'train/Inertial Signals/body_acc_y_train.txt'Shape: 7352*128。总加速度减去重力得到的身体加速度信号,Y轴
'train/Inertial Signals/body_acc_z_train.txt'Shape: 7352*128。总加速度减去重力得到的身体加速度信号,Z轴
'train/Inertial Signals/body_gyro_x_train.txt'Shape: 7352*128。陀螺仪测量的每个采样窗口样本的X轴的角速度矢量, 单位为单位为弧度/秒
'train/Inertial Signals/body_gyro_y_train.txt'Shape: 7352*128。陀螺仪测量的每个采样窗口样本的Y轴的角速度矢量, 单位为单位为弧度/秒
'train/Inertial Signals/body_gyro_z_train.txt'Shape: 7352*128。陀螺仪测量的每个采样窗口样本的Z轴的角速度矢量, 单位为单位为弧度/秒
'test/*'与训练集的说明相同

读取数据、特征向量、标签

  • 读取训练集中X轴的总加速度数据,其中每一行代表一个采样窗口的数据
# 读取X轴的总加速度数据, data_dir是HAR数据存放的路径
train_tot_acc_x = np.loadtxt(f'{data_dir}/train/Inertial Signals/total_acc_x_train.txt')
print(train_tot_acc_x.shape) # 打印数据大小
# 输出: (7352, 128)
  • 读取训练集中X轴的身体加速度数据,其中每一行代表一个采样窗口的数据
# 读取X轴的身体加速度数据, data_dir是HAR数据存放的路径
train_body_acc_x = np.loadtxt(f'{data_dir}/train/Inertial Signals/body_acc_x_train.txt')
print(train_body_acc_x.shape) # 打印数据大小
# 输出: (7352, 128)
  • 读取训练集中X轴的陀螺仪数据,其中每一行代表一个采样窗口的数据
# 读取X轴的陀螺仪数据, data_dir是HAR数据存放的路径
train_gyro_x = np.loadtxt(f'{data_dir}/train/Inertial Signals/body_gyro_x_train.txt')
print(train_gyro_x.shape) # 打印数据大小
# 输出: (7352, 128)
  • 读取每个采样窗口对应的特征向量,其中每一行代表一个采样窗口数据的所有特征
train_features = np.loadtxt(f'{data_dir}/train/X_train.txt')
print(train_features.shape) # 打印数据大小
# 输出: (7352, 561)
  • 读取每个采样窗口的标签
train_y = np.loadtxt(f'{data_dir}/train/y_train.txt')
print(train_y.shape) # 打印数据大小
# 输出: (7352,)

HAPT Data SET

在更新的数据集中,作者提供了原始的采样数据,而不是经过处理后的数据。

新的数据集中,删除了 train和test目录下的Inertial Signals/* 这个文件夹,提供了原始数据的文件夹RawData,文件目录如下所示

RawData目录下数据说明如下

  • RawData/acc_exp[XX]_user[YY].txt:用户YY生成的实验编号 为XX 的原始三轴加速度信号 。每一行是一个以 50Hz 频率捕获的三轴加速度样本。
# Example, 读取编号为01用户生成编号为01的原始三轴加速度数据
data = np.loadtxt(f'{data_dir}/RawData/acc_exp01_user01.txt')
print(data.shape)
# 输出:(20598, 3)
  • RawData/gyro_exp[XX]_user[YY].txt:用户YY生成的实验编号 为XX 的原始陀螺仪信号 。每一行是一个以 50Hz 频率捕获的三轴陀螺仪样本。
# Example, 读取编号为01用户生成编号为01的原始三轴陀螺仪数据
data = np.loadtxt(f'{data_dir}/RawData/gyro_exp01_user01.txt')
print(data.shape)
# 输出:(20598, 3)
  • RawData/labels.txt:标签文件,每一行5个数据,分别表示experiment number ID,user number ID,activity number ID,Label start point,Label end point。
data = np.loadtxt(f'{data_dir}/RawData/labels.txt')
print(data.shape)
# 输出:(1214, 5)
print(data[0]) # 打印第一个样本标签信息
# 输出:[1.000e+00 1.000e+00 5.000e+00 2.500e+02 1.232e+03]
# experiment number ID:1
# user number ID:1
# activity number ID:5
# Label start point:250
# Label end point:1232

使用HAR、HAPT进行实验的论文(不定期更新)

  1. Time-Series Representation Learning via Temporal and Contextual Contrasting. IJCAI2021.
  2. A new attention mechanism to classify multivariate time series. IJCAI2020.
  3. Unsupervised Representation Learning for Time Series with Temporal Neighborhood Coding. ICLR2021
  4. ......



 时间序列数据集-Human Activity Recognition database (HAR) - 知乎

LSTM(长短期记忆)是一种深度学习模型,被广泛应用于许多人工智能任务中。人类活动识别也是一个需要使用LSTM模型的任务。人类活动识别是指从传感器中收集的数据中,识别人类的行为。这些行为可以包括步行、跑步、垂直行走、骑车等等。 使用LSTM模型进行人类活动识别的过程包括以下步骤:首先,收集人类活动的数据,例如加速度计和陀螺仪的读数。接下来,对数据进行预处理和特征提取,例如计算加速度计的幅值、频率和方向。然后,将提取的特征输入到LSTM模型中进行训练,以捕捉不同活动之间的动态模式。最后,使用训练好的模型来预测新数据中的人类活动。 LSTM模型在人类活动识别中的应用具有多方面的优势。首先,LSTM模型可以处理时序数据,例如一个人在不同时间执行的不同活动,因此比其他机器学习模型更适用于此类任务。其次,LSTM模型可以自适应地学习人类活动的动态模式,并在新数据上进行预测,因此可以获得更好的识别精度和鲁棒性。此外,LSTM模型可以处理多通道数据,例如加速度计和陀螺仪的读数,并从中提取更丰富的特征,从而提高人类活动识别的准确性。 总之,LSTM模型是一种非常流行的深度学习模型,被广泛用于人类活动识别中。它可以处理时序数据、自适应地学习人类活动的动态模式,并处理多通道数据,因此可以获得更好的识别精度和鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值