Автор оригинала: Pankaj Kumar.
Одно горячее кодирование в Python – практический подход
Здравствуйте, читатели! В этой статье мы будем сосредоточены на практической реализации Одно горячее кодирование в питоне.
Итак, давайте начнем!
Во-первых, что такое одно горячее кодирование?
Перед погружением глубоко в концепцию одностороннего кодирования, давайте понять некоторые предпосылки.
Переменные отличаются на две основные части
- Непрерывные переменные : Это переменные, которые изображают числовые переменные. Пример: [1,2,3,4,5,6 ….100]
- Категорические переменные : Эти переменные изображают категорию или группы в значениях данных. Пример: [Apple, Mango, Berry]
В наборе данных мы столкнулись с данными, которые содержат категорические данные в виде групп, таких как [Apple, Berry, Mango]. Чтобы представлять каждую категорию данных в качестве отдельного объекта, мы используем методы кодирования.
Самые популярные методы кодирования включают в себя
- Фиктивные переменные
- Кодировка на этикетке
- Одно горячее кодирование , так далее.
Сегодня давайте обсудим об одном горячем кодировке.
Одна горячая кодировка представляет категорические данные в виде двоичных векторов.
Теперь вопрос может возникнуть в ваших умах, то когда он представляет категории в двоичном векторном формате, то когда он получает данные, преобразованные в 0 и 1 и 1-е годы?
Что ж, в одной схеме горячей кодировки, прежде чем применять ее к данным, нам нужно отображать категоричные значения данных в целочисленные значения данных. Это сделано с помощью кодировки этикетки.
Не волнуйтесь, мы будем охватывать практическую реализацию использования этикетки, кодируя в дальнейших разделах.
Таким образом, одним горячим кодировкой каждая категория значений данных будет назначена целочисленное значение и будет сопоставлено в двоичный вектор.
Таким образом, каждое значение данных, которое отображается на целочисленное значение, будет представлено как двоичный вектор, в котором все значения в векторе будут ноль, кроме значения индекса целочисленного (категории), которое было бы помечено как 1.
Одно горячие примеры реализации кодирования
Рассмотрим набор данных с категориальными данными как [Apple and Berry]. После нанесения на этикетку кодировку, давайте скажем, что он назначит Apple как «0» и ягод как «1».
Кроме того, при нанесении одностороннего кодирования он создаст двоичный вектор длины 2. Здесь создан «Apple», которая закодируется как «0», будет иметь двоичный вектор, что и [1,0].
Это связано с тем, что значение 1 будет помещено в закодированный индекс, который равен нулю для Apple (как видно в кодировке метки).
Итак, [Apple, Berry, Berry] будет закодирована как:
[1, 0] [0, 1] [0, 1]
Давайте теперь реализуем концепцию в результате примеров.
Пример 1: одно горячее кодирование с группированными категориальными данными
Посмотрите на нижеприведенный пример! Мы кодировали категорию фруктов с одной горячей кодировкой.
from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import OneHotEncoder cat_data = ["apple", "mango", "apple", "berry", "mango", "apple", "berry", "apple"] label = LabelEncoder() int_data = label.fit_transform(cat_data) int_data = int_data.reshape(len(int_data), 1) onehot_data = OneHotEncoder(sparse=False) onehot_data = onehot_data.fit_transform(int_data) print("Categorical data encoded into integer values....\n") print(onehot_data)
Выход:
Categorical data encoded into integer values.... [[1. 0. 0.] [0. 0. 1.] [1. 0. 0.] [0. 1. 0.] [0. 0. 1.] [1. 0. 0.] [0. 1. 0.] [1. 0. 0.]]
Объяснение:
- После нагрузки данных мы создали объект
LabelenCoder ()
Чтобы вообще кодировать категорические данные в целочисленные значения. - Кроме того, мы бы передали те же целые данные для
Onehotencoder ()
Чтобы кодировать целочисленные значения в двоичные векторы категорий. -
fit_transform ()
Функция применяет конкретную функцию для выполнения данных или набора значений.
Пример 2: Одно горячее кодирование на наборе данных
В этом примере мы вытащили набор данных в среду Python. Вы можете найти набор данных ниже для вашей справки.
Кроме того, мы использовали ColumnTransformer ()
Функция для создания объекта, указывающего категорию 0 в качестве первого столбца из N-категории.
Наконец, мы применили его к всеми категориальным данным, подлежащим кодированию в форме двоичного массива.
Давайте импортируем библиотеки Pandas и Numpy.
import pandas import numpy from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer cat_data = pandas.read_csv("bank-loan.csv") #print(cat_data) column_set = ColumnTransformer([('encoder', OneHotEncoder(),[0])], remainder='passthrough') onehot_data = numpy.array(column_set.fit_transform(cat_data), dtype = numpy.str) print(onehot_data)
Выход:
Итак, вы видите, данные теперь содержат два столбца: первый столбец изображает 0-й категорию и второй столбец изображает 1-й категорию.
[['0.0' '1.0'] ['1.0' '0.0'] ['1.0' '0.0'] ... ['1.0' '0.0'] ['1.0' '0.0'] ['1.0' '0.0']]
Заключение
По этому, мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом. До этого оставайся настроенным и счастливым обучением !! 🙂.