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



