

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Edición de un archivo de configuración de datos de entrenamiento
<a name="machine-learning-processing-training-config-file"></a>

El proceso de exportación de Neptune exporta los datos de Neptune ML de un clúster de base de datos de Neptune a un bucket de S3. Exporta los nodos y los bordes por separado a una carpeta `nodes/` y a una carpeta `edges/`. También crea un archivo de configuración de datos de entrenamiento JSON, con el nombre predeterminado `training-data-configuration.json`. Este archivo incluye información sobre el esquema del gráfico, los tipos de sus características, las operaciones de transformación y normalización de características y la característica de destino para una tarea de clasificación o regresión.

Puede haber casos en los que desee modificar directamente el archivo de configuración. Uno de estos casos es cuando desea cambiar la forma en que se procesan las características o la forma en que se crea el gráfico, sin necesidad de volver a ejecutar la exportación cada vez que desee modificar la especificación de la tarea de machine learning que está resolviendo.

**Para editar el archivo de configuración de datos de entrenamiento**

1. **Descargue el archivo en el equipo local.**

   A menos que haya especificado uno o más trabajos con nombre en el parámetro `additionalParams/neptune_ml` transferido al proceso de exportación, el archivo tendrá un nombre predeterminado, que es `training-data-configuration.json`. Puede usar un comando AWS CLI como este para descargar el archivo:

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

1. **Edite el archivo con un editor de texto.**

1. **Cargue el archivo modificado.** Vuelva a cargar el archivo modificado en la misma ubicación de Amazon S3 desde la que lo descargó mediante un 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
   ```

# Ejemplo de un archivo de configuración de datos de entrenamiento de JSON
<a name="machine-learning-processing-training-config-file-example"></a>

Este es un ejemplo de un archivo de configuración de datos de entrenamiento que describe un gráfico para una tarea de clasificación de nodos:

```
{
  "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" : [ ]
  ]
}
```

# La estructura de los archivos de configuración de datos de entrenamiento de JSON
<a name="machine-learning-processing-training-config-file-structure"></a>

El archivo de configuración de entrenamiento hace referencia a los archivos CSV guardados durante el proceso de exportación en las carpetas `nodes/` y `edges/`.

Cada archivo en `nodes/` almacena información sobre los nodos que tienen la misma etiqueta de nodo del gráfico de propiedades. Cada columna de un archivo de nodo almacena el ID o la propiedad del nodo. La primera línea del archivo incluye un encabezado que especifica el `~id` o el nombre de la propiedad de cada columna.

Cada archivo en `edges/` almacena información sobre los nodos que tienen la misma etiqueta de borde del gráfico de propiedades. Cada columna de un archivo de nodo almacena el identificador del nodo de origen, el identificador del nodo de destino o la propiedad de borde. La primera línea del archivo incluye un encabezado que especifica `~from`, `~to` o el nombre de la propiedad de cada columna.

El archivo de configuración de los datos de entrenamiento tiene tres elementos de nivel superior:

```
{
  "version" : "v2.0",
  "query_engine" : "gremlin",
  "graph" : [ ... ]
}
```
+ `version`: (Cadena) la versión del archivo de configuración que se está utilizando.
+ `query_engine`: (Cadena) el lenguaje de consulta utilizado para exportar los datos del gráfico. Actualmente, solo es válido “gremlin”.
+ `graph`: (Matriz de JSON) muestra uno o varios objetos de configuración que incluyen los parámetros del modelo para cada uno de los nodos y bordes que se utilizarán.

  Los objetos de configuración de la matriz de gráficos tienen la estructura que se describe en la siguiente sección.

## Contenido de un objeto de configuración que aparece en la matriz de `graph`
<a name="machine-learning-graph-training-config-object"></a>

Un objeto de configuración de la matriz de `graph` puede incluir tres nodos de nivel superior:

```
    {
      "edges"    : [ ... ],
      "nodes"    : [ ... ],
      "warnings" : [ ... ],
    }
```
+ `edges`: (matriz de objetos de JSON) cada objeto de JSON especifica un conjunto de parámetros para definir cómo se tratará un borde del gráfico durante el procesamiento y el entrenamiento del modelo. Esto solo se usa con el motor de Gremlin.
+ `nodes`: (matriz de objetos de JSON) cada objeto de JSON especifica un conjunto de parámetros para definir cómo se tratará un nodo del gráfico durante el procesamiento y el entrenamiento del modelo. Esto solo se usa con el motor de Gremlin.
+ `warnings`: (matriz de objetos de JSON) cada objeto incluye una advertencia generada durante el proceso de exportación de datos.

## Contenido de un objeto de configuración de borde que aparece en una matriz de `edges`
<a name="machine-learning-graph-edges-config"></a>

Un objeto de configuración de borde incluido en una matriz de `edges` puede incluir los siguientes campos de nivel superior:

```
      {
        "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`**: una cadena que especifica la ruta a un archivo CSV que almacena información sobre los bordes que tienen la misma etiqueta de gráfico de propiedades.

  La primera línea de ese archivo incluye una línea de encabezado de las etiquetas de las columnas.

  Las dos primeras etiquetas de columna son `~from` y `~to`. La primera columna (la columna `~from`) almacena el identificador del nodo inicial del borde y la segunda (la columna `~to`) almacena el identificador del nodo final del borde.

  Las etiquetas de columna restantes de la línea de encabezado especifican, para cada columna restante, el nombre de la propiedad de borde cuyos valores se han exportado a esa columna.
+ **`separator`**: una cadena que incluye el delimitador que separa las columnas de ese archivo CSV.
+ **`source`**: una matriz de JSON que incluye dos cadenas que especifican el nodo inicial de la periferia. La primera cadena incluye el nombre del encabezado de la columna en la que se almacena el ID del nodo inicial. La segunda cadena especifica el tipo de nodo.
+ **`relation`**: una matriz de JSON que incluye dos cadenas que especifican el tipo de relación del borde. La primera cadena incluye el nombre del encabezado de la columna en la que se almacena el nombre de la relación (`relname`). La segunda cadena incluye el prefijo del nombre de la relación (`prefixname`).

  El tipo de relación completa consta de las dos cadenas combinadas, con un guion entre ellas, como, por ejemplo: `prefixname-relname`.

  Si la primera cadena está vacía, todos los bordes tienen el mismo tipo de relación, es decir, la cadena `prefixname`.
+ **`dest`**: una matriz de JSON que incluye dos cadenas que especifican el nodo final del borde. La primera cadena incluye el nombre del encabezado de la columna en la que se almacena el ID del nodo. La segunda cadena especifica el tipo de nodo.
+ **`features`**: una matriz de JSON de objetos de características de valores de propiedad. Cada objeto de característica de valor de propiedad incluye los siguientes campos:
  + **feature**: una matriz de JSON de tres cadenas. La primera cadena incluye el nombre del encabezado de la columna que incluye el valor de propiedad. La segunda cadena incluye el nombre de la característica. La tercera cadena incluye el tipo de característica.
  + **norm**: (*opcional*) especifica un método de normalización para aplicarlo a los valores de las propiedades.

    
+ **`labels`**: una matriz de JSON de objetos. Cada uno de los objetos define una característica de destino de los bordes y especifica las proporciones de los bordes que deben tener las etapas de entrenamiento y validación. Cada objeto incluye los siguientes campos:
  + **label**: una matriz de JSON de dos cadenas. La primera cadena incluye el nombre del encabezado de la columna que incluye el valor de propiedad de característica de destino. La segunda cadena especifica uno de los siguientes tipos de tareas de destino:
    + `"classification"`: una tarea de clasificación de bordes. Los valores de propiedad proporcionados en la columna identificada por la primera cadena de la matriz de `label` se tratan como valores categóricos. Para una tarea de clasificación de bordes, la primera cadena de la matriz de `label` no puede estar vacía.
    + `"regression"`: una tarea de regresión de bordes. Los valores de propiedad proporcionados en la columna identificada por la primera cadena de la matriz de `label` se tratan como valores numéricos. Para una tarea de regresión de bordes, la primera cadena de la matriz de `label` no puede estar vacía.
    + `"link_prediction"`: una tarea de predicción de enlaces. No es necesario introducir ningún valor de propiedad. Para una tarea de predicción de enlaces, se ignora la primera cadena de la matriz de `label`.
  + **`split_rate`**: una matriz de JSON que incluye tres números entre cero y uno que suman uno y que representan una estimación de las proporciones de nodos que se utilizarán en las etapas de entrenamiento, validación y prueba, respectivamente. Se pueden definir este campo o la opción `custom_split_filenames`, pero no ambos. Consulte [split\$1rate](machine-learning-neptune_ml-targets.md#machine-learning-property-graph-neptune_ml-targets-split_rate).
  + **`custom_split_filenames`**: un objeto de JSON que especifica los nombres de los archivos que definen las poblaciones de entrenamiento, validación y prueba. Se pueden definir este campo o la opción `split_rate`, pero no ambos. Para obtener más información, consulte [train-validation-testProporciones personalizadas](#machine-learning-custom-stages-splits).

## Contenido de un objeto de configuración de nodo que aparece en una matriz de `nodes`
<a name="machine-learning-graph-nodes-config"></a>

Un objeto de configuración de nodo incluido en una matriz de `nodes` puede incluir los siguientes 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`**: una cadena que especifica la ruta a un archivo CSV que almacena información sobre los nodos que tienen la misma etiqueta de gráfico de propiedades.

  La primera línea de ese archivo incluye una línea de encabezado de las etiquetas de las columnas.

  La etiqueta de la primera columna es `~id`, y la primera columna (la columna `~id`) almacena el ID del nodo.

  Las etiquetas de columna restantes de la línea de encabezado especifican, para cada columna restante, el nombre de la propiedad de nodo cuyos valores se han exportado a esa columna.
+ **`separator`**: una cadena que incluye el delimitador que separa las columnas de ese archivo CSV.
+ **`node`**: una matriz de JSON que incluye dos cadenas. La primera cadena contiene el nombre del encabezado de la columna que almacena el nodo IDs. La segunda cadena especifica el tipo de nodo del gráfico, que corresponde a una etiqueta de gráfico de propiedades del nodo.
+ **`features`**: una matriz de JSON de objetos de características de nodos. Consulte [Contenido de un objeto de característica incluido en una matriz de `features` para un nodo o un borde](#machine-learning-graph-node-features-config).
+ **`labels`**: una matriz de JSON de objetos de etiquetas de nodos. Consulte [Contenido de un objeto de etiqueta de nodo que aparece en una matriz de `labels` de nodo](#machine-learning-graph-node-labels-config).

## Contenido de un objeto de característica incluido en una matriz de `features` para un nodo o un borde
<a name="machine-learning-graph-node-features-config"></a>

Un objeto de característica de nodo incluido en una matriz de `features` de nodo puede incluir los siguientes campos de nivel superior:
+ **`feature`**: una matriz de JSON de tres cadenas. La primera cadena incluye el nombre del encabezado de la columna que incluye el valor de propiedad de la característica. La segunda cadena incluye el nombre de la característica.

  La tercera cadena incluye el tipo de característica. Los tipos de características válidos se muestran en [Valores posibles del campo type para las características](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-feature-types). 
+ **`norm`**: este campo es obligatorio para las características numéricas. Especifica un método de normalización para usar en valores numéricos. Los valores válidos son `"none"`, `"min-max"`, y “estándar”. Para obtener más información, consulte [El campo norm](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-norm).
+ **`language`**: el campo de idioma especifica el idioma que se utiliza en los valores de las propiedades de texto. Su uso depende del método de codificación del texto:
  + En el caso de la codificación [`text_fasttext`](machine-learning-feature-encoding.md#machine-learning-fasttext-features), este campo es obligatorio y debe especificar uno de los siguientes idiomas:
    + `en` (inglés)
    + `zh` (chino)
    + `hi` (hindi)
    + `es` (español)
    + `fr` (francés)

    Sin embargo, `text_fasttext` no puede admitir más de un idioma a la vez.
  + En el caso de la codificación [`text_sbert`](machine-learning-feature-encoding.md#machine-learning-fasttext-features), este campo no se utiliza, ya que la codificación SBERT es multilingüe.
  + En el caso de la codificación [`text_word2vec`](machine-learning-feature-encoding.md#machine-learning-word2vec-features), este campo es opcional, ya que `text_word2vec` solo admite el inglés. Si está presente, debe especificar el nombre del modelo en inglés:

    ```
    "language" : "en_core_web_lg"
    ```
  + En el caso de la codificación [`tfidf`](machine-learning-feature-encoding.md#machine-learning-tfidf-features), este campo no se utiliza.
+ **`max_length`**: este campo es opcional para las características [`text_fasttext`](machine-learning-feature-encoding.md#machine-learning-fasttext-features), ya que especifica el número máximo de tokens que se codificarán en una característica de texto de entrada. Se ignorará el texto introducido una vez alcanzado `max_length`. Por ejemplo, si se establece max\$1length en 128, se ignorará cualquier token situado después del 128 en una secuencia de texto.
+ **`separator`**: este campo se usa de forma opcional con las características `category`, `numerical` y `auto`. Especifica un carácter que se puede utilizar para dividir el valor de una propiedad en varios valores categóricos o numéricos.

  Consulte [El campo separator](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-separator).
+ **`range`**: este campo es obligatorio para las características `bucket_numerical`. Especifica el rango de valores numéricos que se van a dividir en buckets.

  Consulte [El campo range](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-range).
+ **`bucket_cnt`**: este campo es obligatorio para las características `bucket_numerical`. Especifica el número de buckets en los que debe dividirse el rango numérico definido por el parámetro `range`.

  Consulte [Características numéricas por bucket de Neptune ML](machine-learning-feature-encoding.md#machine-learning-bucket_numerical-features).
+ **`slide_window_size`**: este campo se usa de forma opcional con características `bucket_numerical` para asignar valores a más de un bucket.

  Consulte [El campo slide\$1window\$1size](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-slide_window_size).
+ **`imputer`**: este campo se utiliza de forma opcional con las características `numerical`, `bucket_numerical` y `datetime` para proporcionar una técnica de imputación y rellenar los valores que faltan. Las técnicas de imputación admitidas son `"mean"`, `"median"` y `"most_frequent"`.

  Consulte [El campo imputer](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-imputer).
+ **`max_features`**: las características `text_tfidf` utilizan este campo de forma opcional para especificar el número máximo de términos que se van a codificar.

  Consulte [El campo max\$1features](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-max_features).
+ **`min_df`**: las características `text_tfidf` utilizan este campo de forma opcional para especificar la frecuencia mínima de documentos de los términos que se van a codificar.

  Consulte [El campo min\$1df](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-min_df).
+ **`ngram_range`**: las características `text_tfidf` utilizan este campo de forma opcional para especificar el rango de números de palabras o tokens que deben considerarse como posibles términos individuales que se van codificar.

  Consulte [El campo ngram\$1range](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-ngram_range).
+ **`datetime_parts`**: las características `datetime` utilizan este campo de forma opcional para especificar qué partes del valor de fecha y hora deben codificarse categóricamente.

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

## Contenido de un objeto de etiqueta de nodo que aparece en una matriz de `labels` de nodo
<a name="machine-learning-graph-node-labels-config"></a>

Un objeto de etiqueta incluido en una matriz de `labels` de nodo define una característica de destino del nodo y especifica las proporciones de los nodos que se utilizarán en las etapas de entrenamiento, validación y prueba. Cada objeto puede incluir los siguientes 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`**: una matriz de JSON que incluye dos cadenas. La primera cadena incluye el nombre del encabezado de la columna que almacena el valor de propiedad de la característica. La segunda cadena especifica el tipo de tarea de destino, que puede ser:
  + `"classification"`: una tarea de clasificación de nodos. Los valores de las propiedades de la columna especificada se utilizan para crear una característica categórica.
  + `"regression"`: una tarea de regresión de nodos. Los valores de las propiedades de la columna especificada se utilizan para crear una característica numérica.
+ **`split_rate`**: una matriz de JSON que incluye tres números entre cero y uno que suman uno y que representan una estimación de las proporciones de nodos que se utilizarán en las etapas de entrenamiento, validación y prueba, respectivamente. Consulte [split\$1rate](machine-learning-neptune_ml-targets.md#machine-learning-property-graph-neptune_ml-targets-split_rate).
+ **`custom_split_filenames`**: un objeto de JSON que especifica los nombres de los archivos que definen las poblaciones de entrenamiento, validación y prueba. Se pueden definir este campo o la opción `split_rate`, pero no ambos. Para obtener más información, consulte [train-validation-testProporciones personalizadas](#machine-learning-custom-stages-splits).
+ **`separator`**: una cadena que incluye el delimitador que separa los valores de las características categóricas para una tarea de clasificación.

**nota**  
Si no se proporciona ningún objeto de etiqueta tanto para los bordes como para los nodos, se asume automáticamente que la tarea consiste en una predicción de enlaces y los bordes se dividen de forma aleatoria en un 90 % para el entrenamiento y un 10 % para la validación.

## train-validation-testProporciones personalizadas
<a name="machine-learning-custom-stages-splits"></a>

De forma predeterminada, Neptune ML utiliza el parámetro `split_rate` para dividir el gráfico de forma aleatoria en poblaciones de entrenamiento, validación y prueba mediante las proporciones definidas en este parámetro. Para tener un control más preciso sobre qué entidades se utilizan en estas distintas poblaciones, se pueden crear archivos que las definan de forma explícita y, a continuación, [se puede editar el archivo de configuración de los datos de entrenamiento](machine-learning-processing-training-config-file.md) para asignar estos archivos de indexación a las poblaciones. Este mapeo se especifica mediante un objeto de JSON para la clave [`custom_split_filesnames`](#custom_split_filenames) del archivo de configuración de entrenamiento. Si se utiliza esta opción, se deben proporcionar los nombres de archivo para las claves `train` y `validation`, y es opcional para la clave `test`.

El formato de estos archivos debe coincidir con el [formato de datos de Gremlin](bulk-load-tutorial-format-gremlin.md#bulk-load-tutorial-format-gremlin-systemheaders). Específicamente, para las tareas a nivel de nodo, cada archivo debe contener una columna con el `~id` encabezado que muestre el nodo IDs, y para las tareas `~to` a nivel de borde, los archivos deben especificar `~from` e indicar los nodos de origen y destino de los bordes, respectivamente. Estos archivos deben colocarse en la misma ubicación de Amazon S3 que los datos exportados que se utilizan para el procesamiento de datos (consulte: [`outputS3Path`](export-parameters.md#export-parameters-outputS3Path)).

Para las tareas de clasificación o regresión de propiedades, estos archivos también pueden definir las etiquetas para la tarea de machine learning. En ese caso, los archivos deben tener una columna de propiedades con el mismo nombre de encabezado que el [definido en el archivo de configuración de los datos de entrenamiento](#machine-learning-graph-node-labels-config). Si las etiquetas de propiedades están definidas tanto en los archivos de nodos y de bordes exportados como en los archivos de división personalizada, se da prioridad a los archivos de división personalizada.