python实战技巧▼
1. python实战技能-01-python文件/目录监听
2. python实战技能-02-tsfresh时序数据自动特征提取
上上期,我们介绍了强大的时间序列数据自动特征抽取工具tsfresh,本期,我们介绍另一个自动时序数据特征提取的第三方库TSFEL。
Tsfel,Time Series Feature Extraction Library,是一个基于python的时间序列自动特征提取库。类似于tsfresh,它也提供了一系列功能强大的时序数据自动特征抽取方法,可用于处理各种类型的时序数据。它有如下特点(标准化输入,结构化输出):
-
多样的特征类型,时域、频谱域及统计;
-
高效,能在大规模数据集上快速特征提取;
-
灵活可扩展,提供丰富的配置选项和参数,可根据需求进行定制扩展;
1、Tsfel特征介绍
2、tsfel应用
#tsfel安装
pip install tsfel -i https://mirrors.tuna.tsinghua.edu.cn/
#tsfel可以根据需求选择要提取的特征类型:时域、统计、频谱特征
import tsfel
cfg_file = tsfel.get_features_by_domain()
cgf_file = tsfel.get_features_by_domain("statistical")
cgf_file = tsfel.get_features_by_domain("temporal")
cgf_file = tsfel.get_features_by_domain("spectral")
# 导入必要的库和模块
import pandas as pd
import numpy as np
import tsfel
from tsfel import time_series_features_extractor
cfg = tsfel.get_features_by_domain()
# 配置特征提取器
"""
def time_series_features_extractor(
dict_features, #特征字典,配置特征提取的类型
signal_windows, # 哪些数据需要提取特征
fs=None #采样频率
"""
# 对于结构化的数据序列,传递一个Series就可以自动提取特征
feature_extractor = time_series_features_extractor(cfg,Series)
# 当然也可以提供一个列表,列表为多个时序series,提取多本据特征
feature_extractor = time_series_features_extractor(cfg,[Series1,Series2,...])
# 对于一个DataFrame数据,会对里面的每一列进行特征提取,特征命名从0开始
feature_extractor = time_series_features_extractor(cfg,DataFrame)
# 打印提取的特征
print(feature_extractor)
import tsfel
#数据集的根目录
main_directory = '/my_root_dataset_directory/'
#特征提取后的输出文件保存路径
output_directory = '/my_output_feature_directory/'
data = tsfel.dataset_features_extractor(
main_directory,
#特别地,这里可以加载特征配置的json文件
#json.load(open(tsfel_path_json))
tsfel.get_features_by_domain(), #特征配置,默认提取所有
#从所有根路径下的这些文件提取特征
search_criteria = ['Accelerometer.txt', 'Gyroscope.txt'],
resample_rate=100,
window_size=250,
output_directory=output_directory
)
# 特征配置的json文件参考
{
"spectral": {
"FFT mean coefficient": {
"complexity": "constant",
"description": "Computes the mean value of each spectrogram frequency.",
"function": "tsfel.fft_mean_coeff", #提取的逻辑函数
"n_features": "nfreq",
"parameters": {
"fs": 100,
"nfreq": 256
},
"use": "yes"
},
"Fundamental frequency": {
"complexity": "log",
"description": "Computes the fundamental frequency.",
"function": "tsfel.fundamental_frequency",
"n_features": 1,
"parameters": {
"fs": 100
},
"use": "yes"
}
}
3、总结
生活工作中,时序数据应用非常广泛,熟练地、高效地对时序数据进行相关特征提取是我们进行时序数据机器学习建模的基础。从目前已有的方法可以看出,基于时序的特征提取大致分为三类:时域特征、频域特征、统计特征三大类。本期,我们介绍了另一个不逊于tsfresh的自动特征提取工具tsfel,tsfel还能自定义特征。通过tsfel及tsfreh,我们基本能掌握时序数据的特征自动处理手段。
参考:
【1】https://tsfel.readthedocs.io/en/latest/descriptions/feature_list.html
【2】TSFEL: Time Series Feature Extraction Library