1年を単位円とみなして今の (x, y) 座標を返す
code:date_to_coord.py
from math import cos, sin
from datetime import datetime
def date_to_coord(dt: datetime) -> (float, float):
""" 1年を単位円とみなして今のx,y座標を返す """
# 1年のうち何日目か
first_day = dt.replace(month=1, day=1)
last_day = dt.replace(month=12, day=31)
numday = dt.toordinal() - first_day.toordinal()
total_days = last_day.toordinal() - first_day.toordinal()
rad = numday / total_days * 2 * pi
return cos(rad), sin(rad)
`
日付を1年で一周する円に見立てて、該当の日付がどこにいるかを表す関数。
こうすると機械学習で時系列を扱うときに年の周期性を扱えるし、値も -1 から 1 の間に収まるので都合がいいとか。