Python:基于TSFEL库对时间序列进行特征分析

news2024/11/20 4:52:10

1. TSFEL

        时间序列作为主要TSFEL提取方法的输入传递,要么作为先前加载在内存中的数组传递,要么存储在数据集中的文件中。 由于TSFEL可以处理多维时间序列,因此随后应用了一套预处理方法,以确保信号质量足够和时间序列同步,从而适当地实现窗口计算过程。 特征提取后,使用标准模式保存结果,供大多数分类和数据挖掘平台消化。 每一行对应一个窗口,特征提取方法的结果与相应的时间序列一起存储,作为主要TSFEL提取方法的输入传递,要么作为先前加载在内存中的数组,要么存储在数据集中的文件中。 由于TSFEL可以处理多维时间序列,因此随后应用了一套预处理方法,以确保信号质量足够和时间序列同步,从而适当地实现窗口计算过程。 特征提取后,使用标准模式保存结果,供大多数分类和数据挖掘平台消化。 每行对应一个窗口,其中包含与相应列一起存储的特征提取方法的结果。
在这里插入图片描述
        下表提供了TSFEL当前版本中可用特性的概述。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

 

2. 从时间序列中提取数组对象

        让我们从下载一些数据开始。 完整的数据集描述可在1中找到。 在本例中,我们将使用加速度计传感器以50Hz采样的时间序列。

import tsfel
import zipfile
import numpy as np
import pandas as pd

# Load the dataset from online repository
!wget https://archive.ics.uci.edu/ml/machine-learning-databases/00240/UCI%20HAR%20Dataset.zip

# Unzip the dataset
zip_ref = zipfile.ZipFile("UCI HAR Dataset.zip", 'r')
zip_ref.extractall()
zip_ref.close()

# Store the dataset as a Pandas dataframe.
x_train_sig = np.loadtxt('UCI HAR Dataset/train/Inertial Signals/total_acc_x_train.txt', dtype='float32')
X_train_sig = pd.DataFrame(np.hstack(x_train_sig), columns=["total_acc_x"])

 
        现在我们有了一个DataFrame,它由一个具有关联列名的唯一列组成。 注意,TSFEL还可以处理多维数据流。 在这种情况下,有必要将额外的时间序列作为数据框架中的额外列传递。

        现在我们有了输入数据,我们就可以开始特征提取步骤了。 TSFEL依赖于字典来设置提取的配置。 我们提供了一组可以开箱即用的模板配置字典。 在本例中,我们将使用提取TSFEL所有可用特征的示例。 我们将配置TSFEL将我们的时间序列划分为大小为250个点(对应于5秒)的等长窗口。

cfg_file = tsfel.get_features_by_domain()                                                        # If no argument is passed retrieves all available features
X_train = tsfel.time_series_features_extractor(cfg_file, X_train_sig, fs=50, window_size=250)    # Receives a time series sampled at 50 Hz, divides into windows of size 250 (i.e. 5 seconds) and extracts all features

        我们现在终于有了X_train作为最后的特征向量,它由为每个3764个提取窗口计算的205个特征组成。
 

3. 从存储在数据集中的时间序列中提取

        在上一节中,我们观察了如何使用TSFEL对存储在内存中的时间序列进行特征提取。 训练机器学习模型的过程需要大量的数据。 时间序列数据集通常组织在由收集和管理数据的实体定义的多种不同模式中。 TSFEL提供了一种在数据集中存储的多个文件上提取特征时增加灵活性的方法。 在使用这种方法时,我们提供了以下假设列表以及TSFEL如何处理它:

时间序列存储在不同的文件位置
a) TSFEL在给定的数据集根目录上爬行,并从与用户提供的文件名匹配的所有文本文件中提取特征
b) 文件以分隔格式存储时间序列
c) TSFEL期望第一列必须包含时间戳,后面的列包含时间序列值。
d) 文件可能无法及时同步 ,TSFEL通过进行线性插值来处理这个假设,以确保所有的时间序列在特征提取之前及时同步。 重采样频率由用户自行设置。

 
        下面的代码块从所有名为Accelerometer.txt的文件中提取驻留在main_directory上的数据的特性。 时间戳以纳秒为单位记录,重采样频率设置为100hz。

import tsfel

main_directory = '/my_root_dataset_directory/'        # The root directory of the dataset
output_directory = '/my_output_feature_directory/'    # The resulted file from the feature extraction will be saved on this directory

data = tsfel.dataset_features_extractor(
                      main_directory, tsfel.get_features_by_domain(), search_criteria="Accelerometer.txt",
                      time_unit=1e-9, resample_rate=100, window_size=250,
                      output_directory=output_directory
       )

 

4. 设置特征提取配置文件

        TSFEL的主要优点之一是提供了大量开箱即用的时间序列特征。 然而,在某些情况下,您可能对提取完整的集合不感兴趣。 示例包括将模型部署在低功耗嵌入式设备中的场景,或者您只是想更具体地提取哪些特征。
TSFEL将可用的特征分为三个领域:统计、时间和光谱。 上面解释的提取特性的两种方法需要一个配置文件——feat_dict——一个包含将要使用的特性和超参数的字典。
下面,我们列出了四个示例来建立配置字典。

import tsfel

cfg_file = tsfel.get_features_by_domain()               # All features will be extracted.
cgf_file = tsfel.get_features_by_domain("statistical")  # All statistical domain features will be extracted
cgf_file = tsfel.get_features_by_domain("temporal")     # All temporal domain features will be extracted
cgf_file = tsfel.get_features_by_domain("spectral")     # All spectral domain features will be extracted

        如果您需要自定义的一组功能或来自多个域的功能组合,则可能需要编辑配置字典(JSON)。 必须根据需要将键用法的值编辑为yes或no。 您可以加载任何先前的配置字典,并将您不感兴趣的特性设置为“使用”:“否”,或者手动或编程编辑字典,并根据需要将使用设置为“是”或“否”。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

惊天大瓜姬圈天莱女明星出轨风波

#惊天大瓜!姬圈天菜女明星出轨风波#近日,娱乐圈掀起了一场前所未有的风暴!狗仔队放出重磅消息,直指某位姬圈天菜级别的女明星深陷出轨泥潭。消息一出,引发了网友们的热议和猜测,究竟这位神秘的女明星是谁&a…

VPS环境搭建及配置

VPS简介 VPS(Virtual Private Server)是一种虚拟化技术,可以将一台物理服务器分成多个虚拟服务器,每个虚拟服务器都有独立的操作系统和资源,相互之间互不影响。VPS可以提供类似于独立服务器的功能,但价格更…

Nuxt3 的生命周期和钩子函数(二)

title: Nuxt3 的生命周期和钩子函数(二) date: 2024/6/26 updated: 2024/6/26 author: cmdragon excerpt: 摘要:本文深入介绍了Nuxt.js框架中几个关键的生命周期钩子函数,包括app:redirected(SSR环境下重定向前触发…

关于Vite+Vue+Ts WebStorm路径别名的问题

一、准备一个项目 二、在 vite.config.js 中添加 resolve: {alias: {: /src}} 三、tsconfig.app.json中添加代码 //添加代码"baseUrl": ".","paths": {"/*": ["src/*"]}把src的一个文件修改路径为开头 四、安装插件 npm i …

从音频中提取MFCC特征的过程

在语音信号处理和语音识别领域,梅尔频率倒谱系数(MFCC)是最常用的特征之一。本文将逐步介绍如何从音频中提取MFCC特征,并在每个步骤中进行可视化展示。 步骤 1:加载音频文件并查看波形 首先,我们需要加载…

安装与配置:MySQL的环境搭建之旅(二)

目录 引言:从理论到实践的跨越 一、安装MySQL:跨平台的便捷指南 Windows环境 Linux环境 macOS环境 二、基本配置:端口设置与字符集选择 三、从零到一的蜕变 引言:从理论到实践的跨越 在前一章节《MySQL简介》中&#xff0c…

力扣随机一题 6/26 哈希表 数组 思维

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 题目一: 2869.收集元素的最少操作次数【简单】 题目&#xff…

Flutter实现页面间传参

带参跳转 步骤 在router中配置这个路由需要携带的参数,这里的参数是 arguments,注意要用花括号包裹参数名称 在相应组件中实现带参构造函数 在state类中可以直接使用${widget.arguments}来访问到传递的参数 在其他页面中使用Navigator.pushNamed()带参跳转

【课程总结】Day11(中):手势图像识别实战(Vgg16和ResNet)

前言 在上一章《【课程总结】Day11(上):手势图像识别实战(LeNet模型)》课程中,我们通过使用LeNet模型实现了手势识别。在本章内容中,我们将搭建Vgg模型和ResNet模型,并应用到手势识别中。 Vgg模型 Vgg简…

黑马点评06短信登录-用户请求和会话管理过程

用户请求发送: 用户的浏览器向服务器发送请求(例如,访问网页或提交表单)。请求头包含之前存储在浏览器中的Cookie,其中包括会话ID(Session ID)。 服务器接收请求: 服务器接收到用户的…

智慧城市:数据可视化如何提升城市管理

数据可视化在智慧城市中有何应用?随着城市化进程的加快和信息技术的飞速发展,智慧城市的建设成为全球各大城市追求的目标。而数据可视化技术作为智慧城市的重要组成部分,通过将复杂的数据转化为直观、易理解的图表和图形,极大地提…

c#关键字 ArgumentOutOfRangeException .? IEnumerable string.Join

c# ArgumentOutOfRangeException ArgumentOutOfRangeException 是 C# 中表示某个参数值超出了方法或属性定义的有效范围时引发的一个异常。这个异常通常在尝试访问数组、集合、字符串等的无效索引,或者当传递给方法或属性的参数不在其有效范围内时发生。 例如&…

Rill Data:实时数据分析的未来

欢迎来到 Rill Rill是从数据湖到仪表板的最快路径。 rilldata 与大多数 BI 工具不同,Rill 带有自己的嵌入式内存数据库。数据和计算位于同一位置,查询以毫秒为单位返回。 因此,您可以即时透视、切片和深入研究数据。 下载 Rill 开始建模数…

写程序100道41-50

41.定义一个Father和Child类,并进行测试。 要求如下: (1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“Join”。 (2)Child类为Father类的内部类,其中定义一个readName()方法,方…

【数据结构初阶】--- 归并排序

归并排序 递归递归的思路归并的步骤:代码示例 非递归快排为什么可以用栈模拟:归并可以用栈模拟吗?非递归的思路初版代码示例问题:越界 时间复杂度针对递归的优化小区间优化 递归 递归的思路 归并的前提是需要两个有序的区间&…

LLM大模型算法学习资源持续整理

文章目录 waytoagiLLM101llm-coursellm-cookbook waytoagi 飞书文档写的AGI知识库。 https://www.waytoagi.com/ LLM101 karpathy更新中的大模型教程: https://github.com/karpathy/LLM101n llm-course Course to get into Large Language Models (LLMs) wi…

【前端】实现时钟网页

【前端】实现时钟网页 文章目录 【前端】实现时钟网页项目介绍代码效果图 项目介绍 时钟显示在网页中央,并且使网页能够切换白天和夜晚两种模式。搭建基本的html结构,动态得到实时的时,分,秒 通过Date()函数获得。将得到的数字根…

单片机学习记录

一,单片机及开发板介绍 1,基本介绍 单片机,英文Micro Controller Unit,简称MCU内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(…

SpringBoot整合拦截器和日期转换器

一、SpringBoot整合拦截器 1.添加拦截器 package com.by.interceptor;import com.by.pojo.User; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import java…

程序员如何用ChatGPT解决常见编程问题:实例解析

引言 在现代编程的世界中,技术进步日新月异,程序员们面临着各种各样的挑战和问题。解决这些问题的过程中,找到合适的工具至关重要。ChatGPT作为一种先进的人工智能语言模型,能够帮助程序员迅速、高效地解决常见的编程问题。本文将…