预测是通过运行
ML_PREDICT_ROW
或
ML_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
使用预测和用于进行每个预测的特征填充输出表。