Учебное пособие по BigQuery ML - «Ошибка в вычислении PREDICT: во входных данных найдено нулевое значение». - PullRequest
0 голосов
/ 02 сентября 2018

Я следую учебному пособию BQML о том, как предсказать вес ребенка при рождении на основании пола ребенка, продолжительности беременности и демографической информации о матери.

Когда выполняется SQL для оценки модели, BigQuery проверяет следующую ошибку:

Failure in computing PREDICT: Null value found in input.

Это оценочный SQL:

 #standardSQL
SELECT
  *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.natality_model`,
    (
    SELECT
      weight_pounds,
      is_male,
      gestation_weeks,
      mother_age,
      CAST(mother_race AS STRING) AS mother_race
    FROM
      `bigquery-public-data.samples.natality`
    WHERE
      weight_pounds IS NOT NULL))

enter image description here

SQL, использованный для создания модели:

#standardSQL
CREATE MODEL `bqml_tutorial.natality_model`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['weight_pounds']) AS
SELECT
  weight_pounds,
  is_male,
  gestation_weeks,
  mother_age,
  CAST(mother_race AS string) AS mother_race
FROM
  `bigquery-public-data.samples.natality`
WHERE
  weight_pounds IS NOT NULL
  AND RAND() < 0.001

Как ни странно, при прогнозировании все работает просто отлично. Проблема всегда при попытке оценить модель.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

BQML в настоящее время автоматически заполняет эти NULL для вас. Пожалуйста, попробуйте еще раз с исходными данными (без ненулевого фильтра).

0 голосов
/ 02 сентября 2018

Чтобы помочь понять проблему, вы можете запустить ниже

#standardSQL
SELECT
  COUNTIF(weight_pounds IS NULL) weight_pounds_nulls,
  COUNTIF(is_male IS NULL) is_male_nulls,
  COUNTIF(gestation_weeks IS NULL) gestation_weeks_nulls,
  COUNTIF(mother_age IS NULL) mother_age_nulls,
  COUNTIF(mother_race IS NULL) mother_race_nulls
FROM (
  SELECT
    weight_pounds,
    is_male,
    gestation_weeks,
    mother_age,
    CAST(mother_race AS STRING) AS mother_race
  FROM `bigquery-public-data.samples.natality`
  WHERE weight_pounds IS NOT NULL
)

с результатом как

Row weight_pounds_nulls is_male_nulls   gestation_weeks_nulls   mother_age_nulls    mother_race_nulls    
1   0                   0               4749775                 0                   9874846    

Итак, бегите ниже вместо этого для ОЦЕНКИ

#standardSQL
SELECT
  *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.natality_model`,
    (
      SELECT
        weight_pounds,
        is_male,
        gestation_weeks,
        mother_age,
        CAST(mother_race AS STRING) AS mother_race
      FROM `bigquery-public-data.samples.natality`
      WHERE weight_pounds IS NOT NULL
      AND gestation_weeks IS NOT NULL
      AND mother_race IS NOT NULL
     ))  

так что будет ниже оценки

Row mean_absolute_error mean_squared_error  mean_squared_log_error  median_absolute_error   r2_score                explained_variance   
1   0.957266870271064   1.6762698039982795  0.03411192361406951     0.73998132611964        0.047271288906207354    0.04732780918772106    

И вы должны сделать ту же настройку для PREDICT, я думаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...