Как конвертировать время в категорию в Python? - PullRequest
1 голос
/ 11 апреля 2019

Как перевести время в какую-то категорию?

Например, время между 17:30:13 и 19:30:13 следует отнести к категории "вечером".Время между 12:00:12 и 13:00:12 должно подпадать под «полдень».

Каков хороший подход для этого в python?

Ответы [ 3 ]

1 голос
/ 11 апреля 2019

Если вы хотите использовать его для машинного обучения, вы обычно хотите, чтобы оно было целочисленным значением или преобразовало его в кодировку one-hot .

Чтобы получить целочисленное значение, выможет делить целое число на час:

from datetime import datetime,timedelta

values = [datetime.now() + timedelta(hours=i) for i in range(24)] 

[value.hour // 6 for value in values]

выход:

[3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3]
0 голосов
/ 11 апреля 2019

Вам может потребоваться назвать функцию самостоятельно и настроить время отключения.

import datetime
# test date
Testdate = datetime.datetime.now().time()

def GetDateCate (DateInput):
    # name a cutoff date:
    noon = datetime.time(12) 
    evening =datetime.time(18) 
    if Testdate <noon:
        print('Morning')
    elif Testdate <evening:
        print('Afternoon')
    else: 
        print('Night')

GetDateCate(Testdate)
0 голосов
/ 11 апреля 2019

Я не использовал библиотеку машинного обучения. Написал функцию, которая возвращает категорию в зависимости от того, каков нижний предел дня.

Исходя из вашего примера, я бы предположил, что нижний предел часа определяет приоритетность категории. Может быть, я бы хотел немного лучше понять вариант использования.

# hour can be some number from 0 to 23 which is also the lower bound hour 
# in the mentioned interval 
# 17:30:13- 19:30:13 should fall under "evening"
# 12:00:12-13:00:12  should fall under "noon"
# For 17:30:13- 19:30:13 , hour will be 17
# For 12:00:12-13:00:12 , hour will be 12
get_category(hour):
    if hour < 12:
        return "morning"
    elif hour == 12:
        return "noon"
    elif hour > 12 and hour < 16:
        return "evening"
    else:
        return "night"
...