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

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

相关推荐
在猴站学算法2 小时前
机器学习(西瓜书) 第二章 模型评估与选择
人工智能·机器学习
科技宅说3 小时前
36氪专访丨乐橙CEO谢运:AI科技下的业务创新与长期主义下的品牌坚守
人工智能·科技
Tiandaren4 小时前
Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 || 用于解决chromedriver版本不匹配问题
selenium·测试工具·算法·自动化
学术小八4 小时前
2025年人工智能、虚拟现实与交互设计国际学术会议
人工智能·交互·vr
nbsaas-boot5 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
岁忧5 小时前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
仗剑_走天涯5 小时前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
chao_7895 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
cnbestec6 小时前
协作机器人UR7e与UR12e:轻量化设计与高负载能力助力“小而美”智造升级
人工智能·机器人·协作机器人·ur协作机器人·ur7e·ur12e
zskj_zhyl6 小时前
毫米波雷达守护银发安全:七彩喜跌倒检测仪重构居家养老防线
人工智能·安全·重构