我是datascience
和vertica
的新手。我在Vertica
文档中的autoregressor
上遵循此示例
https://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/AnalyzingData/MachineLearning/TimeSeries/AutoregressorExample.htm?tocpath=Analyzing%20Data%7CMachine%20Learning%20for%20Predictive%20Analytics%7CRegression%20Algorithms%7C_____1
如果我理解正确,我需要向模型提供训练数据,并使用模型进行预测。
训练数据如下(一年中的某一天和当天的温度(
select * from temp_data limit 10;
time | Temperature
---------------------+-------------
1981-01-01 00:00:00 | 20.7
1981-01-02 00:00:00 | 17.9
1981-01-03 00:00:00 | 18.8
1981-01-04 00:00:00 | 14.6
1981-01-05 00:00:00 | 15.8
1981-01-06 00:00:00 | 15.8
1981-01-07 00:00:00 | 15.8
1981-01-08 00:00:00 | 17.4
1981-01-09 00:00:00 | 21.8
1981-01-10 00:00:00 | 20
(10 rows)
我创建了型号SELECT AUTOREGRESSOR('AR_temperature', 'temp_data', 'Temperature', 'time' USING PARAMETERS p=3);
问题1-该示例也使用temp_data
表进行预测?为什么?temp_data
不是用于training
吗?我应该使用没有Temperature
列的test
数据?
SELECT PREDICT_AUTOREGRESSOR(Temperature USING PARAMETERS model_name='AR_temperature', npredictions=10) OVER(ORDER BY time) FROM temp_data; <-- why does the example use temp_data
问题2-我用一天时间创建了自己的表格。当我使用它进行预测时,我会得到错误
select * from my_temperature_data;
time | temperature
---------------------+-------------
2021-12-12 00:00:00 |
select predict_autoregressor(temperature using parameters model_name='ar_temperature') over(order by time) from my_temperature_data;
ERROR 5861: Error calling processPartition() in User Function predict_autoregressor at [src/Autoregression/PredictAR.cpp:149], error code: 0, message: One or more elements in the input data is invalid.
问题3-当我制作自己的表时,我必须同时使用Time
和temperature
列。仅仅拥有Time
不起作用(出现错误(。为什么?
请在下面找到答案
- 你是对的。应该使用测试数据
- 正如文档中所提到的,OVER子句对于时间戳列是强制性的,因为考虑了以前的时间戳。由于您的查询没有over((子句,所以它失败了,并出现了该错误。https://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/SQLReferenceManual/Functions/MachineLearning/PREDICT_AUTOREGRESSOR.htm
- 如2所述,PREDICT_AUTORREGRESSOR需要通过温度和时间才能工作