如何使用一天中的几个小时作为连续特征?

数据挖掘 特征选择 特征工程
2021-10-04 11:00:27

我想使用一天中的小时 (0-23) 作为连续特征,因此模型将知道 12pm 出现在 13:00 之前,并且 8:00 离 21:00 比 10:00 更远。我如何设计此功能,以便它也能理解 0:00 在 23:00 之后?

2个回答

好问题。

我想说你应该使用傅立叶变换或正弦/余弦变换,因为它们应该在 23 旁边得到 0。下面的帖子正在讨论转换日特征,但在这里应该很容易适用。

改变一天的特点

转换小时特征

请注意,如果您想建立一个循环的顺序关系,您最终会遇到矛盾。事实上,你得到:0:00 < 23:59 < 0:00。

如果您只想计算距离而放弃连续性,您可以按如下方式进行。

首先,您以分钟为单位转换域 hh:mm,然后线性映射为 0 到 0 之间的整数 2k1. 转换函数可能是

f(h,m)=round(60h+m6023+59×(2k1))
您可以选择 k=10. 使用比精确表示时间所需的位更少的位可能会更好(如果不使用秒,则精确时间需要 11 位,但不是全部211 使用配置)。

然后,你编码 f(h,m)带有格雷码格雷码确保以最多一位改变的方式对连续数字进行编码;此外,代码是循环的,因为0 和编码 2k1 仅相差一位。

最后,您可以通过按位汉明距离来评估两个时刻之间的距离,该距离计算两个代码之间不同位的数量。

如果您想要更精确,您可以相应地使用秒数。