Codificación de Etiqueta a One-Hot

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a realizar la codificación one-hot en los datos de etiquetas para una tarea de clasificación de una sola etiqueta. La codificación one-hot es una técnica común utilizada para transformar variables categóricas en un formato que puede ser utilizado por los algoritmos de aprendizaje automático.

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo entender el concepto de codificación one-hot y su importancia en el aprendizaje automático.
  • Cómo implementar una función para realizar la codificación one-hot en una lista de etiquetas de muestra.
  • Cómo probar la función de codificación de etiquetas con datos de muestra.

🏆 Logros

Después de completar este proyecto, serás capaz de:

  • Transformar etiquetas categóricas en un formato numérico adecuado para los modelos de aprendizaje automático.
  • Comprender la importancia del preprocesamiento de datos y la ingeniería de características en la canalización de aprendizaje automático.
  • Demostrar habilidades de codificación práctica en Python para manipular y transformar datos para tareas de aprendizaje automático.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/DataScienceandMachineLearningGroup -.-> python/machine_learning("Machine Learning") subgraph Lab Skills python/conditional_statements -.-> lab-300216{{"Codificación de Etiqueta a One-Hot"}} python/lists -.-> lab-300216{{"Codificación de Etiqueta a One-Hot"}} python/function_definition -.-> lab-300216{{"Codificación de Etiqueta a One-Hot"}} python/machine_learning -.-> lab-300216{{"Codificación de Etiqueta a One-Hot"}} end

Codificación de Etiqueta a One-Hot

En este paso, aprenderás a realizar la codificación one-hot en los datos de etiquetas para una tarea de clasificación de una sola etiqueta.

La codificación one-hot es una técnica común utilizada para transformar variables categóricas en un formato que puede ser utilizado por los algoritmos de aprendizaje automático. En el caso de la clasificación de una sola etiqueta, cada etiqueta única en el conjunto de datos se representa como un vector binario, donde la posición de la etiqueta en la lista se marca como 1 y todas las demás posiciones son 0.

Abra el archivo label_process.py ubicado en el directorio /home/labex/project y agregue el siguiente código:

def label_process(labels: List[str], sample_y: List[str]) -> List[List[int]]:
    """
    Transforma una lista de etiquetas de muestra en un formato adecuado para tareas de clasificación.

    La función crea una lista binaria para cada etiqueta de muestra, donde la posición
    de la etiqueta en la lista 'labels' se marca como 1 y todas las demás posiciones son 0.
    Esto se conoce como codificación one-hot.

    Args:
        labels (List[str]): Lista de etiquetas/classes únicas en el conjunto de datos.
        sample_y (List[str]): Lista de etiquetas de muestra a transformar.

    Returns:
        List[List[int]]: Etiquetas transformadas, cada una representada como una lista binaria correspondiente
        a las posiciones en la lista 'labels'.
    """
    train_y = []
    for y in sample_y:
        train = [0] * len(labels)
        train[labels.index(y)] = 1
        train_y.append(train)
    return train_y
  1. En la función label_process, implementamos la lógica de codificación one-hot. La función toma dos argumentos:
    • labels: una lista de etiquetas/classes únicas en el conjunto de datos
    • sample_y: una lista de etiquetas de muestra a transformar
  2. Inicialice una lista vacía llamada train_y para almacenar las etiquetas transformadas.
  3. Itere a través de la lista sample_y:
    • Para cada etiqueta y, cree una nueva lista train de longitud igual al número de etiquetas únicas (len(labels)), e inicialice todos los elementos a 0.
    • Encuentre el índice de la etiqueta actual y en la lista labels utilizando el método index(), y establezca el elemento correspondiente en train a 1.
    • Agregue la lista train a la lista train_y.
  4. Después del bucle, la lista train_y contendrá las etiquetas codificadas one-hot para todas las muestras. Devuelva esta lista desde la función label_process.
✨ Revisar Solución y Practicar

Probando la Codificación de Etiquetas

En este paso, probarás la función label_process proporcionando algunos datos de muestra y verificando la salida.

Agrega el siguiente código en el archivo label_process.py:

## Continúa en el mismo archivo
if __name__ == "__main__":
    labels = ["Python", "Java", "Tensorflow", "Springboot", "Keras"]
    sample_y = ["Python", "Python", "Python", "Java", "Java", "Keras"]
    train_y = label_process(labels, sample_y)
    print(train_y)

Este código define una lista de etiquetas únicas (labels) y una lista de etiquetas de muestra (sample_y), luego llama a la función label_process e imprime las etiquetas codificadas one-hot resultantes.

  1. Guarda el archivo label_process.py y ejecuta el script desde la terminal:
python label_process.py

La salida debe ser:

[[1, 0, 0, 0, 0],
 [1, 0, 0, 0, 0],
 [1, 0, 0, 0, 0],
 [0, 1, 0, 0, 0],
 [0, 1, 0, 0, 0],
 [0, 0, 0, 0, 1]]

Esta salida muestra las etiquetas codificadas one-hot para los datos de muestra. Cada fila representa una muestra, y las columnas corresponden a las posiciones de las etiquetas en la lista labels.

¡Felicitaciones! Has implementado con éxito la codificación one-hot de etiquetas para una tarea de clasificación de una sola etiqueta.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.