特征衍生——时序特征

时序特征的衍生方法

  • 通用特征衍生代码
# dataFrame
pd.to_datetime(df['time']) # 年月日时分秒 -> datetime64[ns]格式
'2022-01-03;02:31:52' -> '2022-01-03 02:31:52'
# numpy
df['time'].values.astype('datetime64[ns/D/..]')
df['time-D'] = df['time'].values.astype('datetime64[s/h/D/...]') # 降低时间精度
# 1. 通用时序信息提取,datetime64 -> dt.func
df['year'] = df['time'].dt.year / month / day / hour / minute / second
# 2. 其它自然周期信息提取,比如: 日期所在的季度 / 全年的第几周 / 一周的第几天 / 日期是否在周末 / 时间发生的时间是在上午、下午还是晚上
df['quarter'] = df['time'].quarter
df['weekofyear'] = df['time'].weekofyear
df['dayofweek'] = df['time'].dayofweek + 1
df['weekend'] = (df['dayofweek'] > 5).astype(int) 
df['hourPeriodOfday'] = (t['hour'] // 6).astype(int) + 1 # 当前小时所属一天的周期,凌晨、上午、下午、晚上,周期以6小时为划分依据
  • 为什么要提取这些时序信息?时序字段衍生的本质:增加分组的细粒度化
      分析:首先,时序特征的衍生其本质上就是对用户进行了更多不同维度的分组,该过程可以通过下图进行解释,在tenure时序特征进行特征衍生后,ID1-6号用户在所属年份列中就被划分到了2019年组中,即他们同为2019年入网的用户,而根据入网的季节进行划分,则ID为0、4、5的三个用户会被划归到第一季度入网用户组中,并且时序特征衍生的字段越多、对用户分组的维度也就越多:
    在这里插入图片描述
      而对用户进行分组之所以能够帮助模型进行建模与训练,其根本原因也是因为有的时候,同一组内(或者是多组交叉)的用户会表现出相类似的特性(或者规律),从而能够让模型更快速的对标签进行更准确的预测,例如假设数据集如下所示,在原始数据集看来,标签取值毫无规律可言,但当我们对其进行时序特征的特征衍生后,立刻能发掘很多规律,例如第四季度用户都流失了、2019年第一季度用户流失都流失了等等,同样,这些通过观察就能看到的规律,也很快会被模型捕捉到,而这也是时序字段衍生能够帮助模型进行更好更快的预测的直观体现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>