https://github.com/DidierRLopes/timeseries-cv

2 года назад Филипе Рамос, мой предыдущий учитель математики и вероятностей, зная, что у меня есть особый интерес к науке о данных, предложил мне помочь ему в его докторской диссертации Наука о данных в моделировании и предвидении серии экономико-финансовых исследований. : Классические методологии глубокого обучения».

Хотя мы обсуждали теорию, анализ и результаты, мой основной вклад состоял в том, чтобы написать код Python для диссертации.

В результате я написал модуль Python, который разбивает данные одномерные временные ряды на основе методов перекрестной проверки, чтобы их можно было передать в глубокую нейронную сеть (DNN) для извлечения ошибок обучения/проверки/тестирования.

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

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

В качестве параметров пользователь может выбрать не только количество входных данных (n_steps_input) и выходных данных (n_steps_forecast), но и количество выборок (n_steps_jump). ), чтобы перейти к данным для обучения.

Лучший способ установить пакет: pip install timeseries-cv, а затем использовать его с import tsxv. Посмотреть модуль, разработанный здесь.

Это можно увидеть более интуитивно, используя блокнот jupyter: «example.ipynb». Ниже вы можете найти пример использования каждой функции для следующих временных рядов:

timeSeries = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26])

Сплит-поезд

from tsxv.splitTrain import 
split_train, 
split_train_variableInput
X, y = split_train(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
X, y = split_train_variableInput(timeSeries, minSamplesTrain=10, n_steps_forecast=3, n_steps_jump=3)

Сплит Поезд Вал

from tsxv.splitTrainVal import 
split_train_val_forwardChaining, 
split_train_val_kFold, 
split_train_val_groupKFold
X, y, Xcv, ycv = split_train_val_forwardChaining(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
X, y, Xcv, ycv = split_train_val_kFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
X, y, Xcv, ycv = split_train_val_groupKFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)

Сплит-тест Вал поезда

from tsxv.splitTrainValTest import split_train_val_test_forwardChaining, 
split_train_val_test_kFold,
split_train_val_test_groupKFold
X, y, Xcv, ycv, Xtest, ytest = split_train_val_test_forwardChaining(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
X, y, Xcv, ycv, Xtest, ytest = split_train_val_test_kFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
X, y, Xcv, ycv, Xtest, ytest = split_train_val_test_groupKFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)

Этот модуль использовался не только для диссертации моих друзей, но и для компании Data Science и Gamestonk Terminal, о которых я знаю :)

Вы можете проверить статистику модуля здесь.

Хороших выходных,
Дидье