独家 | 将时间信息编码用于机器学习模型的三种编码时间信息作为特征的三种方法...

3ee52f446706611dcb0a184b8c59ed00.png

作者:Eryk Lewinson
翻译:汪桉旭
校对:zrx


本文约4400字,建议阅读5分钟
本文研究了三种使用日期相关的信息如何创造有意义特征的方法。

标签:时间帧,机器学习,Python,技术演示

9b88ad7fc1b89ffd09d4942135ea3f3d.png

想象一下,你刚开始一个新的数据科学项目。目标是建立一个预测目标变量Y的模型。你已经收到了来自利益相关者/数据工程师的一些数据,进行了彻底的EDA并且选择了一些你认为和手头上问题有关的变量。然后你终于建立了你的第一个模型。得分是可以接受的,但是你相信你可以做得更好。你应该怎么做呢?

这里你可以通过许多方式跟进。一种可能性是增加你使用的机器学习模型的复杂度。或者,你可以尝试提出一些更有意义的特征并且继续使用现在的模型(至少暂时是这样)。

对于许多项目,企业数据科学家和Kaggle等数据科学竞赛的参与者都认为,后者——从数据中辨别更多有意义的特征——通常可以在最少的尝试下最大程度地提升模型的精度。

你正有效地将复杂度从模型转移到了特征。特征不一定要非常复杂,但是,理想的情况下,我们会找到与目标变量具有强烈而简单关系的特征。

许多数据科学项目包含了一些关于时间变化的信息,这不仅限于时序预测问题。例如,你经常会在传统的回归或者分类问题中发现这些特征。这篇文章研究了使用日期相关的信息如何创造有意义的特征。我们提出三种方法,但是我们需要先做一些准备。

设置和数据

在这篇文章中,我们更多时候会使用一些有名的Python包,但我们同时也使用了一个相对不出名的包,scikit-lego。它是一个包含大量有用功能的的库,这些功能扩展了scikit-learn’s的功能。我们输入需要的库:

679ec4d04023f477b3c5d063839e576d.png

为了简单起见,我们自己生成数据。在此示例中,我们使用人工的时间序列。首先,我们要创建一个索引跨越四个日历年的空DataFrame(我们使用pd.date_range)。然后,我们创建两列:

  • day_nr – 表示时间流逝的数字索引;

  • day_of_year – 一年中的第几天;

最后,我们需要创建时间序列本身。为此,我们结合了两条变换后的正弦曲线和一些随机噪声。用于生成数据的代码是基于 scikit-lego的文档中包含的代码写下的。https://scikit-lego.readthedocs.io/en/latest/

f84de9ba8da303f956a5256096cb1138.png

8aafa2c652147f15b7e6a17f1c075e2b.png

图1:生成的时间序列

然后,我们创建一个新的DataFrame,用来存储生成的时间序列。该DataFrame 将用于使用不同的特征工程方法比较模型的性能。

d51a079fb8faafe67088d8ab92c59036.png

创建与时

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值