3.6 预测

预测是通过运行 ML_PREDICT_ROWML_PREDICT_TABLE 在未标记的数据上生成的;也就是说,它必须具有与用于训练模型的数据相同的特征列,但没有目标列。

ML_PREDICT_ROW 为一行或多行数据生成预测。 ML_PREDICT_TABLE 为整个数据表生成预测并将结果保存到输出表。

行预测

ML_PREDICT_ROW 为格式中指定的一行或多行数据生成预测JSON。它是使用 SELECT语句调用的。有关 ML_PREDICT_ROW 参数说明,请参阅 第 3.10.4 节,“ML_PREDICT_ROW”

运行前 ML_PREDICT_ROW,确保加载了你要使用的模型;例如:

Press CTRL+C to copy
CALL sys.ML_MODEL_LOAD(@census_model, NULL);

有关加载模型的更多信息,请参阅 第 3.9.3 节,“加载模型”

以下示例 在分配给会话变量 ML_PREDICT_ROW 的单行未标记数据上 运行:@row_input

Press CTRL+C to copy
SET @row_input = JSON_OBJECT( "age", 25, "workclass", "Private", "fnlwgt", 226802, "education", "11th", "education-num", 7, "marital-status", "Never-married", "occupation", "Machine-op-inspct", "relationship", "Own-child", "race", "Black", "sex", "Male", "capital-gain", 0, "capital-loss", 0, "hours-per-week", 40, "native-country", "United-States"); SELECT sys.ML_PREDICT_ROW(@row_input, @census_model);

在哪里:

  • @row_input是包含一行未标记数据的会话变量。数据以JSON键值格式指定。列名必须与训练数据集中的特征列名匹配。

  • @census_model是包含模型句柄的会话变量。

ML_PREDICT_ROW 返回一个JSON对象,该对象包含 "Prediction"具有预测值的键和用于进行预测的特征值。

您还可以 ML_PREDICT_ROW 对从表中选择的多行数据运行。有关示例,请参阅 第 3.10.4 节“ML_PREDICT_ROW”中的语法示例。

表格预测

ML_PREDICT_TABLE 为整个未标记数据表生成预测并将结果保存到输出表。预测是并行进行的。有关 ML_PREDICT_TABLE 参数说明,请参阅 第 3.10.5 节,“ML_PREDICT_TABLE”

ML_PREDICT_TABLE 是一个计算密集型过程。建议通过将大表拆分为较小的表来将操作限制为 10 到 100 行的批次。

运行前 ML_PREDICT_TABLE,确保加载了你要使用的模型;例如:

Press CTRL+C to copy
CALL sys.ML_MODEL_LOAD(@census_model, NULL);

有关加载模型的更多信息,请参阅 第 3.9.3 节,“加载模型”

以下示例创建一个包含 10 行未标记测试数据的表,并为该表生成预测:

Press CTRL+C to copy
CREATE TABLE heatwaveml_bench.census_test_subset AS SELECT * FROM heatwaveml_bench.census_test LIMIT 10; CALL sys.ML_PREDICT_TABLE('heatwaveml_bench.census_test_subset', @census_model, 'heatwaveml_bench.census_predictions');

在哪里:

  • heatwaveml_bench.census_test_subset是测试数据集表 ( schema_name.table_name) 的完全限定名称。该表必须具有与训练数据集相同的特征列名称,但没有目标列。

  • @census_model是包含模型句柄的会话变量。

  • heatwaveml_bench.census_predictions是存储预测的输出表。如果表不存在,则创建该表。必须指定完全限定的表名 ( schema_name.table_name)。如果该表已经存在,则返回错误。

查看 ML_PREDICT_TABLE 结果,查询输出表;例如:

Press CTRL+C to copy
SELECT * FROM heatwaveml_bench.census_predictions;

ML_PREDICT_TABLE 使用预测和用于进行每个预测的特征填充输出表。