

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

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

# 数据重新排列
<a name="data-rearrangement"></a>

 数据重新排列功能使您可以仅基于所指向的一部分输入数据创建数据源。例如，当您在 Amazon ML 控制台中使用**创建机器学习模型**向导创建 ML 模型并选择了默认评估选项时，Amazon ML 自动保留 30% 的数据用于 ML 模型评估，使用另外的 70% 进行训练。此功能由 Amazon ML 的数据排列功能启用。

 如果您在使用 Amazon ML API 创建数据源，您可以指定新数据源将基于哪一部分的输入数据。为此，您可以将`DataRearrangement`参数中的指令传递给`CreateDataSourceFromS3`、`CreateDataSourceFromRedshift`或`CreateDataSourceFromRDS` APIs。 DataRearrangement 字符串的内容是一个 JSON 字符串，其中包含数据的起始和结束位置，以百分比、补码标志和拆分策略表示。例如，以下 DataRearrangement 字符串指定前 70% 的数据将用于创建数据源：

```
{
    "splitting": {
        "percentBegin": 0,
        "percentEnd": 70,
        "complement": false,
        "strategy": "sequential"
    }
}
```

## DataRearrangement 参数
<a name="data-rearrangement-terms"></a>

要更改 Amazon ML 创建数据源的方式，请使用以下参数。

**PercentBegin （可选）**  
使用 `percentBegin` 指示数据源的数据开始位置。如果您未包括 `percentBegin` 和 `percentEnd`，Amazon ML 将在创建数据源时包括所有数据。  
有效值为 `0` 到 `100`（含）。

**PercentEnd （可选）**  
使用 `percentEnd` 指示数据源的数据结束位置。如果您未包括 `percentBegin` 和 `percentEnd`，Amazon ML 将在创建数据源时包括所有数据。  
有效值为 `0` 到 `100`（含）。

**Complement（可选）**  
`complement` 参数告知 Amazon ML 使用未包括在 `percentBegin` 到 `percentEnd` 范围中的数据来创建数据源。如果您需要为训练和评估创建补充数据源，`complement` 参数非常有用。要创建补充数据源，请为 `percentBegin` 和 `percentEnd` 使用相同值，并包括 `complement` 参数。  
例如，以下两个数据源不共享任何数据，并可用于训练和评估模型。第一个数据源具有 25% 的数据，第二个具有 75% 的数据。  
用于评估的数据源：  

```
{
    "splitting":{
        "percentBegin":0, 
        "percentEnd":25
    }
}
```
用于训练的数据源：  

```
{
    "splitting":{
        "percentBegin":0, 
        "percentEnd":25, 
        "complement":"true"
    }
}
```
有效值为 `true` 和 `false`。

**Strategy（可选）**  
要更改 Amazon ML 如何为数据源拆分数据，请使用 `strategy` 参数。  
`strategy` 参数的默认值为 `sequential`，这意味着 Amazon ML 按照记录在输入数据中的显示顺序，获取 `percentBegin` 和 `percentEnd` 参数之间的所有数据记录用于数据源。  
以下两行 `DataRearrangement` 是按顺序排序的训练和评估数据源示例：  
用于评估的数据源：`{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}}`  
用于训练的数据源：`{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}}`  
要从随机选择的数据创建数据源，请将 `strategy` 参数设置为 `random` 并提供用作随机数据拆分种子值的字符串（例如，您可以使用数据的 S3 路径作为随机种子字符串）。如果您选择随机拆分策略，Amazon ML 会向每个数据行分配一个伪随机编号，然后选择分配编号在 `percentBegin` 和 `percentEnd` 之间的行。伪随机编号使用字节偏移值作为种子进行分配，因此更改数据会导致不同的拆分。保留所有现有排序。随机拆分策略可以确保训练和评估中的变量具有类似分布。输入数据可能会有隐式排序顺序时，会导致训练和评估数据源包含不相似的数据记录，这种情况下该策略会非常有用。  
以下两行 `DataRearrangement` 是按非顺序排序的训练和评估数据源示例：  
用于评估的数据源：  

```
{
    "splitting":{
        "percentBegin":70, 
        "percentEnd":100, 
        "strategy":"random", 
        "strategyParams": {
            "randomSeed":"RANDOMSEED"
        }
    }
}
```
用于训练的数据源：  

```
{
    "splitting":{
        "percentBegin":70, 
        "percentEnd":100, 
        "strategy":"random", 
        "strategyParams": {
            "randomSeed":"RANDOMSEED"
        }
        "complement":"true"
    }
}
```
有效值为 `sequential` 和 `random`。

**（可选）策略：RandomSeed**  
Amazon ML 使用 **randomSeed** 拆分数据。API 的默认种子是空字符串。要为随机拆分策略指定种子，请传入字符串。有关随机种子的更多信息，请参阅 *Amazon Machine Learning 开发人员指南*中的 [随机拆分数据](splitting-types.md#random-splitting)。

有关演示如何使用 Amazon ML 进行交叉验证的示例代码，请转到 [Github 机器学习示例](https://github.com/awslabs/machine-learning-samples)。