Кодирование метки в one-hot

PythonBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь выполнять one-hot кодирование для меток данных в задаче классификации с одним ярлыком. One-hot кодирование - это распространенная техника, используемая для преобразования категориальных переменных в формат, который может быть использован алгоритмами машинного обучения.

🎯 Задачи

В этом проекте вы научитесь:

  • Как понять концепцию one-hot кодирования и его важность в машинном обучении.
  • Как реализовать функцию для выполнения one-hot кодирования для списка меток примеров.
  • Как протестировать функцию кодирования меток с использованием примеровых данных.

🏆 Достижения

После завершения этого проекта вы сможете:

  • Преобразовать категориальные метки в числовой формат, подходящий для моделей машинного обучения.
  • Разобраться в важности предварительной обработки данных и инженерных особенностей признаков в конвейере машинного обучения.
  • Показать практические навыки программирования на Python для манипулирования и преобразования данных в задачах машинного обучения.

Кодирование метки в one - hot

В этом шаге вы научитесь выполнять one-hot кодирование для меток данных в задаче классификации с одним ярлыком.

One-hot кодирование - это распространенная техника, используемая для преобразования категориальных переменных в формат, который может быть использован алгоритмами машинного обучения. В случае классификации с одним ярлыком каждый уникальный ярлык в наборе данных представляется в виде бинарного вектора, где позиция ярлыка в списке отмечается как 1, а все остальные позиции - как 0.

Откройте файл label_process.py, расположенный в директории /home/labex/project, и добавьте следующий код:

def label_process(labels: List[str], sample_y: List[str]) -> List[List[int]]:
    """
    Преобразует список меток примеров в формат, подходящий для задач классификации.

    Функция создает бинарный список для каждой метки примера, где позиция
    метки в списке 'labels' отмечается как 1, а все остальные позиции - как 0.
    Это называется one-hot кодированием.

    Args:
        labels (List[str]): Список уникальных меток/классов в наборе данных.
        sample_y (List[str]): Список меток примеров, которые необходимо преобразовать.

    Returns:
        List[List[int]]: Преобразованные метки, каждая из которых представлена в виде бинарного списка, соответствующего позициям в списке '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. В функции label_process мы реализуем логику one-hot кодирования. Функция принимает два аргумента:
    • labels: список уникальных меток/классов в наборе данных
    • sample_y: список меток примеров, которые необходимо преобразовать
  2. Инициализируем пустой список train_y, чтобы хранить преобразованные метки.
  3. Перебираем список sample_y:
    • Для каждой метки y создаем новый список train длиной, равной количеству уникальных меток (len(labels)), и инициализируем все элементы значением 0.
    • С помощью метода index() находим индекс текущей метки y в списке labels и устанавливаем соответствующий элемент в train равным 1.
    • Добавляем список train в список train_y.
  4. После цикла список train_y будет содержать one-hot закодированные метки для всех примеров. Возвращаем этот список из функции label_process.

Тестирование кодирования меток

В этом шаге вы будете тестировать функцию label_process, предоставив некоторые примеровые данные и проверив выходные данные.

Добавьте следующий код в файл label_process.py:

## Продолжайте в том же файле
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)

Этот код определяет список уникальных меток (labels) и список меток примеров (sample_y), затем вызывает функцию label_process и выводит полученные one-hot закодированные метки.

  1. Сохраните файл label_process.py и запустите скрипт из терминала:
python label_process.py

Выходные данные должны быть следующими:

[[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]]

Эти выходные данные показывают one-hot закодированные метки для примеровых данных. Каждая строка представляет собой пример, а столбцы соответствуют позициям меток в списке labels.

Поздравляем! Вы успешно реализовали one-hot кодирование меток для задачи классификации с одним ярлыком.

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться