Выполнение ft.dfs(...)
и ft.calculate_feature_matrix(...)
в некоторых временных рядах для извлечения дня, месяца и года из очень маленького фрейма данных (<1k строк) занимает около 800 мс.Когда я вообще не вычисляю функции, это все равно занимает около 750 мс.Чем вызваны эти издержки и как я могу их уменьшить? </p>
Я тестировал различные комбинации функций, а также тестировал их на множестве небольших фреймов данных, и время выполнения довольно постоянное и составляет 700-800 мс.
Я также проверил это на гораздо больших фреймах данных с> 1 миллионом строк.Время выполнения без каких-либо реальных функций (примитивов) довольно сравнимо примерно со временем для всех функций даты в пределах 80-90 секунд.Так что кажется, что время вычислений зависит от количества строк, но не от особенностей?
Я бегу с n_jobs = 1, чтобы избежать каких-либо странностей с параллелизмом.Мне кажется, что featuretools каждый раз выполняет какую-то настройку или настройку серверной части dask, что вызывает все накладные расходы.
es = ft.EntitySet(id="testing")
es = es.entity_from_dataframe(
entity_id="time_series",
make_index=True,
dataframe=df_series[[
"date",
"flag_1",
"flag_2",
"flag_3",
"flag_4"
]],
variable_types={},
index="id",
time_index="date"
)
print(len(data))
features = ft.dfs(entityset=es, target_entity="sales", agg_primitives=[], trans_primitives=[])
Фактический вывод кажется правильным, я просто удивлен, что FeatureTools потребовалось бы 800 мс, чтобы ничего не вычислять на небольшом кадре данных.Является ли решение просто избежать небольших фреймов данных и вычислить все с помощью пользовательского примитива на большом фрейме данных, чтобы уменьшить накладные расходы?Или есть более умный / более правильный способ использования ft.dfs(...)
или ft.compute_feature_matrix
.