BigQuery GCP回归模型问题

时间:2020-07-18 23:52:31

标签: machine-learning google-cloud-platform google-bigquery regression

我正在研究在GCP上的BigQuery中建立回归模型的实验室。我几乎完全按照步骤进行操作,但是我运行的最后一个查询失败。这就是我所做的。

  1. 在BigQuery中,我单击“创建数据集”以使用默认选项创建数据集。

  2. 我创建了一个表格,并上传了我下载的股票价格报价数据的CSV文件。该表包括以下几列:时间(这只是刻度号),价格和数量。我保留了所有默认选项,但选中了“自动检测”选项。

  3. 我运行以下查询并将其保存到数据表中:

    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
    
  4. 我通过运行以下查询创建了回归模型:

    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`
    
  5. 这是我失败的地方。我运行了该查询以进行预测,但没有产生任何结果。我只用130000作为我的时间,因为表中的刻度仅上升到124256。

    SELECT
      *
    FROM
      ml.PREDICT(MODEL `dataset.model`,
        (
        SELECT
          *
        FROM
          `dataset.model_data`
        WHERE
          Time >= 130000) )
    

这是怎么回事?最后,我还尝试使用Time> = 124256进行相同的查询,它只产生一行结果,结果与原始表中的价格相同。

0 个答案:

没有答案