ECG-Emotion Recognition(情绪识别)-- 数据集介绍WESADDREAMER

1、WESAD数据集

下载链接:WESAD: Multimodal Dataset for Wearable Stress and Affect Detection | Ubiquitous Computing

(1)基本介绍

WESAD是一个用于可穿戴压力和影响检测的新的公开数据集。该多模式数据集以实验室研究期间15名受试者的生理和运动数据为特征,这些数据来自手腕和胸部佩戴的设备。包括以下传感器模式:血容量脉冲、心电图、皮肤电活动、肌电图、呼吸、体温和三轴加速度。此外,该数据集通过包含三种不同的情感状态(中性、压力和娱乐),弥合了之前关于压力和情绪的实验室研究之间的差距。

数据格式:

- “subject”:SX,受试者ID

-“signal”:包括两个领域的所有原始数据:

-- “chest”:RespiBAN数据(所有模式:ACC、ECG、EDA、EMG、RESP、TEMP);

-- “wrist”:Empatica E4数据(所有模式:ACC、BVP、EDA、TEMP)

-“label”:各自研究方案条件的ID,采样频率为700 Hz。提供以下id: 0=未定义/短暂,1=基线(baseline),2=压力(stress),3=娱乐(amusement),4 =冥想(mediation),5/6/7 =在此数据集中应忽略

  1. ACC:加速度计(Accelerometer),用于测量物体的加速度,常用于活动监测和姿势识别等应用。

  2. ECG:心电图(Electrocardiogram),用于记录心脏电活动的图形表示,常用于诊断心脏疾病和监测心脏健康。

  3. EDA:皮肤电活动(Electrodermal Activity),又称为皮电反应(Electrodermal Response),用于测量皮肤的电导率变化,反映交感神经系统的活动水平,常用于情感识别和压力监测等。

  4. EMG:肌电图(Electromyogram),用于记录肌肉电活动的图形表示,常用于研究肌肉功能和运动控制等。

  5. RESP:呼吸信号(Respiration),用于记录呼吸活动的信号,通常通过胸部或腹部运动来测量呼吸频率和呼吸深度等。

  6. TEMP:体温(Temperature),用于记录身体表面或环境温度的信号,常用于监测体温变化和环境温度。

  7. BVP:血容量脉动(Blood Volume Pulse),用于记录血液容量变化引起的皮肤血流量变化的信号,通常用于心率和心血管活动的监测。

 (2)数据读取

- 引入相关包

import os
import pickle
import numpy as np
import matplotlib.pyplot as plt
# import neurokit as nk
import seaborn as sns
import pandas as pd

- 数据读取类

class read_data_of_one_subject:
    """Read data from WESAD dataset"""
    def __init__(self, path, subject):
        self.keys = ['label', 'subject', 'signal']
        self.signal_keys = ['wrist', 'chest']
        self.chest_sensor_keys = ['ACC', 'ECG', 'EDA', 'EMG', 'Resp', 'Temp']
        self.wrist_sensor_keys = ['ACC', 'BVP', 'EDA', 'TEMP']
        os.chdir(path)
        os.chdir(subject)
        with open(subject + '.pkl', 'rb') as file:
            data = pickle.load(file, encoding='latin1')
        self.data = data

    def get_labels(self):
        return self.data[self.keys[0]]

    def get_wrist_data(self):
        """"""
        #label = self.data[self.keys[0]]
        assert subject == self.data[self.keys[1]]
        signal = self.data[self.keys[2]]
        wrist_data = signal[self.signal_keys[0]]
        #wrist_ACC = wrist_data[self.wrist_sensor_keys[0]]
        #wrist_ECG = wrist_data[self.wrist_sensor_keys[1]]
        return wrist_data

    def get_chest_data(self):
        """"""
        signal = self.data[self.keys[2]]
        chest_data = signal[self.signal_keys[1]]
        return chest_data

- 添加路径并进行读取

data_set_path = "your_path/data/WESAD/"
subject = 'S3'
obj_data = {}
obj_data[subject] = read_data_of_one_subject(data_set_path, subject)
chest_data_dict = obj_data[subject].get_chest_data()
chest_dict_length = {key: len(value) for key, value in chest_data_dict.items()}
print(chest_dict_length)

这里用胸部数据进行测试,得到的数据长度为:

接下来进行一个ECG数据的可视化

plt.plot(chest_data_dict['ECG'][0:5000])
plt.show()

- 读取标签,并提取出baseline的片段

# Get labels
labels = obj_data[subject].get_labels()
baseline = np.asarray([idx for idx,val in enumerate(labels) if val == 1])
print(baseline)

print("Baseline:", chest_data_dict['ECG'][baseline].shape)

 同理要读取压力片段只需要替换val==2即可

 2、DREAMER数据集

下载地址:ASCERTAIN dataset

 注意这个数据集需要申请才能下载

(1)基本介绍

包含ECG数据和EEG数据,其中ECG数据为2导联,EEG数据为14导联。

记录了23名参与者的信号,以及参与者在每次刺激后对其情感状态的自我评估,包括效价(valence)、唤醒(arousal)和支配(dominance)。

在一个实验中,23名志愿者观看了由Gabert-Quillen等人[1]挑选和评估的18个电影片段,在这个实验中,dream数据库包含了参与者的评分和生理记录。脑电图和心电信号被记录下来,每个参与者用五分制报告他们的感觉唤醒、效价和支配性来评估他们的情绪。

数据格式:

储存在DREAMER.mat文件中

DREAMER = 
struct with fields:
 Data: {1×23 cell}
 EEG_SamplingRate: 128
 ECG_SamplingRate: 256
 EEG_Electrodes: {'AF3' 'F7' 'F3' 'FC5' 'T7' 'P7' 'O1' 'O2' 'P8' 'T8' 'FC6' 'F4' 'F8' 'AF4'}
 noOfSubjects: 23
 noOfVideoSequences: 18
 Disclaimer: 'While every care has been taken…'
 Provider: 'University of the West of Scotland'
 Version: '1.0.2'
 Acknowledgement: 'The authors would like to thank…'

具体数据结构:

Age: 'X'  --年龄
Gender: 'X' ('male' or 'female') --性别
EEG: [1×1 struct] --脑电图数据
ECG: [1×1 struct] --心电图数据
ScoreValence: [18×1 double] -- 效价评分
ScoreArousal: [18×1 double] -- 唤醒评分
ScoreDominance: [18×1 double] -- 支配评分

(2)数据读取

- ECG的stimuli数据

i =1
data_stimuli_ecg = data['DREAMER']['Data'][0][0][0][i-1][0]["ECG"][0][0]["stimuli"][0]
data_stimuli_ecg

其中i代表受试者,总共23个。得到的数据格式如下:

是18*1的数据,包含18个电影片段的刺激。ECG可视化效果

- EEG的stimuli数据

i =1
data_stimuli_ecg = data['DREAMER']['Data'][0][0][0][i-1][0]["ECG"][0][0]["stimuli"][0]
data_stimuli_ecg

得到的18个片段的刺激EEG可视化效果:

- 整体数据读取并保存

import numpy as np
import scipy.io as sio

data_loader = sio.loadmat('your_path/data/DREAMER.mat')

data_stimuli_ecg = []
for i in range(1, 24):
    saldir1 = './save/stimuli/'
    data_stimuli = data_loader['DREAMER']['Data'][0][0][0][i - 1][0]["ECG"][0][0]["stimuli"][0]
    for j in range(1, 19):
        data = data_stimuli[j - 1][0]
        data_stimuli_ecg.append(data)
np.array(data_stimuli_ecg)
np.save(saldir1 + 'data_stimuli_ecg.npy', data_stimuli_ecg)

data_baseline_ecg = []
for i in range(1, 24):
    saldir2 = './save/baseline/'
    data_baseline = data_loader['DREAMER']['Data'][0][0][0][i - 1][0]["ECG"][0][0]["baseline"][0]
    for j in range(1, 19):
        data = data_baseline[j - 1][0]
        data_baseline_ecg.append(data)
np.array(data_baseline_ecg)
np.save(saldir2 + 'data_baseline_ecg.npy', data_baseline_ecg)

label = []
for i in range(1, 24):
    saldir3 = './save/label/'
    data_label = data_loader['DREAMER']['Data'][0][0][0][i - 1][0]["ScoreArousal"][0]
    label.append(data_label)
np.save(saldir3 + 'label.npy', label)

都看到了这里了,给个小心心❤呗~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/573090.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习JFinal

1.五个配置类 configConstants(配置): configRoute(路由): 2.Controller层(控制器) 访问流程: Action: getPara: 参数说明:第一个参…

13.Blender 界面介绍(下) 雕刻、纹理绘制及属性

界面介绍 1. 布局 物体的移动旋转和缩放等操作 2. 建模 里面就是有一些建模常用的功能 里面的功能对于做MMD来说不是必备的操作 3. 雕刻 使用里面的工具可以对物体本身进行修改 4. UV编辑 如果想要编辑UV贴图 将编辑模式改为纹理绘制 再点击右边的工具 如果进行编…

MySQL-----多表查询(一)

目录 一.多表关系: 1.1 一对多(多对一): 1.2 多对多: 1.3 一对一: 二.多表查询概述: 三.连接查询: 3.1内连接: 3.2外连接: 3.3自连接查询: 3.4联合查询: 一.多表关系&…

告别单一密码,多因素身份认证带你进入安全新纪元!

文章目录 前言一、你知道什么?二、你拥有什么1.智能卡2.令牌 三、你是什么四、其他因素身份认证 前言 当我们探讨多因子/多因素身份认证时,我们可能会好奇这里的“因素”具体指的是什么?显然,用户名和密码是一种因素,…

iclientOpenlayer用uniapp开发移动端GIS应用设计及实现

GIS移动端应用是将地理信息系统(GIS)技术应用于移动设备(如智能手机、平板电脑)上,使用户能在户外或移动场景下访问、收集、分析和展示地理信息。以下是GIS移动端应用的一些关键特性和应用场景: 关键特性&…

淘宝新店没有流量和访客怎么办

淘宝新店没有流量和访客时,可以采取以下措施来提升店铺的流量和吸引更多的访客: 3an推客是给商家提供的营销工具,3an推客CPS推广模式由商家自主设置佣金比例,以及设置商品优惠券,激励推广者去帮助商家推广商品链接&…

c++初阶——类和对象(中)

大家好,我是小锋,我们今天继续来学习类和对象。 类的6个默认成员函数 我们想一想如果一个类什么都没有那它就是一个空类,但是空类真的什么都没有吗? 其实并不是,任何类在什么都不写时,编译器会自动生成以…

C++ | Leetcode C++题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; class Solution { public:string multiply(string num1, string num2) {if (num1 "0" || num2 "0") {return "0";}int m num1.size(), n num2.size();auto ansArr vector<int>(m n);for (int i …

比亚迪海洋网再添实力爆款,海豹06DM-i、OCEAN-M、海狮07EV登陆北京车展

4月25日&#xff0c;比亚迪海洋网携海豹06DM-i、OCEAN-M、海狮07EV一齐亮相北京车展&#xff0c;引发关注热潮。其中&#xff0c;海洋网全新中型轿车海豹06DM-i价格区间12万-15万元&#xff0c;将于今年二季度上市&#xff1b;行业首款两厢后驱纯电钢炮OCEAN-M价格区间15万-20万…

重发布的原理及其应用

重发布的作用&#xff1a; 在一个网络中&#xff0c;若运行多种路由协议或者相同协议的不同进程&#xff1b;因为协议之间不能直接沟通计算&#xff0c;进程之间也是独立进行转发和运算的&#xff0c;所以&#xff0c;需要使用重发布来实现路由的共享。 条件 &#xff1a; 1&am…

RH850F1KM 搭建MCAL配置环境

1 搭建环境所需的安装包 安装以下软件安装包 1&#xff09;MCAL下载&#xff1a;AUTOSAR RH850/F1KM MCAL v42.11.00 Software 2&#xff09;Davinci工具 SIP包&#xff1a;DaVinci Configurator Pro 3&#xff09;下载网址&#xff1a;https://www.renesas.cn/cn/zh/product…

美团面试题-Nacos配置中心动态刷新原理

①&#xff1a;pull模式&#xff1a;主动拉去配置&#xff0c;通过固定的时间间隔。缺点&#xff1a;频繁请求&#xff0c;时效性不高&#xff0c;时间间隔不好设置。 ②&#xff1a;push模式&#xff1a;服务端检测到变化&#xff0c;主动将新配置推送给客户端&#xff0c;时效…

python的列表生成式

什么是列表生成式&#xff1f; 列表生成式&#xff0c;顾名思义&#xff0c;是生成列表的一个简单又直接的方法。它使用了一种紧凑的语法来构造列表&#xff0c;能够以一种更清晰、更简洁的方式来表达循环和过滤逻辑。 基础示例让我们先从一些简单的例子开始&#xff1a; 「生…

echarts 基础入门

前言&#xff1a;本文档主要讲解 echarts 在 vue3 中的用法&#xff0c;及其 echarts 的一些配置参数含义及用法。示例参考 echarts 示例 一&#xff1a;快速开始 1. 安装 echarts npm install echarts # or pnpm add echarts # or yarn add echarts 2. 使用 echarts <…

通过商品id采集京东商品详情数据(含价格、优惠券、详情、主图等字段)

item_get_app-获得JD商品详情原数据 公共参数 名称类型必须描述keyString是调用key&#xff08;注册账号获取测试key&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cach…

【八股】Spring篇

why Spring? 1.使用它的IOC功能&#xff0c;在解耦上达到了配置级别。 2.使用它对数据库访问事务相关的封装。 3.各种其他组件与Spring的融合&#xff0c;在Spring中更加方便快捷的继承其他一些组件。 IoC和DI &#x1f449;IOC是Inversion of Control的缩写&#xff0c;“…

Day4 商品管理

Day4 商品管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 编写品牌服务 …

【C++】string类的增删改查模拟实现(图例超详细解析!!!)

目录 一、前言 二、string类的模拟实现 ✨前情提要 ✨Member functions —— 成员函数 ⚡构造函数 ⚡拷贝构造函数 ⚡赋值运算符重载 ⚡析构函数 ✨Element access —— 元素访问 ⚡operator[ ] ⚡Iterator —— 迭代器 ✨Capacity —— 容量 ⚡size ⚡capacity ⚡clea…

2024年 Java 面试八股文(20w字)

目录 第一章-Java基础篇 1、你是怎样理解OOP面向对象 难度系数&#xff1a;⭐ 2、重载与重写区别 难度系数&#xff1a;⭐ 3、接口与抽象类的区别 难度系数&#xff1a;⭐ 4、深拷贝与浅拷贝的理解 难度系数&#xff1a;⭐ 5、sleep和wait区别 难度系数&a…

VSCode配置Eclipse快捷键

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、下载扩展二、使用扩展总结 前言 有时候我们可能会同时使用很多种IDE&#xff0c;每种IDE又有不同的Keymap&#xff0c;快捷键用起来很头疼。比如我&#x…