Невозможно создать объекты, основанные на времени, в наборе данных, который имеет другую числовую и категориальную переменную

#python #time-series #featuretools

#python #временные ряды #featuretools

Вопрос:

Я хочу, чтобы featuretools создавал объекты на основе временного индекса и времени отсечения, которые я объявил в своем наборе объектов.

У меня есть набор данных с временными переменными, а также числовой и категориальной переменной. Существует столбец ITEMID, каждый ITEMID содержит от 2 до 12 строк данных.

Со столбцами, такими как дата начала и даты транзакций, различными числовыми и категориальными столбцами. Дата начала одинакова во всех строках данного ITEMID, тогда как даты транзакций отличаются в каждой строке.

Вот код для набора объектов

 # creating and entity set 
entity_set = ft.EntitySet(id = 'rem_dur')

# adding a dataframe 
entity_set.entity_from_dataframe(entity_id = 'enh', dataframe = dataset, index = 'unique_id'
,,variable_types = {'Start_Date': ft.variable_types.DatetimeTimeIndex})) 

#unique_id is just row number from 1 to number of rows in dataset


entity_set.normalize_entity(base_entity_id='enh', new_entity_id= 'categorical_vars', index = 'ITEMID', 
                             additional_variables = ['cat_var_1', 'cat_var_2'])

###cutoff date 
cutoff_df = dataset[["unique_id", "trans_date"]]
cutoff_df["trans_date"] = pd.to_datetime(cutoff_df["trans_date"])

##feature engg
feature_matrix_2, feature_names_2 = ft.dfs(entityset=entity_set
                                       ,target_entity = 'enh'
                                       ,max_depth = 2
                                       ,verbose = 1 
                                       ,ignore_entities = ['categorical_vars']
                                       ,ignore_variables =ignore_features_dict
                                       ,dask_kwargs={'cluster': cluster}
                                       ,cutoff_time=cutoff_df
                                      ,cutoff_time_in_index=False
                                       )

It's unable to generate any time series features. It's returning just all the features except the ones which are ignored.
  

Ответ №1:

При создании объекта вам нужно указать индекс времени, используя time_index аргумент, а не указывать тип переменной.

Это должно выглядеть следующим образом

 entity_set.entity_from_dataframe(entity_id='enh',
                                 dataframe=dataset,
                                 index='unique_id',
                                 time_index="Start_Date") 
  

Комментарии:

1. по-прежнему он не создавал никаких объектов, используя дату начала и cutoff_df. Я получил эту функцию 4. ДЕНЬ (Start_Date)>, <Функция: ГОД (Start_Date)>, <Функция: МЕСЯЦ (Start_Date)>, <Функция: ДЕНЬ НЕДЕЛИ (Start_Date)>]

2. Я не уверен, что понимаю проблему. cutoff_df не изменяет определения объектов, только значения, которые вы получаете при вычислении объектов. если вы получаете те функции, которые вы перечислили выше, это означает, что Featuretools создает объекты, используя начальную дату. если вы можете предоставить доступный для выполнения код, который показывает результат, который вы получаете, в сравнении с ожидаемым результатом, мы сможем лучше помочь.