Поскольку моя страсть связана с нелинейными временными рядами, будь то из физики или финансов, я постоянно исследую математические методы и методы машинного обучения, и вместо того, чтобы тратить время на кодирование чего-то с нуля, я искал хорошие библиотеки Python, у которых уже есть реализации. Вот некоторые из них, к которым я возвращаюсь снова и снова. Надеюсь, что некоторые из них пригодятся и вам!

seglearn -. Эта библиотека великолепна, потому что она может создавать данные временных рядов за вас, особенно если вы используете запаздывания и скользящие окна для контролируемых обучающих задач, таких как регрессия или классификация. Еще одна потрясающая вещь в этом заключается в том, что вы можете быстро вычислить множество характеристик, таких как эксцесс, абсолютная энергия, среднее значение, медиана, длина волны, изменение наклона, пересечение нуля и т. Д. Вы можете не только добавлять такие функции во входные данные, но вы также можете очень легко изменить цель (вывод). Например, вместо использования окна точек в качестве цели регрессии или классификации вы можете просто использовать медианное значение этих точек - все, что вам нужно сделать, это указать функцию. Главное преимущество заключается в том, что вы можете создавать конвейеры, которые обрабатывают весь процесс от начала до конца - предварительную обработку, преобразование и расширение функций, регрессию, оценку и т. Д.

pyts -. Эта библиотека великолепна из-за разнообразия используемых в ней концепций и методов. Вы можете использовать набор слов, методы типа дискретизации, такие как SAX, PAA и WEASEL. Вы можете использовать визуальные инструменты, такие как Грамиановое угловое поле, Рекуррентные графики. Существуют также различные утилиты для предварительной обработки или преобразования вашего набора данных, такие как дискретное преобразование Фурье, биннинг и т. Д. Наряду с этим я недавно использовал функцию анализа сингулярного спектра, чтобы выполнить некоторую декомпозицию и шумоподавление временных рядов. Вы также можете загрузить несколько наборов данных об игрушках, чтобы протестировать различные функции.

tslearn - у этого есть вычисление барицентра (которое я действительно не понимаю), методы кластеризации, учащиеся на основе опорных векторов, а также классификаторы типа K-средних, если вы собираются без присмотра. Когда дело доходит до аппроксимации или преобразований кусочного типа, у этого есть SAX и PAA, а также 1D SAX (который аппроксимирует временные ряды, используя символы не только для средних значений, но и для наклона.

nolitsa - это действительно для методов нелинейных временных рядов, которые вы видите в прикладной математике и физике. Он использует динамический системный подход к вещам, поэтому у вас есть функции, которые помогают оценить окно встраивания (ложные ближайшие соседи, средние ложные ближайшие соседи), а также задержку (функции автокорреляции, усредненная взаимная информация). Существуют утилиты для восстановления динамики системы, оценки размерности корреляции, вычисления максимального показателя Ляпунова временного ряда и т. Д. Я очень сильно полагаюсь на него в том, что я делаю.

nolds - меньшего размера, но в нем есть кое-что. Во-первых, он имеет хорошую реализацию выборочной энтропии, а также способ вычисления всех показателей Ляпунова (а не только максимального). Также полезны инструменты типа показателя Херста и анализа колебаний без тренда, которые измеряют, насколько стойким (сколько памяти) обладает временной ряд.

fireTS - я не так часто использовал этот, но выглядит потрясающе. Это позволяет вам использовать задержки вашей целевой переменной, а также задержки других экзогенных входов для выполнения регрессии. Вы можете указать порядок задержек и выбрать тип регрессора, который вам нужен, от случайного леса до XGB (экстремальное усиление градиента).