Table of Contents
3.1 学习目标
- 学习时间序列数据的特征预处理方法
- 学习时间序列特征处理工具Tsfresh(TimeSeries Fresh) 的使用
3.2 内容介绍
数据预处理
- 时间序列数据格式处理
- 加入时间步特征time
特征工程
- 时间序列特征构造
- 特征筛选
- 使用tsfresh
3.3 代码示例
3.3.1 导入包并读取数据
Tsfresh是处理时间序列的关系数据库的特征工程工具,能自动从时间序列中提取100多个特征。
该软件包包含多种特征提取方法和一种稳健的特征选择算法,还包含评价这些特征对回归或分类
任务的解释能力和重要性的方法。
https://zhuanlan.zhihu.com/p/93310900
# 包导入
import pandas as pd
import numpy as np
import tsfresh as tsf
from tsfresh import extract_features,select_features
from tsfresh.utilities.dataframe_functions import impute
# 数据读取
data_train = pd.read_csv("train.csv")
data_test_A = pd.read_csv("testA.csv")
print(data_train.shape)
print(data_test_A.shape)
(100000, 3)
(20000, 2)
3.3.2 数据预处理
- 对心电特征进行行列处理,同时为每个心电信号加入时间步特征time
- reset_index()和set_index()的使用
train_heartbeat_df = data_train["heartbeat_signals"].str.split(",",expand=True).stack()
train_heartbeat_df
0 0 0.9912297987616655
1 0.9435330436439665
2 0.7646772997256593
3 0.6185708990212999
4 0.3796321642826237
...
99999 200 0.0
201 0.0
202 0.0
203 0.0
204 0.0
Length: 20500000, dtype: object
- 重新设置索引 且变成了数据框的形式
train_heartbeat_df = train_heartbeat_df.reset_index()
train_heartbeat_df
level_0 | level_1 | 0 | |
---|---|---|---|
0 | 0 | 0 | 0.9912297987616655 |
1 | 0 | 1 | 0.9435330436439665 |
2 | 0 | 2 | 0.7646772997256593 |
3 | 0 | 3 | 0.6185708990212999 |
4 | 0 | 4 | 0.3796321642826237 |
... | ... | ... | ... |
20499995 | 99999 | 200 | 0.0 |
20499996 | 99999 | 201 | 0.0 |
20499997 | 99999 | 202 | 0.0 |
20499998 | 99999 | 203 | 0.0 |
20499999 | 99999 | 204 | 0.0 |
20500000 rows × 3 columns
- 将level_0 设置为索引
train_heartbeat_df = train_heartbeat_df.set_index("level_0")
train_heartbeat_df
level_1 | 0 | |
---|---|---|
level_0 | ||
0 | 0 | 0.9912297987616655 |
0 | 1 | 0.9435330436439665 |
0 | 2 | 0.7646772997256593 |
0 | 3 | 0.6185708990212999 |
0 | 4 | 0.3796321642826237 |
... | ... | ... |
99999 | 200 | 0.0 |
99999 | 201 | 0.0 |
99999 | 202 | 0.0 |
99999 | 203 | 0.0 |
99999 | 204 | 0.0 |
20500000 rows × 2 columns
- 将索引的名字置空,感觉就好像是扔掉了
train_heartbeat_df.index.name = None
train_heartbeat_df
level_1 | 0 | |
---|---|---|
0 | 0 | 0.9912297987616655 |
0 | 1 | 0.9435330436439665 |
0 | 2 | 0.7646772997256593 |
0 | 3 | 0.6185708990212999 |
0 | 4 |