USC-HAD数据集介绍及仿真实验

本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!

USC-HAD数据集介绍

USC-HAD 中定义了 12 种不同的行为。数据集共包含 14 个人的行为数据,每个人每种行为进行 5 次试验,每次试验时长约 24 秒,试验中搜集安置在测试人腰间的一种叫 MotionNode 仪器的三轴加速度计与三轴陀螺仪读数,传感器采样频率 100Hz。

12项基本活动:

活动 描述 向前走 被试者沿着一条直线向前走 向左走 受试者沿着逆时针方向走了一圈 向右走 受试者按顺时针方向走了一圈 上楼 被试者多次向上走楼梯 下楼 被试者多次向下走楼梯 向前跑 受试者以一条直线向前跑 跳过 受试者保持在相同的位置,并不断地上下跳跃 坐 受试者坐在椅子上工作或休息。坐立不安也被认为属于这个类。 站 被试者站在那里,和某人说话 睡 被试者睡觉或躺在床上 上电梯 受试者乘坐一部上行电梯 下电梯 被试者乘坐一个下降的电梯

活动 描述
向前走 被试者沿着一条直线向前走
向左走 受试者沿着逆时针方向走了一圈
向右走 受试者按顺时针方向走了一圈
上楼 被试者多次向上走楼梯
下楼 被试者多次向下走楼梯
向前跑 受试者以一条直线向前跑
跳过 受试者保持在相同的位置,并不断地上下跳跃
受试者坐在椅子上工作或休息。坐立不安也被认为属于这个类。
被试者站在那里,和某人说话
被试者睡觉或躺在床上
上电梯 受试者乘坐一部上行电梯
下电梯 被试者乘坐一个下降的电梯

USC-HAD 数据集处理

USC-HAD 数据集是一个包含多种活动和多个受试者数据的集合,广泛用于人类活动识别(HAR)研究。以下是对 USC-HAD 数据集处理流程的详细分析,包括数据预处理、数据集分割、标准化处理以及数据保存等关键步骤。

1.环境设置

首先,需要导入处理数据所需的库和模块:

python 复制代码
import scipy.io as scio
import os
import numpy as np
import sys
from utils import *

2.参数配置

定义 USC 函数,该函数接受多种参数以配置数据集的处理方式:

python 复制代码
def USC(dataset_dir='./USC-HAD', WINDOW_SIZE=100, OVERLAP_RATE=0.1, SPLIT_RATE=(8, 2), VALIDATION_SUBJECTS={}, Z_SCORE=True, SAVE_PATH=os.path.abspath('../../HAR-datasets')):
    # 参数说明...

3.数据加载与预处理

受试者数据加载

遍历数据集中的每个受试者文件夹,加载每个 .mat 文件中的数据:

python 复制代码
subject_list = os.listdir(dataset_dir)
for subject in subject_list:
    if not os.path.isdir(subject):
        continue
    # 受试者数据处理...

滑窗处理

对每个受试者的数据进行滑窗处理,以 WINDOW_SIZEOVERLAP_RATE 作为参数:

python 复制代码
for mat in mat_list:
    content = scio.loadmat(mat)['sensor_readings']
    cur_data = sliding_window(content, WINDOW_SIZE, OVERLAP_RATE)

数据分割

根据 VALIDATION_SUBJECTS 的设置,选择留一法或平均法来分割训练集和验证集:

  • 留一法 :如果受试者编号在 VALIDATION_SUBJECTS 中,则该受试者的数据作为验证集,否则作为训练集。
python 复制代码
if VALIDATION_SUBJECTS:
    if subject_id not in VALIDATION_SUBJECTS:
        # 训练集数据添加
    else:
        # 验证集数据添加
  • 平均法 :根据 SPLIT_RATE 计算训练集和验证集的长度,然后进行分割。
python 复制代码
else:
    trainlen = int(len(cur_data) * SPLIT_RATE[0] / sum(SPLIT_RATE))
    xtrain += cur_data[:trainlen]
    xtest += cur_data[trainlen:]

数据标准化

如果设置了 Z_SCORETrue,则对训练集和验证集的数据进行 Z-score 标准化处理:

python 复制代码
if Z_SCORE:
    xtrain, xtest = z_score_standard(xtrain=xtrain, xtest=xtest)

4.数据保存

将预处理后的数据保存到 SAVE_PATH 指定的目录中:

python 复制代码
if SAVE_PATH:
    save_npy_data(
        dataset_name='USC_HAD',
        root_dir=SAVE_PATH,
        xtrain=xtrain,
        xtest=xtest,
        ytrain=ytrain,
        ytest=ytest
    )

5.结果输出

打印出训练集和验证集的数据形状,以验证数据处理的正确性:

python 复制代码
print('xtrain shape:', xtrain.shape, 'xtest shape:', xtest.shape, 'ytrain shape:', ytrain.shape, 'ytest shape:', ytest.shape)

通过对 USC-HAD 数据集的详细处理,我们完成了从数据下载到预处理、数据集分割、标准化处理以及数据保存的整个流程。这为后续的机器学习模型训练和评估提供了结构化和标准化的数据。

USC-HAD数据集训练

USC-HAD数据集--CNN网络

网络结构

结果展示

USC-HAD数据集--ResNet网络

网络结构

结果展示

USC-HAD数据集--LSTM网络

网络结构

结果展示

USC-HAD数据集--shufflenet网络

网络结构

结果展示

USC-HAD数据集仿真指标统计表

模型名称 准确率(Accuracy) 精确率(Precision) 召回率(Recall) F1分数(F1-score) 参数量(Parameters) 推理时间(Inference Time) 其他指标 备注
CNN 0.8625 0.8611 0.8625 0.8618 556044 2.4667
Resnet 0.8765 0.8739 0.8765 0.8752 1426252 4.5797
LSTM 0.8821 0.8833 0.8821 0.8827 3172364 3.0517
Shufflenet 0.8594 0.8582 0.8594 0.8588 213648 3.0598

注意 :具体的代码实现和模型细节可以联系作者获取,以便进一步的研究和应用。本文首发于稀土掘金,未经允许禁止转发和二次创作,侵权必究。

相关推荐
聚客AI10 分钟前
搜索引擎vs向量数据库:LangChain混合检索架构实战解析
人工智能·pytorch·语言模型·自然语言处理·数据分析·gpt-3·文心一言
祁思妙想16 分钟前
【LeetCode100】--- 1.两数之和【复习回滚】
数据结构·算法·leetcode
薰衣草233317 分钟前
一天两道力扣(2)
算法·leetcode
小鲈鱼-21 分钟前
【LeetCode4.寻找两个正序数组的中位数】二分O(log(m+n))
c++·算法
云畅新视界23 分钟前
从 CODING 停服到极狐 GitLab “接棒”,软件研发工具市场风云再起
人工智能·gitlab
橘颂TA23 分钟前
【C++】红黑树的底层思想 and 大厂面试常问
数据结构·c++·算法·红黑树
chao_78924 分钟前
二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
python·线性代数·算法·leetcode·矩阵
傻欣25 分钟前
动态规划疑惑总结
算法·动态规划
一ge科研小菜鸡28 分钟前
人工智能驱动下的可再生能源气象预测:构建绿色能源时代的新大脑
人工智能·能源
啊我不会诶37 分钟前
倍增法和ST算法 个人学习笔记&代码
笔记·学习·算法