是否可以像其他周期性变量一样对月中的日期进行编码?

Can the day of the month be encoded similarily to other cyclical variables?

我正在处理 Python 中的时间序列数据,以查看一天中的时间、每月的日期和一年中的月份等变量是否会影响健身房的出勤率。我已经阅读了有关使用正弦和余弦对时间序列数据进行循环编码的内容。我想知道您是否可以在每个月的某一天做同样的事情。我问的原因是,与一年中的月数或一周中的天数不同,一个月中的天数是可变的(例如,二月有 28 天,而三月有 31 天)。有什么办法可以解决吗?

这里是 link 描述循环编码的意思:https://ianlondon.github.io/blog/encoding-cyclical-features-24hour-time/

从本质上讲,这意味着当您进行机器学习时,您不能只将小时转换为一系列值,例如 1、2、3、...、24,因为这意味着 24 日小时与第一小时的距离(从欧几里得几何角度来看)比第一小时与第二小时的距离更远,这是不正确的。循环编码(为每个小时分配正弦和余弦值)允许您表示第 24 小时和第 2 小时与第 1 小时等距的事实。

我的问题是,我不知道这种循环转换是否适用于一个月中的几天,因为不同的月份可能有不同的天数。

您可以通过将每个月分成 2π 弧度来实现;那么在28天的月份中,一天是0.2234,而在31天的月份中,一天是0.2026.

这显然引入了一种偏差,即较短的月份似乎与较长的月份占用的时间一样多;但它会满足你的要求。如果您仅将此指标用于规范化单个功能,那应该是无关紧要的,并且可以让您实现既定目标。

如果您有比一天更细粒度的时间点,您显然可以而且可能应该将它们标准化为相同的投影。