Как правильно управлять значениями времени как функцией машинного обучения? - PullRequest
0 голосов
/ 14 марта 2020

Набор данных содержит столбец Time, который показывает, в какое время произошел инцидент. Время указано в формате hh:mm с 24h format, например:

00:23
00:57
02:30
05:49
...
22:03
23:54

Моей первой мыслью было присвоить арифметическое значение c, например:

def time2int(time):
    hh, mm = time.split(':')
    return 60 * int(hh) + int(mm)

Но этот лог c имеет большой недостаток. Не учитывается, что времена 23:57 и 00:20 «близки» друг к другу, поскольку 23:57 равно 1437, а 00:20 равно 20.

Из-за модульности арифметика c природа времени, я думал о назначении времени два значения, как xy по кругу. Мои значения int находятся между 0 (00:00) и 1440 (24:00).
Таким образом, окружность равна 2πr = 1440 => r = 230, и для каждой минуты arc length равна 1. Таким образом, угол тета: s = r theta => theta = s / r => theta = minutes / r

Я определяю время для евклидовых координат:

def time2eucl(time, r = 230):
    minutes = time2int(time)
    theta = minutes / r   # radians
    x = r * cos( theta ) 
    y = r * sin( theta )

С этим логом c если я получу евклидово расстояние от значений x, y, время 00:20 будет ближе к 23:50, чем 03:00, в отличие от моего первого подхода.
Является ли этот подход правильным путем к go?
Существуют ли другие методы извлечения признаков для значений времени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...