Task3 特征工程

Task3 特征工程

3.1 学习目标

•学习时间序列数据的特征预处理方法
•学习时间序列特征处理工具 Tsfresh(TimeSeries Fresh)的使用

3.2 内容介绍

•数据预处理

  1. 时间序列数据格式处理
  2. 加入时间步特征time

•特征工程

  1. 时间序列特征构造
  2. 特征筛选
  3. 使用 tsfresh 进行时间序列特征处理

导入包和数据库

首先安装tsfresh包

pip install tsfresh --user

导入需要的库

import numpy as np
import pandas as pd
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)

在这里插入图片描述

data_train.head()

在这里插入图片描述

data_test_A.head()

在这里插入图片描述

数据预处理

对心电数据进行行转列处理,同时为每个心电信号加入时间步特征time

#数据预处理
train_heartbeat_df=data_train["heartbeat_signals"].str.split(",",expand=True).stack()
train_heartbeat_df=train_heartbeat_df.reset_index()
train_heartbeat_df=train_heartbeat_df.set_index("level_0")
train_heartbeat_df.index.name = None
train_heartbeat_df.rename(columns={"level_1":"time",0:"heartbeat_signals"},inplace=True)
train_heartbeat_df["heartbeat_signals"]=train_heartbeat_df["heartbeat_signals"].astype(float)
print(train_heartbeat_df)

在这里插入图片描述
将处理后的心电特征加入到训练数据中,同时将训练数据label列单独存储

data_train_label = data_train["label"]
data_train = data_train.drop('label',axis=1)
data_train = data_train.drop('heartbeat_signals',axis=1)
data_train=data_train.join(train_heartbeat_df)
print(data_train)

在这里插入图片描述

data_train[data_train["id"]==1]

在这里插入图片描述
通过上图可知,每一个样本的心电特征都是由205个时间步的心电信号组成。

使用tsfresh进行时间序列特征处理

Tsfrseh(TimeSeries Fresh):是一个Python第三方库。它可以自动计算大量的时间序列数据的特征。此外,该包还包含了特征重要性评估、特征选择的方法,因此,不管是基于时序数据的分类问题还是回归问题,tsfresh都会是特征提取一个不错的选择。

特征提取

from tsfresh import extract_features
train_features=extract_features(data_train,column_id='id',column_sort='time')

调用extract_features()方法之后,返回的仍是一个dataframe.
特征处理
train_features中包含了heartbeat_signals的779中创建时间序列特征,其中有的特征可能为 NaN值,使用以下方法去除NaN值

from tsfresh.utilities.dataframe_functions import impute
impute(train_features)

特征选择
按照特征和响应变量之间的相关性进行特征选择,首先,单独计算每个特征与响应变量之间的相关性,然后使用Benjamini-Yekutieli procedure进行特征选择,决定哪些特征可以被保存。

from tsfresh import select_features
train_features_filtered=select_features(train_features, data_train_label)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值