您不需要包含到不需要成为模型一部分的模型字段中 - 根本不需要。
相反,您需要在预测过程中包含它们
例如,在下面的模型中,您只有 6 个字段作为输入(运营商、原点、目的地、dep_delay、taxi_out、距离)
#standardsql
CREATE OR REPLACE MODEL flights.ontime
OPTIONS
(model_type='logistic_reg', input_label_cols=['on_time']) AS
SELECT
IF(arr_delay < 15, 1, 0) AS on_time,
carrier,
origin,
dest,
dep_delay,
taxi_out,
distance
FROM `cloud-training-demos.flights.tzcorr`
WHERE arr_delay IS NOT NULL
在预测时,您可以使用所有额外的字段,如下所示(您可以将它们放在 SELECT 的任何位置 - 但请注意 - 预测的列将首先出现:
#standardsql
SELECT * FROM ml.PREDICT(MODEL `cloud-training-demos.flights.ontime`, (
SELECT
UNIQUE_CARRIER, -- extra column
ORIGIN_AIRPORT_ID, -- extra column
IF(arr_delay < 15, 1, 0) AS on_time,
carrier,
origin,
dest,
dep_delay,
taxi_out,
distance
FROM `cloud-training-demos.flights.tzcorr`
WHERE arr_delay IS NOT NULL
LIMIT 5
))
显然input_label_cols and data_split_col 有不同的用途
input_label_cols STRING 训练数据中的标签列名称。
data_split_col STRING 此选项标识用于拆分数据的列[分为训练集和评估集]。此列不能用作特征或标签,将自动从特征中排除。