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

Я хочу, чтобы 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 Ответ

0 голосов
/ 03 апреля 2019

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

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

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