През последните няколко дни гледах курс за прогнозиране на времеви редове с помощта на R. Въпреки че не съм против програмирането на R, предпочитам да използвам Google Colab, който е безплатен онлайн Jupyter Notebook, който позволява програмиране на Python. Опитах се да намеря безплатен онлайн R интерпретатор, но тези, които намерих, не бяха подходящи за импортиране на библиотеки. Затова реших да гледам видеото и да се опитам да конвертирам всеки код, написан на R, в Python, вярвайки, че това не може да бъде толкова трудна задача.

Един алгоритъм, който е използван за прогнозиране на времеви серии, е случайното ходене с дрейф. Бях се запознал с алгоритъма за произволно ходене в по-ранно видео, което бях гледал, но странно, никога не бях срещал този алгоритъм в моите изследвания на Python времеви серии. Не съм виждал никакви функции за произволно ходене в statsmodels, което е основната библиотека на Python за времеви серии.

Проучих в интернет и наистина намерих примерен код за прости произволни разходки, но не бях виждал такъв алгоритъм, който може да се използва за прогнозиране на набор от данни от времеви серии. Затова реших да взема съществуващ код и да го импровизирам, за да мога да направя прогнози за набор от данни за времеви серии: в този случай това беше набор от данни относно продажбите на трактори.

Написах програмата в Google Colab, който е безплатен онлайн Jupyter Notebook, хостван от Google. Единственият недостатък, който виждам в Google Colab, е фактът, че няма адекватна функция за отмяна, въпреки че изтрита клетка може да бъде отменена с тази програма.

След като създадох програмата, импортирах библиотеките, които ще бъдат използвани за нейното изпълнение. Библиотеките, които бих използвал, бяха:

  1. Pandas се използва за създаване на кадри с данни и обработка на данни,
  2. NumPy се използва за извършване на числени изчисления и създаване на масиви NumPy,
  3. Математиката се използва за извършване на математически изчисления,
  4. Matplotlib е графичен пакет, който начертава точки от данни върху графика и
  5. Seaborn е графичен пакет от по-високо ниво, написан на гърба на matplotlib.

След като библиотеките бяха импортирани, използвах pandas, за да заредя набора от данни за продажбите на трактори, който намерих в хранилище на GitHub:

Използвах pandas, за да конвертирам колоната „mon_yr“ в дати, които ще ми трябват, за да начертая точките от данни върху графика:

След това използвах matplotlib, за да начертая точките от данни върху графика, като ги разделих между набори от влак и тест:

Използвах алгоритъма за произволно ходене чрез:

  1. Дефинира функцията RandomWalk1D, която ще извърши произволна разходка в едно измерение.
  2. Дефинира променливата max_step, която е максималното разстояние, което произволното ходене може да измине във всяка една стъпка.
  3. Дефинира променливите x и y. X беше инициализирано на 0, а y беше инициализирано на първия елемент от рамката с данни, X_test.
  4. Дефинира списъците xposition и yposition. xposition се инициализира на 0, а yposition на y.
  5. Създадох for цикъл, който ще итерира през дължината на рамката с данни, X_test. Зададох стъпка нагоре за създаване на произволно число между -1 и 1. Това произволно число беше умножено по стойността в max_step и добавено към списъка, y_position. Променливата x беше увеличена с 1 и добавена към списъка, xposition.
  6. Когато цикълът for завърши своите итерации, функцията върна списъците, xposition и y позицията.

След това извиках функцията, като използвах дължината на рамката с данни, X_test, като неин вход:

Дефинирах променливата, y_hat, която е вторият елемент на RandWalk, който беше създаден, когато извиках функцията RandomWalk1D:

Трябваше да премахна първия елемент на y_hat, защото беше дубликат на първия елемент на X_test:

След това изчислих грешките, използвайки средна квадратна грешка (MSE) и средна квадратна грешка (RMSE):

След това начертах точките от данни на y_hat, които са прогнозата, върху графика и сравних истинските стойности с прогнозираните стойности:

В обобщение, алгоритъмът за произволно ходене е добра отправна точка, която може да се използва за правене на прости прогнози, но не е много сложен или надежден. Random Walk с дрифт и STL работи много по-добре. Предполагам, че се върнах към чертожната дъска, за да се опитам да подобря уменията си за програмиране и да изградя такава функция.

Подготвил съм видео преглед на алгоритъма за произволно ходене, който можете да видите тук:

Повече съдържание в PlainEnglish.io. Регистрирайте се за нашиябезплатен седмичен бюлетин. Следвайте ни в Twitter и LinkedIn. Вижте нашия Community Discord и се присъединете към нашия Talent Collective.