Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Категориальное кодирование – это техника кодирования категориальных данных. Следует помнить, что категориальные данные – это наборы переменных, которые содержат не числовые значения, а метки. Многие алгоритмы машинного обучения не способны обрабатывать категориальные переменные. Поэтому важно закодировать данные в подходящую форму, чтобы вы могли предварительно обработать эти переменные. Поскольку вам нужно подогнать и оценить вашу модель, вы должны закодировать категориальные данные и преобразовать все входные и выходные переменные в числовые. Следовательно, модель будет способна воспринимать и извлекать информацию, генерируя желаемый результат. Категориальные данные различаются в зависимости от количества возможных значений.

Большинство категориальных переменных являются номинальными. Эти переменные помогают классифицировать и маркировать атрибуты. Переменные содержат различные значения, и каждое значение представляет собой отдельную категорию. Например, цвет – это переменная, и она включает различные значения, такие как синий, зеленый, желтый. Аналогично, домашнее животное – это переменная, но кошки и собаки – это отдельные значения, представляющие разные категории. В другом примере место – это переменная, но первое, второе и третье – это значения. Эти категории могут иметь или не иметь естественные отношения друг с другом. В приведенном выше примере с местом видно, что место является переменной, а его категории расположены в естественном порядке. Такие типы переменных можно назвать порядковыми переменными.

Преобразование данных меток в числовые

Чтобы преобразовать данные с метками или категориальные данные в числовые, необходимо выполнить два шага:

1. Целочисленное кодирование

На этом первом этапе вы присваиваете целочисленное значение каждому значению категории. Например, синий – 1, зеленый – 2, а желтый – 3. Вы можете легко изменить этот тип кодирования. Вы также можете называть целочисленное кодирование кодированием меток. Для многих переменных этого шага достаточно для обработки модели. Существует естественная упорядоченная связь между различными целочисленными значениями. Вы можете связать эти отношения с помощью алгоритма машинного обучения. Например, если вы рассматриваете порядковые переменные, такие как место, то категории уже упорядочены. Поэтому вам не нужно искать взаимосвязь между переменными. Таким образом, кодирования меток будет достаточно.

2. Одноточечное кодирование

Категориальные переменные не содержат никаких отношений между переменными, как порядковые переменные. Поэтому необходимо перевести процесс кодирования на другой уровень. Для таких типов данных целочисленного кодирования недостаточно. Даже если вы закодируете данные без естественного порядка, категории не будут согласовываться друг с другом. Из-за низкой производительности результат будет неожиданным.

Следовательно, кодирование в один момент времени – это техника, которая применяется к целочисленному представлению. При кодировании данных на этом этапе модель удаляет целочисленные переменные. Затем она включает новую двоичную переменную для каждого уникального целочисленного значения. Например, если рассматривать переменную цвета, то необходимо закодировать 3 категории. Для достижения этого результата вы поместите значение “1” для бинарной цветовой переменной и “0” для других.

Как закодировать одно горячее кодирование

Вы можете понять процесс кодирования на следующем примере. Для того чтобы упростить и ускорить выполнение задач, следует использовать библиотеки. Библиотеки – это заранее написанные коды, которые помогают оптимизировать ваши задачи. Без использования соответствующих библиотек ваши задачи станут утомительными. Начните с включения в проект трех распространенных библиотек. Это библиотеки sklearn, NumPy и pandas.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import NumPy as np
import pandas as pd

Вооружившись инструментами, вы можете приступать к кодированию. Для понимания концепции используйте этот придуманный набор данных. Используйте библиотеку panda для ввода набора данных. Вы будете использовать .read_csv и имя файла, чтобы открыть файл.

dataset = pd.read_csv(‘made_up_thing.csv’)

До сих пор вы выполняли задания, не требующие пояснений. Однако следующий шаг будет немного сложнее. Когда вы рассматриваете электронную таблицу в качестве входных данных, вам важны или не важны некоторые столбцы. Чтобы упростить процесс, давайте примем все столбцы, кроме последнего. После рассмотрения столбцов, которые необходимо включить, добавьте .iloc. Это функция библиотеки pandas. Вы будете использовать ее для выбора данных из определенного столбца.

X = dataset.iloc[:, :-1].values

После выбора сегмента в приведенном выше коде мы включим значения с помощью функции .values. Это можно понять так: первая часть этого кода будет выбирать значения, а вторая часть будет учитывать значения в этом отрезке.

В этом примере вы включаете кодировщик меток вместе с одним горячим кодировщиком. Поскольку один горячий кодер преобразует числа в двоичные, а вы включаете в качестве данных категории, вам придется сначала преобразовать категории в числа. Поэтому мы будем использовать кодировщик меток перед одним горячим кодировщиком. Теперь настройте кодировщик меток, используя следующий код:

le = LabelEncoder()

После преобразования категорий в числа используйте функцию sklearn .fit_transform. Поскольку sklearn – это библиотека однократного кодирования, она преобразует эти числа в двоичные, чтобы модель могла их понять. Для кодирования первых столбцов используйте следующий код:

X[:, 0] = le.fit_transform(X[:, 0]).

Теперь вы должны включить один кодировщик для завершения кодирования.

ohe = OneHotEncoder(categorical_features = [0])
X = ohe.fit_transform(X).toarray()

Categorical_features – это функция для указания столбца для кодирования с помощью one-hot encoding. Поскольку мы кодируем первый столбец, мы включаем [0]. Теперь функция fit_transform преобразует выбранные переменные в двоичные.

Мы закончили преобразование. Помните, что мы включили 0 для первого столбца. Если вы хотите включить больше столбцов, добавьте номер столбца. Чтобы добавить более одного столбца, необходимо добавить “цикл for” следующим образом:

le = LabelEncoder()#для 10 столбцов
for i in range(10):
X[:,i] = le.fit_transform(X[:,i])

Заключение

Подводя итог, можно сказать, что категориальное кодирование – это техника, которая преобразует категориальные данные в двоичные. Поскольку модель машинного обучения не может обрабатывать категориальные данные, необходимо преобразовать их в числовые или двоичные, в зависимости от алгоритма. Существует два этапа преобразования категориальных данных или данных с метками в двоичные данные. Кодирование меток – это первая техника категориального кодирования. Оно преобразует данные в числовую форму. Используйте кодирование меток для порядковых данных. Для неординарных данных используйте технику однократного кодирования. Это эффективный метод преобразования данных в двоичную форму.