

我们不再更新 Amazon Machine Learning 服务，也不再接受新用户使用该服务。本文档可供现有用户使用，但我们不会再对其进行更新。有关更多信息，请参阅[什么是 Amazon Machine Learning](https://docs.aws.amazon.com/machine-learning/latest/dg/what-is-amazon-machine-learning.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 请求实时预测
<a name="requesting-real-time-predictions"></a>

实时预测是对 Amazon Machine Learning (Amazon ML) 的同步调用。Amazon ML 在收到请求时进行预测，并立即返回响应。实时预测通常用于实现交互式 Web、移动或桌面应用程序中的预测功能。您可以使用低延迟 `Predict` API，查询使用 Amazon ML 创建的 ML 模型进行实时预测。`Predict` 操作接受请求负载中的单个输入观察并在响应中同步返回预测。这使其有别于批量预测 API，后者使用指向输入观察位置的 Amazon ML 数据源对象的 ID 进行调用，并异步返回 URI，指向包含所有这些观察的预测的文件。Amazon ML 响应大多数实时预测请求的时间不超过 100 毫秒。

您可以在 Amazon ML 控制台中尝试实时预测而不产生任何费用。如果您随后决定使用实时预测，您必须首先为生成实时预测而创建终端节点。您可以在 Amazon ML 控制台中或者使用 `CreateRealtimeEndpoint` API 执行此操作。在您有终端节点之后，使用实时预测 API 来生成实时预测。

**注意**  
在您为模型创建实时终端节点之后，您将开始产生基于模型大小的容量预留费用。有关更多信息，请参阅[定价](https://aws.amazon.com/machine-learning/pricing/)。如果您在控制台中创建实时终端节点，控制台会显示终端节点将持续产生的估计费用明细。要在您不再需要从模型获取实时预测时停止产生费用，请使用控制台或 `DeleteRealtimeEndpoint` 操作删除实时终端节点。

有关 `Predict` 请求和响应的示例，请参阅 *Amazon Machine Learning API 参考*中的[预测](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html)。要查看使用您模型的确切响应格式的示例，请参阅[试用实时预测](#testing-real-time-predictions)。

**Topics**
+ [试用实时预测](#testing-real-time-predictions)
+ [创建实时终端节点](#creating-a-real-time-endpoint)
+ [查找实时预测终端节点（控制台）](#locate-endpoint-by-console)
+ [查找实时预测终端节点 (API)](#locating-the-real-time-prediction-endpoint)
+ [创建实时预测请求](#real-time-prediction-request-format)
+ [删除实时终端节点](#delete-endpoint)

## 试用实时预测
<a name="testing-real-time-predictions"></a>

为了帮助您决定是否启用实时预测，Amazon ML 允许您尝试针对单个数据记录生成预测，而不会产生与设置实时预测终端节点相关的额外费用。要试用实时预测，您必须拥有 ML 模型。要创建更大规模的实时预测，请使用 *Amazon Machine Learning API 参考*中的[预测](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html) API。

**尝试实时预测**

1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台，网址为[https://console.aws.amazon.com/machinelearning/](https://console.aws.amazon.com/machinelearning/)。

1. 在导航栏的 **Amazon Machine Learning** 下拉菜单中，选择 **ML 模型**。

1. 从教程中选择您试用实时预测所要使用的模型，例如 `Subscription propensity model`。

1. 在 ML 模型报告页面的**预测**下，选择**摘要**，然后选择**尝试实时预测**。  
![\[Tools section with option to try real-time predictions.\]](http://docs.aws.amazon.com/zh_cn/machine-learning/latest/dg/images/try-real-time.png)

   Amazon ML 显示变量列表，这些变量组成了 Amazon ML 训练您模型时使用的数据记录。

1. 您可以继续在表单的各个字段中输入数据，或者以 CSV 格式粘贴单个数据记录到文本框中。

   要使用表单，对于各个**值**字段，输入您希望用于测试实时预测的数据。如果您输入的数据记录不包含一个或多个数据属性的值，请将条目字段留空。

   要提供数据记录，请选择**粘贴记录**。将 CSV 格式的一行数据粘贴到文本字段中，然后选择**提交**。Amazon ML 自动为您填充**值**字段。
**注意**  
数据记录中的数据必须与训练数据具有相同的列数，并且按相同顺序排列。唯一例外是您应省略目标值。如果您包括目标值，Amazon ML 将忽略它。

1. 在页面底部，选择**创建预测**。Amazon ML 立即返回预测。

   在**预测结果**窗格中，您可以看到 `Predict` API 调用返回的预测对象，以及 ML 模式类型、目标变量的名称以及预测的类别或值。有关解释结果的更多信息，请参阅[解释二进制分类 ML 模型的批量预测文件的内容](reading-the-batchprediction-output-files.md#interpreting-the-contents-of-batch-prediction-files-for-a-binary-classification-ml-model)。  
![\[Prediction results showing binary ML model type with predicted label 0 and score details.\]](http://docs.aws.amazon.com/zh_cn/machine-learning/latest/dg/images/real-time-result.png)

## 创建实时终端节点
<a name="creating-a-real-time-endpoint"></a>

要生成实时预测，您需要创建实时终端节点。要创建实时终端节点，您必须已经有要用于生成实时预测的 ML 模型。您可以使用 Amazon ML 控制台或者调用 `CreateRealtimeEndpoint` API 来创建实时终端节点。有关使用 `CreateRealtimeEndpoint` API 的更多信息，请参阅《Amazon Machine Learning API 参考》中的 [https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_CreateRealtimeEndpoint.html](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_CreateRealtimeEndpoint.html)。

**创建实时终端节点**

1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台，网址为[https://console.aws.amazon.com/machinelearning/](https://console.aws.amazon.com/machinelearning/)。

1. 在导航栏的 **Amazon Machine Learning** 下拉菜单中，选择 **ML 模型**。

1. 选择要生成实时预测的模型。

1. 在 **ML 模型摘要**页面上的**预测**下，选择**创建实时终端节点**。

   此时会显示一个对话框，说明如何为实时预测定价。

1. 选择**创建**。实时终端节点请求发送到 Amazon ML 并进入队列中。实时终端节点的状态为**正在更新**。  
![\[Real-time endpoint status shown as "Updating" in a user interface element.\]](http://docs.aws.amazon.com/zh_cn/machine-learning/latest/dg/images/endpoint-updating.png)

1. 实时终端节点就绪之后，状态更改为**准备就绪**，并且 Amazon ML 显示终端节点 URL。使用终端节点 URL 可通过 `Predict` API 创建实时预测请求。有关使用 `Predict` API 的更多信息，请参阅《Amazon Machine Learning API 参考》中的 [https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html)。  
![\[Real-time endpoint status showing Ready with an endpoint URL and Peak Requests Per Second value.\]](http://docs.aws.amazon.com/zh_cn/machine-learning/latest/dg/images/endpoint-ready.png)

## 查找实时预测终端节点（控制台）
<a name="locate-endpoint-by-console"></a>

要使用 Amazon ML 控制台查找 ML 模型的终端节点 URL，请导航到模型的 **ML 模型摘要**页面。

**查找实时终端节点 URL**

1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台，网址为[https://console.aws.amazon.com/machinelearning/](https://console.aws.amazon.com/machinelearning/)。

1. 在导航栏的 **Amazon Machine Learning** 下拉菜单中，选择 **ML 模型**。

1. 选择要生成实时预测的模型。

1. 在 **ML 模型摘要**页面上，向下滚动直至您看到**预测**部分。

1. 模型的终端节点 URL 在**实时预测**中列出。使用 URL 作为您实时预测调用的**终端节点 Url**。有关如何使用终端节点生成预测的信息，请参阅《Amazon Machine Learning API 参考》中的 [https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html)。

## 查找实时预测终端节点 (API)
<a name="locating-the-real-time-prediction-endpoint"></a>

在您使用 `CreateRealtimeEndpoint` 操作创建实时终端节点时，在响应中向您返回终端节点的 URL 和状态。如果您使用控制台创建实时终端节点，或者如果您希望检索以前创建的终端节点的 URL 和状态，请使用您要用来查询实时预测的模型的 ID 调用 `GetMLModel` 操作。终端节点信息包含在响应的 `EndpointInfo` 部分中。对于关联了实时终端节点的模型，`EndpointInfo` 可能类似于：

```
"EndpointInfo":{
    "CreatedAt": 1427864874.227,
    "EndpointStatus": "READY",
    "EndpointUrl": "https://endpointUrl",
    "PeakRequestsPerSecond": 200
}
```

没有实时终端节点的模型将返回以下内容：

```
EndpointInfo":{
    "EndpointStatus": "NONE",
    "PeakRequestsPerSecond": 0
}
```

## 创建实时预测请求
<a name="real-time-prediction-request-format"></a>

示例 `Predict` 请求有效负载可能类似于下面这样：

```
{
    "MLModelId": "model-id",
    "Record":{
        "key1": "value1",
        "key2": "value2"
    },
    "PredictEndpoint": "https://endpointUrl"
}
```

`PredictEndpoint` 字段必须对应于 `EndpointInfo` 结构的 `EndpointUrl` 字段。Amazon ML 使用此字段将请求路由到实时预测队列中的相应服务器。

`MLModelId` 是以前训练的模型（带有实时终端节点）的标识符。

`Record` 是变量名到变量值的映射。每一对表示一个观察。`Record` 映射包含对 Amazon ML 模型的输入。这类似于训练数据集中无目标变量的单行数据。无论训练数据中的值类型如何，都`Record`包含 string-to-string映射。

**注意**  
您可以忽略您没有值的变量，不过这可能会减少预测的准确性。您包括的变量越多，模型就越准确。

`Predict` 请求返回的响应格式取决于进行预测时查询的模型类型。在所有情况下，`details` 字段包含有关预测请求的信息，特别是包括带有模型类型的 `PredictiveModelType` 字段。

以下示例显示二进制模型的响应：

```
{
    "Prediction":{
        "details":{
            "PredictiveModelType": "BINARY"
        },
        "predictedLabel": "0",
        "predictedScores":{
            "0": 0.47380468249320984
        }
    }
}
```

请注意包含预测标签的 `predictedLabel` 字段，在本例中为 0。Amazon ML 将预测分数与分类截断值进行比较来计算预测标签。
+ 您可以检查 `GetMLModel` 操作的响应中的 `ScoreThreshold` 字段，或者在 Amazon ML 控制台中查看模型信息，来获取当前与 ML 模型关联的分类截断值。如果您未设置分数阈值，Amazon ML 会使用默认值 0.5。
+ 您可以通过检查 `predictedScores` 映射来获取二进制分类模型的确切预测分数。在此映射中，预测标签与确切的预测分数成对使用。

有关二进制预测的更多信息，请参阅[解释预测](binary-model-insights.md#interpreting-the-predictions)。

以下示例显示来自递归模型的响应。请注意在 `predictedValue` 字段中找到的预测数值：

```
{
    "Prediction":{
        "details":{
            "PredictiveModelType": "REGRESSION"
        },
        "predictedValue": 15.508452415466309
    }
}
```

以下示例显示多类别模型的响应：

```
{
    "Prediction":{
        "details":{
            "PredictiveModelType": "MULTICLASS"
        },
        "predictedLabel": "red",
        "predictedScores":{
            "red": 0.12923571467399597,
            "green": 0.08416014909744263,
            "orange": 0.22713537514209747,
            "blue": 0.1438363939523697,
            "pink": 0.184102863073349,
            "violet": 0.12816807627677917,
            "brown": 0.10336143523454666
        }
    }
}
```

与二元分类模型类似，预测 label/class 值可以在`predictedLabel`现场找到。您可以通过查看 `predictedScores` 映射，进一步了解预测与各分类相关联的强度。此映射中某个分类的分数越高，预测与该分类的相关性就越强，最高值最终被选择作为 `predictedLabel`。

有关多分类预测的更多信息，请参阅[多类别模型洞察](multiclass-model-insights.md)。

## 删除实时终端节点
<a name="delete-endpoint"></a>

当您完成实时预测时，请删除实时终端节点以避免产生额外的费用。在您删除终端节点之后，立即停止产生费用。

**删除实时终端节点**

1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台，网址为[https://console.aws.amazon.com/machinelearning/](https://console.aws.amazon.com/machinelearning/)。

1. 在导航栏的 **Amazon Machine Learning** 下拉菜单中，选择 **ML 模型**。

1. 选择不再需要实时预测的模型。

1. 在 ML 模型报告页面上的**预测**下，选择**摘要**。

1. 选择**删除实时终端节点**。

1. 在**删除实时终端节点**对话框中，选择**删除**。