Прогнозирование с использованием Python (Pytools) в QlikSense Desktop - PullRequest
0 голосов
/ 13 января 2020

Я использую последнюю версию 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 \ имя пользователя \ 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 / Программы / Qlik / Sense / Engine. Добавлены настройки SSE для обоих файлов.

enter image description here

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

 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

Параметры пророка: {'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] Индекс: []

Прогноз не может быть создан, так как запрос содержит менее двух ненулевых строки

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

          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 - ОШИБКА - Исключительные итеративные ответы: объект типа не может быть безопасно интерпретирован как целое число.

Traceback (последний вызов был последним): файл "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 не может быть интерпретирован как целое число

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

Traceback (последний вызов был последним): Файл "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) , True

Файл " main .py", строка 342, в файле _prophet Forex = Forextor.predict () "C: \ Users \ user-name \ Docum ents \ qlik-py-tools-6.3 \ qlik-py-env \ core_prophet.py ", строка 272, в прогнозе self.model.fit (self.input_df, ** self.fit_kwargs)

File" C: \ Users \ имя пользователя \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ fbprophet \ forecaster.py ", строка 1032, в соответствии с self.set_changepoints ()

Файл "C: \ Users \ имя пользователя \ 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)

Файл "<<strong> array_function innerals>", строка 6, в linspace

Файл "C: \ Users \ имя пользователя \ Documents \ qlik-py-tools-6.3 \ qlik-py-env \ lib \ site-packages \ numpy \ core \ function_base.py", строка 121, в linspace. format (type (num)))

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

1 Ответ

1 голос
/ 15 января 2020

Терминал показывает, что ваша функция выполняется, поэтому проблема в том, что данные отправляются в функцию. Попробуйте передать 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 или в источнике данных, как объяснено в использовании до c выше.

...