machine-learning - BigQuery GCP 回归模型问题
问题描述
我正在实验室工作,以在 GCP 上的 BigQuery 中构建回归模型。我几乎完全按照这些步骤操作,但是我运行的最后一个查询失败了。这就是我所做的。
在 BigQuery 中,我单击“创建数据集”以使用默认选项创建数据集。
我创建了一个表格并上传了一个 CSV 文件,该文件下载了股票价格的分时数据。该表包括以下列:时间(这只是报价编号)、价格和交易量。我保留了所有默认选项,但我勾选了“自动检测”选项。
我运行了以下查询并将其保存到数据表中:
WITH raw AS ( SELECT Time, Price, LAG(Price, 1) OVER(ORDER BY Time) AS min_1_Price, LAG(Price, 2) OVER(ORDER BY Time) AS min_2_Price, LAG(Price, 3) OVER(ORDER BY Time) AS min_3_Price, LAG(Price, 4) OVER(ORDER BY Time) AS min_4_Price FROM `dataset.table` ORDER BY Time DESC ), raw_plus_trend AS ( SELECT Time, Price, min_1_Price, IF (min_1_Price - min_2_Price > 0, 1, -1) AS min_1_trend, IF (min_2_Price - min_3_Price > 0, 1, -1) AS min_2_trend, IF (min_3_Price - min_4_Price > 0, 1, -1) AS min_3_trend FROM raw ), ml_data AS ( SELECT Time, Price, min_1_Price AS day_prev_Price, IF (min_1_trend + min_2_trend + min_3_trend > 0, 1, -1) AS trend_3_day FROM raw_plus_trend ) SELECT * FROM ml_data
我通过运行此查询创建了一个回归模型:
CREATE OR REPLACE MODEL `dataset.model` OPTIONS ( model_type='linear_reg', input_label_cols=['Price'], data_split_method='seq', data_split_eval_fraction=0.3, data_split_col='Time') AS SELECT Time, Price, day_prev_Price, trend_3_day FROM `dataset.model_data`
这是我失败的地方。我运行了这个查询来做出预测,但它没有产生任何结果。我只是用 130000 作为我的时间,因为我表中的刻度只上升到 124256。
SELECT * FROM ml.PREDICT(MODEL `dataset.model`, ( SELECT * FROM `dataset.model_data` WHERE Time >= 130000) )
这里出了什么问题?最后,我还尝试了相同的查询,时间 >= 124256,它只产生了一行结果,结果与原始表中的价格相同。
解决方案
推荐阅读
- python - Python:实时或从 wav 文件获取音量分贝级别
- apache-flink - 如何在 Flink SQL 中使用 TUMBLE(time_attr, interval) 窗口函数
- javascript - 如何在 JavaScript 中获得附加的 accodian
- java - 使用过滤器/拦截器捕获相关的用户请求
- reactjs - React PWA 离线支持不适用于子 URL
- java - 未找到 Apache Ignite REPLICATED 缓存条目
- sql - 过程中的两个游标序列
- mysql - Seahorse Deepsense 的 JDBC 驱动程序 Jar 路径
- pandas - 从另一个数据框 pandas 获取相应的列值
- batch-file - 如何避免脚本的多个实例,同时允许在不更改标题的情况下再次启动它