

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Editar um arquivo de configuração de dados de treinamento
<a name="machine-learning-processing-training-config-file"></a>

O processo de exportação do Neptune exporta dados do Neptune ML de um cluster de banco de dados do Neptune para um bucket do S3. Ele exporta nós e bordas separadamente para uma pasta `nodes/` e uma `edges/`. Ele também cria um arquivo de configuração de dados de treinamento JSON, denominado `training-data-configuration.json` por padrão. Esse arquivo contém informações sobre o esquema do grafo, os tipos de atributos, as operações de transformação e normalização de atributos e o atributo de destino para uma tarefa de classificação ou regressão.

Pode haver casos em que você queira modificar o arquivo de configuração diretamente. Um desses casos é quando você deseja alterar a forma como os atributos são processados ou como o grafo é criado, sem precisar executar novamente a exportação toda vez que quiser modificar a especificação da tarefa de machine learning que você está resolvendo.

**Como editar o arquivo de configuração de dados de treinamento**

1. **Baixe o arquivo na máquina local.**

   A menos que você tenha especificado um ou mais trabalhos nomeados no parâmetro `additionalParams/neptune_ml` transmitido para o processo de exportação, o arquivo terá o nome padrão, que é `training-data-configuration.json`. Você pode usar um comando AWS CLI como este para baixar o arquivo:

   ```
   aws s3 cp \
     s3://(your Amazon S3 bucket)/(path to your export folder)/training-data-configuration.json \
     ./
   ```

1. **Edite o arquivo usando um editor de texto.**

1. **Faça upload do arquivo modificado.** Faça o upload do arquivo modificado de volta para o mesmo local no Amazon S3 do qual você o baixou, usando um comando de AWS CLI como este:

   ```
   aws s3 cp \
     training-data-configuration.json \
     s3://(your Amazon S3 bucket)/(path to your export folder)/training-data-configuration.json
   ```

# Exemplo de arquivo de configuração de dados de treinamento JSON
<a name="machine-learning-processing-training-config-file-example"></a>

Veja um exemplo de arquivo de configuração de dados de treinamento que descreve um grafo para uma tarefa de classificação de nós:

```
{
  "version" : "v2.0",
  "query_engine" : "gremlin",
  "graph" : [
    {
      "edges" : [
        {
          "file_name" : "edges/(movie)-included_in-(genre).csv",
          "separator" : ",",
          "source" : ["~from", "movie"],
          "relation" : ["", "included_in"],
          "dest" : [ "~to", "genre" ]
        },
        {
          "file_name" : "edges/(user)-rated-(movie).csv",
          "separator" : ",",
          "source" : ["~from", "movie"],
          "relation" : ["rating", "prefixname"], # [prefixname#value]
          "dest" : ["~to", "genre"],
          "features" : [
            {
              "feature" : ["rating", "rating", "numerical"],
              "norm" : "min-max"
            }
          ]
        }
      ],
      "nodes" : [
        {
          "file_name" : "nodes/genre.csv",
          "separator" : ",",
          "node" : ["~id", "genre"],
          "features" : [
            {
              "feature": ["name", "genre", "category"],
              "separator": ";"
            }
          ]
        },
        {
          "file_name" : "nodes/movie.csv",
          "separator" : ",",
          "node" : ["~id", "movie"],
          "features" : [
            {
              "feature": ["title", "title", "word2vec"],
              "language": ["en_core_web_lg"]
            }
          ]
        },
        {
          "file_name" : "nodes/user.csv",
          "separator" : ",",
          "node" : ["~id", "user"],
          "features" : [
            {
              "feature": ["age", "age", "numerical"],
              "norm" : "min-max",
              "imputation": "median",
            },
            {
              "feature": ["occupation", "occupation", "category"],
            }
          ],
          "labels" : [
            {
              "label": ["gender", "classification"],
              "split_rate" : [0.8, 0.2, 0.0]
            }
          ]
        }
      ]
    },
    "warnings" : [ ]
  ]
}
```

# A estrutura dos arquivos de configuração de dados de treinamento JSON
<a name="machine-learning-processing-training-config-file-structure"></a>

O arquivo de configuração de treinamento se refere aos arquivos CSV salvos pelo processo de exportação nas pastas `nodes/` e `edges/`.

Cada arquivo em `nodes/` armazena informações sobre nós que têm o mesmo rótulo de nó do grafo de propriedades. Cada coluna em um arquivo de nó armazena o ID ou a propriedade do nó. A primeira linha do arquivo contém um cabeçalho que especifica o `~id` ou o nome da propriedade de cada coluna.

Cada arquivo em `edges/` armazena informações sobre nós que têm o mesmo rótulo de borda do grafo de propriedades. Cada coluna em um arquivo de nó armazena o ID do nó de origem, o ID do nó de destino ou a propriedade da borda. A primeira linha do arquivo contém um cabeçalho que especifica `~from`, `~to` ou o nome da propriedade de cada coluna.

O arquivo de configuração de dados de treinamento tem três elementos gerais:

```
{
  "version" : "v2.0",
  "query_engine" : "gremlin",
  "graph" : [ ... ]
}
```
+ `version`: (string) a versão do arquivo de configuração que está sendo usado.
+ `query_engine`: (string) a linguagem de consulta usada para exportar os dados do grafo. No momento, somente “gremlin” é válido.
+ `graph`: (matriz JSON) lista um ou mais objetos de configuração que contêm parâmetros de modelo para cada um dos nós e bordas que serão usados.

  Os objetos de configuração na matriz de grafos têm a estrutura descrita na próxima seção.

## Conteúdo de um objeto de configuração listado na matriz `graph`
<a name="machine-learning-graph-training-config-object"></a>

Um objeto de configuração na matriz `graph` pode conter três nós gerais:

```
    {
      "edges"    : [ ... ],
      "nodes"    : [ ... ],
      "warnings" : [ ... ],
    }
```
+ `edges`: (matriz de objetos JSON) cada objeto JSON especifica um conjunto de parâmetros para definir como uma borda no grafo será tratada durante o processamento e o treinamento de modelos. Isso só é usado com o mecanismo do Gremlin.
+ `nodes`: (matriz de objetos JSON) cada objeto JSON especifica um conjunto de parâmetros para definir como um nó no grafo será tratado durante o processamento e o treinamento de modelos. Isso só é usado com o mecanismo do Gremlin.
+ `warnings`: (matriz de objetos JSON) cada objeto contém um aviso gerado durante o processo de exportação de dados.

## Conteúdo de um objeto de configuração de borda listado na matriz `edges`
<a name="machine-learning-graph-edges-config"></a>

Um objeto de configuração de borda listado em uma matriz `edges` pode conter os seguintes campos gerais:

```
      {
        "file_name" : "(path to a CSV file)",
        "separator" : "(separator character)",
        "source"    : ["(column label for starting node ID)", "(starting node type)"],
        "relation"  : ["(column label for the relationship name)", "(the prefix name for the relationship name)"],
        "dest"      : ["(column label for ending node ID)", "(ending node type)"],
        "features"  : [(array of feature objects)],
        "labels"    : [(array of label objects)]
      }
```
+ **`file_name`**: uma string especificando o caminho para um arquivo CSV que armazena informações sobre bordas com o mesmo rótulo de grafo de propriedades.

  A primeira linha desse arquivo contém uma linha de cabeçalho de rótulos de coluna.

  Os dois primeiros rótulos de coluna são `~from` e `~to`. A primeira coluna (`~from`) armazena o ID do nó inicial da borda e a segunda (`~to`) armazena o ID do nó final da borda.

  Os rótulos das colunas restantes na linha do cabeçalho especificam, para cada coluna restante, o nome da propriedade da borda cujos valores foram exportados para essa coluna.
+ **`separator`**: uma string contendo o delimitador que separa as colunas nesse arquivo CSV.
+ **`source`**: uma matriz JSON contendo duas strings que especificam o nó inicial da borda. A primeira string contém o nome do cabeçalho da coluna na qual o ID do nó inicial está armazenado. A segunda string especifica o tipo de nó.
+ **`relation`**: uma matriz JSON contendo duas strings que especificam o tipo de relação da borda. A primeira string contém o nome do cabeçalho da coluna na qual o nome da relação (`relname`) está armazenado. A segunda string contém o prefixo para o nome da relação (`prefixname`).

  O tipo de relação completo consiste em duas strings combinadas, com um caractere de hífen entre elas, como: `prefixname-relname`.

  Se a primeira string estiver vazia, todas as bordas terão o mesmo tipo de relação, ou seja, a string `prefixname`.
+ **`dest`**: uma matriz JSON contendo duas strings que especificam o nó final da borda. A primeira string contém o nome do cabeçalho da coluna na qual o ID do nó está armazenado. A segunda string especifica o tipo de nó.
+ **`features`**: uma matriz JSON de objetos de atributos de valor de propriedade. Cada objeto de atributo de valor de propriedade contém os seguintes campos:
  + **atributo**: uma matriz JSON de três strings. A primeira string contém o nome do cabeçalho da coluna que contem o valor de propriedade. A segunda string contém o nome do atributo. A terceira string contém o tipo de atributo.
  + **norma**: (*opcional*) especifica um método de normalização a ser aplicado aos valores da propriedade.

    
+ **`labels`**: uma matriz JSON de objetos. Cada um dos objetos define um atributo de destino das bordas e especifica as proporções das bordas que as fases de treinamento e validação devem assumir. Cada objeto contém os seguintes campos:
  + **rótulo**: uma matriz JSON de duas strings. A primeira string contém o nome do cabeçalho da coluna que contem o valor de propriedade do atributo de destino. A segunda string especifica um dos seguintes tipos de tarefa de destino:
    + `"classification"`: uma tarefa de classificação de borda. Os valores das propriedades fornecidos na coluna identificada pela primeira string na matriz `label` são tratados como valores categóricos. Para uma tarefa de classificação de bordas, a primeira string na matriz `label` não pode estar vazia.
    + `"regression"`: uma tarefa de regressão de bordas. Os valores das propriedades fornecidos na coluna identificada pela primeira string na matriz `label` são tratados como valores numéricos. Para uma tarefa de regressão de bordas, a primeira string na matriz `label` não pode estar vazia.
    + `"link_prediction"`: uma tarefa de previsão de links. Nenhum valor de propriedade é obrigatório. Para uma tarefa de previsão de links, a primeira string na matriz `label` é ignorada.
  + **`split_rate`**: uma matriz JSON contendo três números entre zero e um que somam um e representam uma estimativa das proporções de nós que as fases de treinamento, validação e teste usarão, respectivamente. Esse campo ou `custom_split_filenames` podem ser definidos, mas não ambos. Veja [split\$1rate](machine-learning-neptune_ml-targets.md#machine-learning-property-graph-neptune_ml-targets-split_rate).
  + **`custom_split_filenames`**: um objeto JSON que especifica os nomes dos arquivos que definem as populações de treinamento, validação e teste. Esse campo ou `split_rate` podem ser definidos, mas não ambos. Consulte [train-validation-testProporções personalizadas](#machine-learning-custom-stages-splits) para obter mais informações.

## Conteúdo de um objeto de configuração de nó listado na matriz `nodes`
<a name="machine-learning-graph-nodes-config"></a>

Um objeto de configuração de nó listado em uma matriz `nodes` pode conter os seguintes campos:

```
      {
        "file_name" : "(path to a CSV file)",
        "separator" : "(separator character)",
        "node"      : ["(column label for the node ID)", "(node type)"],
        "features"  : [(feature array)],
        "labels"    : [(label array)],
      }
```
+ **`file_name`**: uma string especificando o caminho para um arquivo CSV que armazena informações sobre nó com o mesmo rótulo de grafo de propriedades.

  A primeira linha desse arquivo contém uma linha de cabeçalho de rótulos de coluna.

  O rótulo da primeira coluna é `~id`, e a primeira coluna (`~id`) armazena o ID do nó.

  Os rótulos das colunas restantes na linha do cabeçalho especificam, para cada coluna restante, o nome da propriedade do nó cujos valores foram exportados para essa coluna.
+ **`separator`**: uma string contendo o delimitador que separa as colunas nesse arquivo CSV.
+ **`node`**: uma matriz JSON contendo duas strings. A primeira string contém o nome do cabeçalho da coluna que armazena o nó IDs. A segunda string especifica o tipo de nó no grafo, que corresponde a um rótulo de grafo de propriedades do nó.
+ **`features`**: uma matriz JSON de objetos de atributos de nós. Consulte [Conteúdo de um objeto de atributo listado em uma matriz `features` para um nó ou uma borda](#machine-learning-graph-node-features-config).
+ **`labels`**: uma matriz JSON de objetos de rótulos de nós. Consulte [Conteúdo de um objeto de rótulo de nó listado em uma matriz `labels` de nós](#machine-learning-graph-node-labels-config).

## Conteúdo de um objeto de atributo listado em uma matriz `features` para um nó ou uma borda
<a name="machine-learning-graph-node-features-config"></a>

Um objeto de atributo de nó listado em uma matriz `features` de nó pode conter os seguintes campos gerais:
+ **`feature`**: uma matriz JSON de três strings. A primeira string contém o nome do cabeçalho da coluna que contem o valor de propriedade do atributo. A segunda string contém o nome do atributo.

  A terceira string contém o tipo de atributo. Os tipos de atributos válidos estão listados em [Valores possíveis do campo de tipo para recursos](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-feature-types). 
+ **`norm`**: esse campo é obrigatório para atributos numéricos. Ele especifica um método de normalização a ser usado em valores numéricos. Os valores válidos são `"none"`, `"min-max"` e “padrão”. Para obter detalhes, consulte [O campo norma](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-norm).
+ **`language`**: o campo de idioma especifica o idioma usado nos valores das propriedades de texto. O uso depende do método de codificação de texto:
  + Para a codificação [`text_fasttext`](machine-learning-feature-encoding.md#machine-learning-fasttext-features), esse campo é obrigatório e deve especificar um dos seguintes idiomas:
    + `en`   (inglês)
    + `zh`   (chinês)
    + `hi`   (hindi)
    + `es`   (espanhol)
    + `fr`   (francês)

    No entanto, `text_fasttext` não consegue lidar com mais de um idioma por vez.
  + Para a codificação [`text_sbert`](machine-learning-feature-encoding.md#machine-learning-fasttext-features), esse campo não é usado, pois a codificação SBERT é multilíngue.
  + Para a codificação [`text_word2vec`](machine-learning-feature-encoding.md#machine-learning-word2vec-features), esse campo é opcional, pois `text_word2vec` só é compatível com inglês. Se presente, ele deve especificar o nome do modelo em inglês:

    ```
    "language" : "en_core_web_lg"
    ```
  + Para a codificação [`tfidf`](machine-learning-feature-encoding.md#machine-learning-tfidf-features), esse campo não é usado.
+ **`max_length`**: esse campo é opcional para atributos [`text_fasttext`](machine-learning-feature-encoding.md#machine-learning-fasttext-features), no qual ele especifica o número máximo de tokens em um atributo de texto de entrada que será codificado. O texto de entrada após `max_length` ser atingido é ignorado. Por exemplo, definir max\$1length como 128 indica que qualquer token após o 128º em uma sequência de texto será ignorado.
+ **`separator`**: esse campo é usado opcionalmente com os atributos `category`, `numerical` e `auto`. Ele especifica um caractere que pode ser usado para dividir o valor de uma propriedade em vários valores categóricos ou valores numéricos.

  Consulte [O campo separador](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-separator).
+ **`range`**: esse campo é obrigatório para atributos `bucket_numerical`. Ele especifica o intervalo de valores numéricos que devem ser divididos em buckets.

  Consulte [O campo intervalo](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-range).
+ **`bucket_cnt`**: esse campo é obrigatório para atributos `bucket_numerical`. Ele especifica o número de buckets nos quais o intervalo numérico definido pelo parâmetro `range` deve ser dividido:

  Consulte [Atributos numéricos de bucket no Neptune ML](machine-learning-feature-encoding.md#machine-learning-bucket_numerical-features).
+ **`slide_window_size`**: esse campo é usado opcionalmente com atributos `bucket_numerical` para atribuir valores a mais de um bucket:

  Consulte [O campo slide\$1window\$1size](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-slide_window_size).
+ **`imputer`**: esse campo é usado opcionalmente com atributos `numerical`, `bucket_numerical` e `datetime` para fornecer uma técnica de imputação a fim de preencher valores ausentes. As técnicas de imputação compatíveis são `"mean"`, `"median"` e `"most_frequent"`.

  Consulte [O campo estimador](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-imputer).
+ **`max_features`**: esse campo é usado opcionalmente pelos atributos `text_tfidf` para especificar o número máximo de termos a serem codificados.

  Consulte [O campo max\$1features](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-max_features).
+ **`min_df`**: esse campo é usado opcionalmente pelos atributos `text_tfidf` para especificar a frequência mínima de documentos de termos a serem codificados.

  Consulte [O campo min\$1df](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-min_df).
+ **`ngram_range`**: esse campo é usado opcionalmente pelos atributos `text_tfidf` para especificar um intervalo de números de palavras ou tokens a serem considerados como possíveis termos individuais a serem codificados.

  Consulte [O campo ngram\$1range](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-ngram_range).
+ **`datetime_parts`**: esse campo é usado opcionalmente pelos atributos `datetime` para especificar quais partes do valor de data e hora devem ser codificadas categoricamente:

  Consulte [O campo datetime\$1parts](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-datetime_parts).

## Conteúdo de um objeto de rótulo de nó listado em uma matriz `labels` de nós
<a name="machine-learning-graph-node-labels-config"></a>

Um objeto de rótulo listado em uma matriz `labels` de nós define um atributo de destino de nó e especifica as proporções dos nós que as fases de treinamento, validação e teste usarão. Cada objeto pode conter os seguintes campos:

```
      {
        "label"      : ["(column label for the target feature property value)", "(task type)"],
        "split_rate" : [(training proportion), (validation proportion), (test proportion)],
        "custom_split_filenames" : {"train": "(training file name)", "valid": "(validation file name)", "test": "(test file name)"},
        "separator"  : "(separator character for node-classification category values)",
      }
```
+ **`label`**: uma matriz JSON contendo duas strings. A primeira string contém o nome do cabeçalho da coluna que armazena os valores de propriedade do atributo. A segunda string especifica o tipo de tarefa de destino, que pode ser:
  + `"classification"`: uma tarefa de classificação de nós. Os valores das propriedades na coluna especificada são usados para criar um atributo categórico.
  + `"regression"`: uma tarefa de regressão de nós. Os valores das propriedades na coluna especificada são usados para criar um atributo numérico.
+ **`split_rate`**: uma matriz JSON contendo três números entre zero e um que somam um e representam uma estimativa das proporções de nós que as fases de treinamento, validação e teste usarão, respectivamente. Consulte [split\$1rate](machine-learning-neptune_ml-targets.md#machine-learning-property-graph-neptune_ml-targets-split_rate).
+ **`custom_split_filenames`**: um objeto JSON que especifica os nomes dos arquivos que definem as populações de treinamento, validação e teste. Esse campo ou `split_rate` podem ser definidos, mas não ambos. Consulte [train-validation-testProporções personalizadas](#machine-learning-custom-stages-splits) para obter mais informações.
+ **`separator`**: uma string contendo o delimitador que separa os valores de atributos categóricos de uma tarefa de classificação.

**nota**  
Se nenhum objeto de rótulo for fornecido para bordas e nós, a tarefa será automaticamente considerada como previsão de links, e as bordas serão divididas aleatoriamente em 90% para treinamento e 10% para validação.

## train-validation-testProporções personalizadas
<a name="machine-learning-custom-stages-splits"></a>

Por padrão, o parâmetro `split_rate` é usado pelo Neptune ML para dividir o grafo aleatoriamente em populações de treinamento, validação e teste usando as proporções definidas nesse parâmetro. Para ter um controle mais preciso sobre quais entidades são usadas nessas diferentes populações, podem ser criados arquivos que as definam explicitamente e, depois, o [arquivo de configuração de dados de treinamento pode ser editado](machine-learning-processing-training-config-file.md) para associar esses arquivos de indexação às populações. Esse mapeamento é especificado por um objeto JSON para a chave [`custom_split_filesnames`](#custom_split_filenames) no arquivo de configuração de treinamento. Se essa opção for usada, os nomes dos arquivos deverão ser fornecidos para as chaves `train` e `validation` e é opcional para a chave `test`.

A formatação desses arquivos deve corresponder ao [formato de dados do Gremlin](bulk-load-tutorial-format-gremlin.md#bulk-load-tutorial-format-gremlin-systemheaders). Especificamente, para tarefas em nível de nó, cada arquivo deve conter uma coluna com o `~id` cabeçalho que lista o nó e IDs, para tarefas em nível de borda, os arquivos devem especificar `~from` e `~to` indicar os nós de origem e destino das bordas, respectivamente. Esses arquivos precisam ser colocados no mesmo local do Amazon S3 que os dados exportados que são usados para processamento de dados (consulte: [`outputS3Path`](export-parameters.md#export-parameters-outputS3Path)).

Para tarefas de classificação ou regressão de propriedades, esses arquivos podem definir os rótulos para a tarefa de machine learning. Nesse caso, os arquivos precisam ter uma coluna de propriedades com o mesmo nome de cabeçalho [definido no arquivo de configuração de dados de treinamento](#machine-learning-graph-node-labels-config). Se os rótulos de propriedades forem definidos nos arquivos de nó e borda exportados e nos arquivos de divisão personalizada, a prioridade será fornecida aos arquivos de divisão personalizada.