2016-12-14 3 views
3

Я столкнулся с библиотекой TSfresh как способ фейтурировать данные временных рядов. Документация отличная, и она кажется идеально подходящей для проекта, над которым я работаю.Библиотека TSFRESH для python слишком долго обрабатывает

Я хотел реализовать следующий код, который был распространен в разделе быстрого запуска документации TFresh. И это кажется достаточно простым.

from tsfresh import extract_relevant_features 
feature_filtered_direct=extract_relevant_features(result,y,column_id=0,column_sort=1) 

Мои данные включали 400 000 строк данных датчиков, по 6 датчиков для 15 разных идентификаторов. Я начал запускать код, а через 17 часов он все еще не закончил. Я полагал, что это может быть слишком большим для набора данных для запуска через соответствующий экстрактор функций, поэтому я уменьшил его до 3000, а затем до 300. Ни одно из этих действий не запустило код за час, и я только что закончил закрыв его после часа или около того ожидания. Я попробовал стандартную функцию экстрактор, а

extracted_features = extract_features(timeseries, column_id="id", column_sort="time") 

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

Есть ли у кого-нибудь опыт работы с этим кодом? Как бы вы решили сделать работу быстрее? Я использую Anaconda для python 2.7.

Обновление Кажется, что это связано с многопроцессорной обработкой. Потому что я на окнах, с помощью многопроцессорных код требует, чтобы быть защищены

if __name__ == "__main__": 
    main() 

После того, как я добавил

if __name__ == "__main__": 

    extracted_features = extract_features(timeseries, column_id="id", column_sort="time") 

Для моего кода, примерные данные работали. У меня все еще есть проблемы с запуском функции extract_relevant_features и запуском модуля функций извлечения на моем собственном наборе данных. Кажется, что он продолжает бежать медленно. У меня есть чувство, связанное с многозадачным замораживанием, но без каких-либо ошибок выскакивать невозможно. Мне понадобилось около 30 минут для того, чтобы использовать функции менее 1% моего набора данных.

+0

Когда я запускаю скрипт из консоли, я получаю интересные сообщения об ошибках, которые, похоже, не отображаются в Anaconda. Эти сообщения об ошибках находятся в постоянном цикле, что может объяснить, почему функция так долго выполняет (бесконечно). Созданный RuntineError связан с freeze_support() Попытка запуска нового процесса до завершения начальной загрузки. Не знаю, что это значит –

ответ

3

какая версия tsfresh вы использовали? Какая ОС?

Мы знаем о высоких вычислительных расходах некоторых калькуляторов функций. Меньше мы можем с этим справиться. В будущем мы будем реализовывать некоторые трюки, такие как кеширование, чтобы повысить эффективность tsfresh.

Вы пробовали рассчитать только основные функции, используя MinimalFeatureExtractionSettings? Он будет содержать только основные функции, такие как Max, Min, Median и т. Д., Но должен работать, быстрее.

from tsfresh.feature_extraction import MinimalFeatureExtractionSettings 
extracted_features = extract_features(timeseries, column_id="id", column_sort="time", feature_extraction_settings = MinimalFeatureExtractionSettings()) 

Также это, вероятно, хорошая идея, чтобы установить последнюю версию с репо по pip install git+https://github.com/blue-yonder/tsfresh. Мы активно развиваем его, и мастер должен содержать новейшую и самую свежую версию;).

+0

В настоящее время я использую версию 0.3.0 в Windows 10.Я только что запустил модуль экстрактов объемом около 197 000 рядов данных, и потребовалось около 830. Его модуль выбора функций, который, кажется, занимает еще больше времени при работе. Полный комплимент функций чрезвычайно полезен в моем анализе. Чтобы масштабировать эту операцию до миллионов строк, потребуется довольно много вычислительной мощности. –

+0

Мы только что выпустили версию 0.4.0, она содержит объект настроек ReasonableFeatureExtraction, который будет извлекать все, кроме двух функций энтропии. С этим я могу обрабатывать 100 000 временных рядов длиной 1000, поэтому 100 миллионов строк примерно за 3 часа на i6800k (6 ядер при 4.3 Ghz). Далее я использую распараллеливание = "per_sample" – MaxBenChrist

 Смежные вопросы

  • Нет связанных вопросов^_^