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

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

相关推荐
AI扶我青云志1 小时前
Milvus 安装和启动指南
人工智能·云原生·eureka·大模型
一只齐刘海的猫2 小时前
部署Qwen2.5-VL-7B-Instruct-GPTQ-Int3
人工智能·多模态
gihigo19982 小时前
matlab多目标优化差分进化算法
数据结构·算法
朝日六六花_LOCK2 小时前
深度学习之NLP基础
人工智能·深度学习·自然语言处理
weixin_582470172 小时前
GS-IR:3D 高斯喷溅用于逆向渲染
人工智能·算法
Lin9成3 小时前
机器学习集成算法与K-means聚类
算法
JNU freshman3 小时前
算法 之 拓 扑 排 序
数据结构·算法
GetcharZp3 小时前
玩转AI绘画,你只差一个节点式“魔法”工具——ComfyUI 保姆级入门指南
人工智能·stable diffusion
集成显卡3 小时前
使用 Google 开源 AI 工具 LangExtract 进行结构化信息抽取
python·google·openai
NAGNIP3 小时前
DeepSeek-R1 架构解析:如何通过强化学习激发大模型的推理能力?
算法