[英]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.