我正在研究在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) )
这是怎么回事?最后,我还尝试使用Time> = 124256进行相同的查询,它只产生一行结果,结果与原始表中的价格相同。