簡體   English   中英

在 QlikSense Desktop 中使用 Python(Pytools) 進行預測

[英]Forecasting using Python(Pytools) in 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 文件,然后打開位於 C:\\Users\\user-name\\Documents\\Qlik\\Sense\\Apps 中的 Qliksense Desktop 應用程序。

它只是在命令提示符中顯示這個:

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)
_

我還將兩個位置中的 init 文件更改為: 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 日志:2020 年 1 月 15 日星期三 11:03:33

先知參數:{'freq': 'M', 'debug': 'true'}

實例創建參數:{}

制作未來的數據框參數:{'periods': 0, 'freq': 'M'}

添加季節性參數:{}

擬合參數:{}

請求數據幀:(17, 2) 行 x cols

      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 cols

空數據幀列:[ds, y] 索引:[] ...空數據幀列:[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 cols

      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 cols

      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-58-01987

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' object 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 返回下一個(response_iterator),真

文件“ main .py”,第 342 行,在 _prophet 預測 = predictor.predict() 文件“C:\\Users\\user-name\\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 行,在 linspace

文件 "C:\\Users\\user-name\\Documents\\qlik-py-tools-6.3\\qlik-py-env\\lib\\site-packages\\numpy\\core\\function_base.py", line 121, in linspace .format(類型(數量)))

類型錯誤:類型的對象不能安全地解釋為整數。

終端顯示您的函數正在執行,因此問題在於發送到函數的數據。 嘗試在您的參數中傳遞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 或數據源中生成未來期間,如上述使用文檔中所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM