ayman23-ds/ML-Project-Fitness-Tracker
GitHub: ayman23-ds/ML-Project-Fitness-Tracker
基于MetaMotion可穿戴传感器数据构建的端到端机器学习流水线,实现阻力训练动作识别与自动重复次数计数。
Stars: 0 | Forks: 0
# ML-Project-Fitness-Tracker
## **项目描述**
本项目旨在构建一个完整的机器学习流水线。流程始于读取、清洗和处理来自 CSV 文件的原始数据,随后将数据作为时间序列进行可视化,以理解其潜在模式。接着应用包括 Chauvenet 准则和局部离群因子(LOF)在内的高级异常值检测技术,以提高数据质量。之后,利用低通滤波器、主成分分析(PCA)和聚类等技术执行全面的特征工程阶段。在预测建模方面,训练并比较了多种机器学习算法——包括朴素贝叶斯、支持向量机(SVM)、随机森林和神经网络——以实现高预测准确率。最后,项目开发了一种定制算法,旨在自动且准确地计算动作重复次数。
## **数据集:MetaMotion 身体活动分析**
1. **概述**
该数据集包含由 **MetaMotion 可穿戴传感器** 生成的 **187 个原始 CSV 文件**。它捕捉了各种阻力训练运动的高分辨率运动数据,专为活动识别和重复次数计算任务而设计。
2. **传感器规格**
数据是使用两个主要的惯性测量单元(IMU)收集的:
* 3 轴加速度计:以 12.5Hz 的频率捕捉 $g$ 单位($x, y, z$ 轴)的线性加速度。
* 3 轴陀螺仪:以 25Hz 的频率捕捉 $deg/s$($x, y, z$ 轴)的角速度。
3. **元数据与命名规范**
每个文件都遵循严格的命名规范,这是自动数据标记的主要来源。元数据编码如下:
[参与者]-[标签]-[类别][组号]-[传感器类型].csv
- **参与者**:5 个不同的个体(标识为 A, B, C, D, E)。
- **活动标签**:
* bench: Bench Press(卧推)
* squat: Squat(深蹲)
* ohp: Overhead Press(过头推举)
* dead: Deadlift(硬拉)
* row: Barbell Row(杠铃划船)
* rest: Stationary/Non-active period(静止/非活动期)。
- **类别(强度)**:
* Heavy Set(大重量组):包含 5 次重复的高强度训练。
* Medium Set(中等重量组):包含 10 次重复的中等强度训练。
- **组号**:追踪同一练习的组数序列。
4. **数据特征**
数据集中的每条记录包含以下特征:
- epoch (ms) | Unix 时间戳(毫秒)
- time | 格式化的日期和时间 | YYYY-MM-DDTHH:MM:SS ||
- x-axis | X 轴上的加速度或角速度 | $g$ 或 $deg/s$ ||
- y-axis | Y 轴上的加速度或角速度 | $g$ 或 $deg/s$ ||
- z-axis | Z 轴上的加速度或角速度 | $g$ 或 $deg/s$ |
5. **数据挑战与目标**
- 多频率处理:同步 12.5Hz 的加速度计数据与 25Hz 的陀螺仪数据。
- 异常值移除:使用统计方法(如 Chauvenet 准则)清洗噪声。
- 特征工程:使用 PCA 和频域分析从原始时间数据中提取有意义的模式。
## **第 2 部分:数据处理与整合**
1. **数据聚合与元数据提取**
第一步涉及解析 187 个单独的 CSV 文件。开发了一个自定义脚本以遍历数据目录并从文件名中提取关键特征,包括:
- 参与者 ID。
- 运动标签。
- 类别(强度)。
2. **合并与重采样策略**
为了同步传感器,将加速度计(12.5Hz)和陀螺仪(25Hz)的数据进行了拼接。应用了重采样策略以统一频率:
- 频率:转换为 5Hz(每 200ms 一个样本)。
- 聚合方法:传感器轴使用平均值以平滑噪声,而分类标签保留“最后一个”值。
优势:这减少了时间未对齐问题,并创建了一个计算高效的数据集。
3. **数据集统计**
处理后,最终的统一数据集包含 9,009 行和 10 列。
A. 类别分布(目标平衡)
数据集在所有 6 个活动类别中显示出良好的平衡:
| Exercise | Samples |
| :--- | :--- |
| OHP (Overhead Press) | 1,676 |
| Bench Press | 1,665 |
| Squat | 1,610 |
| Deadlift | 1,531 |
| Row | 1,417 |
| Rest | 1,110 |
B. 参与者分布
数据分布在 5 个参与者中,确保模型能够在单个个体之外进行泛化:
- Participant A: 2,988 samples
- Participant E: 2,645 samples
- Participant C: 1,481 samples
- Participant D: 1,052 samples
- Participant B: 843 samples
4. **数据质量保证**
最终的完整性检查确认数据集是干净的,并已准备好进行建模:
- 缺失值:所有列中均为 0。
- 特征集:acc_x, acc_y, acc_z, gyr_x, gyr_y, gyr_z, participant, label, category, set。
标签:Apex, IMU传感器, MetaMotion, PCA降维, 人体活动识别, 低通滤波, 健身追踪, 加速度计, 动作识别, 可穿戴设备, 异常检测, 支持向量机, 数据清洗, 数据科学项目, 数据管道, 时间序列分析, 朴素贝叶斯, 机器学习, 特征工程, 监督学习, 神经网络, 聚类算法, 软件工程, 运动数据分析, 逆向工具, 重复计数, 陀螺仪, 随机森林