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降维, 人体活动识别, 低通滤波, 健身追踪, 加速度计, 动作识别, 可穿戴设备, 异常检测, 支持向量机, 数据清洗, 数据科学项目, 数据管道, 时间序列分析, 朴素贝叶斯, 机器学习, 特征工程, 监督学习, 神经网络, 聚类算法, 软件工程, 运动数据分析, 逆向工具, 重复计数, 陀螺仪, 随机森林