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,确保加载了你要使用的模型;例如:

CALL sys.ML_MODEL_LOAD(@census_model, NULL);

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

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

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,确保加载了你要使用的模型;例如:

CALL sys.ML_MODEL_LOAD(@census_model, NULL);

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

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

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 结果,查询输出表;例如:

SELECT * FROM heatwaveml_bench.census_predictions;

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