Прогнозирование с использованием Python (Pytools) в QlikSense Desktop

Я использую последнюю версию QlikSense Desktop и пытаюсь выполнить прогнозирование с помощью Pytools.Prophet.

Но он не показывает мне результат. Вот данные и функция, которые я использовал.

PyTools.Prophet([Data_col.autoCalendar.Date],Avg(Shipments),'freq=M'). I am not getting the forecast line.

Инструменты Qlik py находятся в папке C: \ Users \ user-name \ Documents \ qlik-py-tools-6.2, и я запускаю файл «Qlik-Py-Start.bat».

Я запускаю файл .bat, а затем открываю приложение Qliksense Desktop, которое находится в C: \ Users \ user-name \ Documents \ Qlik \ Sense \ Apps.

Это просто отображается в командной строке:

2020-01-13 21:49:45,114 - INFO - Adding to capabilities: Prophet_Multivariate(['a_date', 'b_value', 'c_holidays', 'd_added_regressors', 'e_regressor_args', 'f_other_args'])
2020-01-13 21:49:45,114 - INFO - Adding to capabilities: Prophet_Seasonality_Multivariate(['a_season', 'b_time_series', 'c_holidays', 'd_added_regressors', 'e_regressor_args', 'f_other_args'])
2020-01-13 21:49:45,114 - INFO - Adding to capabilities: sklearn_Calculate_Metrics_Sequence(['a_model_name', 'b_key', 'n_features'])
2020-01-13 21:54:15,378 - INFO - ipv6:[::1]:55612 - Capability 'Prophet' called by user Personal\Me from app C:\Users\user-name\Documents\Qlik\Sense\Apps\forecastv2.qvf
2020-01-13 21:54:15,379 - INFO - ExecuteFunction (functionId: 5, _prophet)
_

Я также изменил файл инициализации в обоих местах на: SSEPlugin=PyTools,localhost:50055; один в C: / Users // Documents / Qlik / Sense /, а другой в C: / Users / AppData / Local / Programs / Qlik / Sense / Engine. В оба файла добавлены настройки SSE.

введите описание изображения здесь

Вот данные, которые я использую:

 Quarter    Shipments
1/1/1986    4009
2/1/1986    4123
3/1/1986    4493
4/1/1986    4595
5/1/1986    4245
6/1/1986    4321
7/1/1986    4522
8/1/1986    4806
9/1/1986    4799
10/1/1986   4900
11/1/1986   400
12/1/1986   5000
1/1/1987    3000
2/1/1987    2456
3/1/1987    1234
4/1/1987    3456
5/1/1987    7878

Here is the debug result:

Журнал ProphetForQlik: среда, 15 января, 11:03:33 2020

Параметры Prophet: {'freq': 'M', 'debug': 'true'}

Параметры создания экземпляра: {}

Задайте параметры будущего кадра данных: {'period': 0, 'freq': 'M'}

Добавьте параметры сезонности: {}

Параметры соответствия: {}

ЗАПРОСИТЬ КАДР ДАННЫХ: (17, 2) строк x столбцы

      ds           y
   0 1986-01-01  4009.0
   1 1986-02-01  4123.0
   2 1986-03-01  4493.0
   3 1986-04-01  4595.0
   4 1986-05-01  4245.0
    ...
       ds       y
   12 1987-01-01  3000.0
   13 1987-02-01  2456.0
   14 1987-03-01  1234.0
   15 1987-04-01  3456.0
   16 1987-05-01  7878.0

КАДР ВХОДНЫХ ДАННЫХ: (0, 2) строки x столбцы

Пустые столбцы DataFrame: [ds, y] Индекс: [] ... Пустые столбцы DataFrame: [ds, y] Индекс: []

Невозможно создать прогноз, так как запрос содержит менее двух строк, отличных от Null.

Когда я передаю эти данные:

          Quarter   Shipments
1/1/1986    4009
2/1/1986    4123
3/1/1986    4493
4/1/1986    4595
5/1/1986    4245
6/1/1986    4321
7/1/1986    4522
8/1/1986    4806
9/1/1986    4799
10/1/1986   4900
11/1/1986   400
12/1/1986   5000
1/1/1987    3000
2/1/1987    2456
3/1/1987    1234
4/1/1987    3456
5/1/1987    7878
6/1/1987    
7/1/1987    
8/1/1987    

Когда я использую эти данные с будущими значениями, Python выдает ошибку.

ЗАПРОСИТЬ КАДР ДАННЫХ: (22, 2) строки x столбцы

      ds       y
  0 1986-01-01  4009.0
  1 1986-02-01  4123.0
  2 1986-03-01  4493.0
  3 1986-04-01  4595.0
  4 1986-05-01  4245.0
  ...
       ds   y
 17 1987-06-01 NaN
18 1987-07-01 NaN
19 1987-08-01 NaN
20 1987-09-01 NaN
21 1987-10-01 NaN

КАДР ВХОДНЫХ ДАННЫХ: (17, 2) строк x столбцы

      ds       y
0 1986-01-01  4009.0
1 1986-02-01  4123.0
2 1986-03-01  4493.0
3 1986-04-01  4595.0
4 1986-05-01  4245.0

... ds y 12 1987-01-01 3000.0 13 1987-02-01 2456.0 14 1987-03-01 1234.0 15 1987-04-01 3456.0 16 1987-05-01 7878.0

2020-01-15 11: 59: 36,511 - ОШИБКА - Итерационные ответы исключения: объект типа нельзя безопасно интерпретировать как целое число.

Отслеживание (последний вызов последним): Файл "C: \ Users \ user-name \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ numpy \ core \ function_base.py", строка 117, в linspace num = operator.index (num) TypeError: объект 'numpy.float64' c аннотация интерпретируется как целое число

Во время обработки вышеуказанного исключения произошло другое исключение:

Отслеживание (последний вызов последним): файл "C: \ Users \ user-name \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ grpc_server.py", строка 453, в _take_response_from_response_iterator return next (response_iterator), Истина

Файл "main .py", строка 342, в _prophet прогноз = predictor.predict () Файл "C: \ Users \ имя-пользователя \ Documents \ qlik-py-tools-6.3 \ qlik-py -env \ core_prophet.py ", строка 272, в прогнозе self.model.fit (self.input_df, ** self.fit_kwargs)

Файл "C: \ Users \ user-name \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ fbprophet \ forecaster.py", строка 1032, соответствует self.set_changepoints ()

Файл "C: \ Users \ user-name \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ fbprophet \ forecaster.py", строка 347, в set_changepoints np.linspace (0 , hist_size - 1, self.n_changepoints + 1)

Файл "‹ array_function internals> ", строка 6, в внутреннем пространстве

Файл "C: \ Users \ user-name \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ numpy \ core \ function_base.py", строка 121, в linspace .format ( тип (число)))

TypeError: объект типа нельзя безопасно интерпретировать как целое число.


person MAC    schedule 13.01.2020    source источник


Ответы (1)


Терминал показывает, что ваша функция выполняется, поэтому проблема в данных, отправляемых в функцию. Попробуйте передать debug=true в своих аргументах (в дополнение к freq) и проследите шаги, предпринимаемые в Python.

PyTools.Prophet([Data_col.autoCalendar.Date],Avg(Shipments),'freq=M, debug=True')

Судя по опубликованным вами данным, очевидная проблема заключается в том, что вам не хватает будущих периодов. Прогноз создается для ряда будущих периодов, которые необходимо передать из Qlik в виде поля даты и времени со значением NULL для меры.

Подробная информация содержится в документации по использованию на GitHub: https://github.com/nabeel-oz/qlik-py-tools/blob/master/docs/Prophet.md

Обновление: добавленные вами журналы отладки подтверждают, что входные данные не содержат будущих периодов. Вы можете увидеть это под Make future data frame parameters. В этом случае фрейм входных данных оказывается пустым, и вы не получите прогноза. Вам нужно будет сгенерировать будущие периоды в Qlik или в источнике данных, как описано в документации по использованию выше.

person Nabeel Asif    schedule 15.01.2020
comment
Обновлен результат с новым фреймом данных. - person MAC; 15.01.2020
comment
Эта новая ошибка, которую вы получаете, связана с несовместимостью между последней версией numpy и fbprophet. Это исправлено в последней версии PyTools (v.6.4) и связанная проблема на GitHub. - person Nabeel Asif; 17.01.2020
comment
По-прежнему возникает ошибка. Обновлена ​​ошибка в github.com/nabeel-oz/qlik-py- tools / issues / 86 - person MAC; 17.01.2020