Fbprophet python windows 10 install

fbprophet 0.7.1

pip install fbprophet Copy PIP instructions

Released: Sep 5, 2020

Automatic Forecasting Procedure

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: MIT

Requires: Python >=3

Maintainers

Classifiers

  • Programming Language
    • Python
    • Python :: 3
    • Python :: 3.7

Project description

Prophet: Automatic Forecasting Procedure

Prophet is a procedure for forecasting time series data based on an additive model where non-linear trends are fit with yearly, weekly, and daily seasonality, plus holiday effects. It works best with time series that have strong seasonal effects and several seasons of historical data. Prophet is robust to missing data and shifts in the trend, and typically handles outliers well.

Full documentation and examples available at the homepage: https://facebook.github.io/prophet/

  • HTML documentation: https://facebook.github.io/prophet/docs/quick_start.html
  • Issue tracker: https://github.com/facebook/prophet/issues
  • Source code repository: https://github.com/facebook/prophet
  • Implementation of Prophet in R: https://cran.r-project.org/package=prophet

Other forecasting packages

Installation

Note: Installation requires PyStan, which has its own installation instructions. On Windows, PyStan requires a compiler so you’ll need to follow the instructions. The key step is installing a recent C++ compiler

Installation using Docker and docker-compose (via Makefile)

Simply type make build and if everything is fine you should be able to make shell or alternative jump directly to make py-shell .

To run the tests, inside the container cd python/fbprophet and then python -m unittest

Fbprophet python windows 10 install

1723 просмотра

3 ответа

Моя сборка продолжает сбой на Windows 10 для установки fbprophet в Anaconda со следующим сообщением:

команда, которая дается это:

Конда установить -c Конда-Forge fbprophet

Кто-нибудь успешно установил fbprophet на Windows 10? Если да, то, пожалуйста, укажите шаги.

Благодарю. Я попытался установить pip, но не повезло. У меня есть Mac, и мне удалось установить на него fbprophet без проблем.

Ответы (3)

1 плюс

1) Сначала установите Anaconda или miniconda на свой компьютер с Windows и добавьте путь conda python к переменной env в качестве python по умолчанию.

2) Откройте командную строку и выполните следующие команды.

Создать виртуальную среду conda (необязательно)

Установить компилятор c ++

libpython автоматически создаст и настроит для вас файл distutils.cfg в PYTHONPATH \ Lib \ distutils, но в случае неудачи используйте следующие инструкции для его настройки вручную

создайте distutils.cfg с помощью текстового редактора (например, notepad, notepad ++) и добавьте в этот файл следующие строки.

1 плюс

У меня была такая же проблема. Но это работает после того, как я следую за этими шагами:

По запросу установите Ephem:

conda install -c anaconda ephem

conda install -c conda-forge pystan

Наконец-то установите Fbprophet

conda install -c conda-forge fbprophet

0 плюса

Я столкнулся с той же проблемой, и мое решение было:

Создайте новую среду с Python3.5

Установите Prophet с помощью команды.

Я не установил «gcc», хотя это было рекомендовано до установки Prophet.

Can someone help me in installing python package “Prophet” on windows 10

Can someone help me in installing python package «Prophet» on windows 10 . I tried installing python 3.5 and the dependency ‘pystan’ but yet I get below error.

«The package setup script has attempted to modify files on your system that are not within the EasyInstall build area, and has been aborted.This package cannot be safely installed by EasyInstall, and may not support alternate installation locations even if you run its setup script by hand.Please inform the package’s author and the EasyInstall maintainers to find out if a fix or workaround is available. Command «python setup.py egg_info» failed with error code 1 in c:\users\suman\appdata\local\temp\pip-build-aqoiqs\fbprophet\»`

5 Answers 5

I spent a good two days on this issue, finally, I found the following solution

Читайте также:  Amlogic unpacker windows tool

1) Download and install Anaconda 3 (for python 3.6) 2) Create an environment and call it whatever you like 3) Run that environment (which will open the command prompt) 4) follow the following steps in command prompt : (commands are shown in bold)

python -m pip install -U pip Requirement already up-to-date: pip in c:\users\william\anaconda3\envs\testtime\lib\site-packages

conda install -c conda-forge pystan Fetching package metadata . Solving package specifications: .

Package plan for installation in environment C:\Users\William\Anaconda3\envs\Testtime:

The following NEW packages will be INSTALLED:

Предсказываем будущее с помощью библиотеки Facebook Prophet

Прогнозирование временных рядов — это достаточно популярная аналитическая задача. Прогнозы используются, например, для понимания, сколько серверов понадобится online-сервису через год, каков будет спрос на каждый товар в гипермаркете, или для постановки целей и оценки работы команды (для этого можно построить baseline прогноз и сравнить фактическое значение с прогнозируемым).

Существует большое количество различных подходов для прогнозирования временных рядов, такие как ARIMA, ARCH, регрессионные модели, нейронные сети и т.д.

Сегодня же мы познакомимся с библиотекой для прогнозирования временных рядов Facebook Prophet (в переводе с английского, «пророк», выпущена в open-source 23-го февраля 2017 года), а также попробуем в жизненной задаче – прогнозировании числа постов на Хабрехабре.

Библиотека

Согласно статье Facebook Prophet , был разработан для прогнозирования большого числа различных бизнес-показателей и строит достаточно хорошие default’ные прогнозы. Кроме того, библиотека дает возможность, изменяя человеко-понятные параметры, улучшать прогноз и не требует от аналитиков глубоких знаний устройства предсказательных моделей.

Давайте немного обсудим, как же работает библиотека Prophet . По сути, это additive regression model, состоящая из следующих компонент:

  1. Сезонные компонентыотвечают за моделирование периодических изменений, связанных с недельной и годовой сезонностью. Недельная сезонность моделируется с помощью dummy variables . Добавляются 6 дополнительных признаков, например, [monday, tuesday, wednesday, thursday, friday, saturday] , которые принимают значения 0 и 1 в зависимости от даты. Признак sunday , соответствующий седьмому дню недели, не добавляют, потому что он будут линейно зависеть от других дней недели и это будет влиять на модель.
    Годовая же сезонность моделируется рядами Фурье.
  2. Тренд— это кусочно-линейная или логистическая функция. С линейной функцией все понятно. Логистическая же функция вида позволяет моделировать рост с насыщением, когда при увеличении показателя снижается темп его роста. Типичный пример — это рост аудитории приложения или сайта.
    Кроме всего прочего, библиотека умеет по историческим данным выбирать оптимальные точки изменения тренда. Но их также можно задать и вручную (например, если известны даты релизов новой функциональности, которые сильно повлияли на ключевые показатели).
  3. Компонента отвечает за заданные пользователем аномальные дни, в том числе и нерегулярные, такие как, например, Black Fridays.
  4. Ошибкасодержит информацию, которая не учтена моделью.

Подробнее про алгоритмы можно прочитать в публикации Sean J. Taylor, Benjamin Letham «Forecasting at scale».

В этой же публикации представлено и сравнение mean absolute percentage error для различных методов автоматического прогнозирования временных рядов, согласно которому Prophet имеет существенно более низкую ошибку.

Давайте сначала разберемся, как оценивается качество моделей в статье, а затем перейдем к алгоритмам, с которыми сравнивали Prophet .

MAPE (mean absolute percentage error) — это средняя абсолютная ошибка нашего прогноза. Пусть — это показатель, а — это соответствущий этой величине прогноз нашей модели. Тогда — это ошибка прогноза, a — это относительная ошибка прогноза.

Читайте также:  Alterboy vst mac os

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

Кроме того, бывает полезно смотреть и на абсолютную ошибку MAE — mean absolute error , чтобы понимать, на сколько ошибается модель в абсолютных величинах.

Cтоит сказать пару слов о тех алгоритмах, с которыми сравнивали Prophet в публикации, тем более, большинство из них очень простые и их часто используют как baseline:

  • naive — наивный прогноз, когда мы прогнозируем все последующие значения последней точкой;
  • snaive — seasonal naive — такой прогноз подходит для данных с явно выраженной сезонностью. Например, если мы говорим о показатели с недельной сезонностью, то для каждого последующего понедельника мы будем брать значение за последний понедельник, для вторника — за последний вторник и так далее;
  • mean — в качестве прогноза берется среднее значение показателя;
  • arima — autoregressive integrated moving average — подробности на wiki;
  • ets — exponential smoothing — подробности на wiki.

Практика

Установка

Для начала необходимо установить библиотеку. Библиотека Prophet доступна для python и R . Я предпочитаю python , поэтому использовала именно его. Для python библиотека ставится с помощью PyPi следующим образом:

Под R у библиотеки есть CRAN package . Подробные инструкции по установке можно найти в документации.

Данные

В качестве показателя для предсказания я выбрала количество постов, опубликованных на Хабрахабре. Данные я взяла из учебного конкурса на Kaggle «Прогноз популярности статьи на Хабре». Тут рассказано подробнее о соревновании и курсе машинного обучения, в рамках которого оно проводится.

Для начала посмотрим на данные и построим time series plot за весь период. На таком длинном периоде удобнее смотреть на недельные точки.

Для визуализации я как обычно буду использовать библиотеку plot.ly , которая позволяет строить в python интерактивные графики. Подробнее про нее и визуализацию в целом можно почитать в статье Открытый курс машинного обучения. Тема 2: Визуализация данных c Python.

Построение прогноза

Библиотека Prophet имеет интерфейс похожий на sklearn , сначала мы создаем модель, затем вызываем у нее метод fit и затем получаем прогноз. На вход методу fit библиотека принимает dataframe с двумя колонками:

  • ds — время, поле должно быть типа date или datetime ,
  • y — числовой показатель, который мы хотим предсказывать.

Для того чтобы измерить качество полученного прогноза, уберем из обучения последний месяц данных и будем предсказывать его. Создатели советуют делать предсказания по нескольким месяцам данных, в идеале – год и более (в нашем случае есть несколько лет истории для обучения).

Далее создаем объект класса Prophet (все параметры модели задаются в конструкторе класса, для начала возьмем default’ные параметры) и обучаем его.

С помощью вспомогательной функции Prophet.make_future_dataframe создаем dataframe , который содержит все исторические временные точки и еще 30 дней, для которых мы хотели построить прогноз.

Для того, чтобы построить прогноз вызываем у модели функцию predict и передаем в нее полученный на предыдущем шаге dataframe future .

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

Во-первых, метод Prophet.plot отображает прогноз. Честно говоря, в данном случае такая визуализация не очень показательна. Основной вывод из этого графика, который я сделала — в данных много outlier ‘ов. Однако если при прогнозировании будет меньше исторических точек, то по ней можно будет что-нибудь понять.

Вторая функция Prophet.plot_components , на мой взгляд, гораздо более полезная. Она позволяет посмотреть отдельно на компоненты: тренд, годовую и недельную сезонность. Если при построении модели были заданы аномальные дни/праздники, то они также будут отображаться на этом графике.

На графике видно, что Prophet хорошо хорошо подстроился под рост числа постов «ступенькой» в начале 2015-го. По недельной сезонности можно сделать вывод, что меньше постов приходится на воскресенье и понедельник. На графике годовой сезонности ярче всего выделяется провал активности в Новогодние каникулы, также виден спад и на майских праздниках.

Читайте также:  Windows 10 1909 оригинальный образ iso

Оценка качества модели

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

Для начала посмотрим на объект forecast , который генерирует библиотека. На самом деле это dataframe , в котором есть вся необходимая нам информация для прогноза.

Прежде чем продолжить, нам нужно объединить forecast с нашими исходными наблюдениями.

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

В результате мы получили качество около 37.35% , а в среднем в прогнозе модель ошибается на 10.62 поста.

Визуализация

Давайте сделаем свою визуализацию построенной Prophet модели: с фактическими значениями, прогнозом и доверительными интервалами.

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

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

Визуально прогноз модели, кажется достаточно хорошим и разумным. Скорее всего такая низкая оценка качества объясняется аномальным высоким количеством постов 13 и 17 октября и снижением активности с 7 октября.

Также по графику можно сделать вывод, что большинство точек лежат внутри доверительного интервала.

Сравнение с ARIMA моделью

На глаз прогноз получился вполне разумным, но давайте сравним его с классической моделью SARIMA — Seasonal autoregressive integrated moving average с недельным периодом.

На Хабрахабре уже есть несколько статей про ARIMA -модели, всем интересующимся советую почитать их: Построение модели SARIMA с помощью Python+R и Анализ временных рядов с помощью python.

Для построения прогноза я также вдохновлялась учебными материалами курса Прикладные задачи анализа данных на Сoursera, в котором подробно описаны ARIMA -модели и как их строить на python .

Стоит отметить, что построение ARIMA модели требует гораздо больших затрат по сравнению с Prophet : нужно исследовать исходный ряд, привести его к стационарному, подобрать начальные приближения и потратить немало времени на подбор гипер-параметров алгоритма (на моем компьютере модель подбиралась почти 2 часа).

Но в данном случае усилия были не напрасны и предсказание SARIMA получилось более точным: MAPE=16.54%, MAE=7.28 поста . Лучшая модель с параметрами: D=1, d=1, Q=1, q=4, P=1, p=3 .

Но и Prophet , конечно же, можно еще потюнить. Например, если предсказывать в этой библиотеке не исходный ряд, а после преобразования Бокса-Кокса, нормализующего дисперсию ряда, то мы получим прирост качества: MAPE=26.79%, MAE=8.49 поста .

Мы познакомились с open-source библиотекой Prophet и ее использованием для предсказания временных рядов на практике.
Я бы не стала говорить, что эта библиотека творит чудеса и идеально предсказывает будущее. В нашем случае прогноз получился хуже стандартной SARIMA . Однако, библиотека Prophet достаточно удобная, легко кастомизируется (чего только стоит возможность добавления заранее известных аномальных дней), поэтому ее полезно иметь в своем аналитическом toolbox’e .

Полезные ссылки

Немного материалов для более глубокого изучения библиотеки Prophet и предсказаний временных рядов, в общем:

  • Prophet GitHub репозиторий
  • Prophet документация
  • Sean J. Taylor, Benjamin Letham «Forecasting at scale» — научная публикация, объясняющая алгоритм в основе библиотеки Prophet
  • Forecasting Website Traffic Using Facebook’s Prophet Library — пример использования для прогнозирования трафика на сайт
  • Rob J Hyndman, George Athana­sopou­los «Forecasting: principles and practice» – и напоследок, хорошая online-книга, рассказывающая об основах прогнозирования временных рядов
  • jupyter notebook с кодом для разобранного в этой статье примера
Оцените статью