Рубрики
Без рубрики

Одна горячая кодировка в Python – реализация с использованием Sklearn

Одно- горячая кодировка – это методика представления категориальных данных в виде двоичных векторов. Это общий шаг в обработке последовательных данных

Автор оригинала: Pankaj Kumar.

Одностороннее кодирование – это методика представления категориальных данных в виде двоичных векторов Отказ Это общий шаг в обработке последовательных данных перед выполнением Классификация Отказ

Одно горячее кодирование также обеспечивает способ реализации Слово встраивается Отказ Встраивание слова относится к процессу поворота слов в числа для машины, чтобы можно было его понять.

Обычно приносят слов вложения из корпуса перед вводом его в модель LSTM. Создание слов вложения из корпуса облегчает для компьютера находить отношения и модели между словами.

В этом руководстве мы собираемся понять, что именно является односторонним кодировкой, а затем использовать Sklearn реализовать это.

Давайте начнем с примера.

Работа одно горячего кодирования в Python

Рассмотрим следующую последовательность слов.

['Python', 'Java', 'Python', 'Python', 'C++', 'C++', 'Java', 'Python', 'C++', 'Java' ]

Это последовательные данные с тремя категориями.

Категории в данных выше следующие:

  1. Питон
  2. Ява
  3. C ++

Давайте попробуем понять работу за односторонним кодировкой.

Одно- горячая кодировка имеет два шагового процесса.

  1. Преобразование Категории целых чисел
  2. Преобразование Целые числа бинарных векторов

1. Преобразование категорий в целые числа

Превратим три категории в наш пример к целым числам.

C ++ 0
Ява 1
Питон 2

Теперь мы можем использовать эти целые числа для представления наших исходных данных следующим образом:

[2 1 2 2 0 0 1 2 0 1]

Вы можете прочитать эти данные с таблицей преобразования выше.

Давайте перейдем на второй шаг сейчас.

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

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

Посмотрим, что мы подразумеваем под этим:

C ++ 0 [1, 0, 0]
Ява 1 [0, 1, 0]
Питон 2 [0, 0, 1]

Мы можем представлять данные в нашем примере как:

[[0. 0. 1.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 1.]
 [1. 0. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]

Наши оригинальные данные последовательности теперь в форме 2-D матрицы. Это облегчает его машину понять ее.

Код Python для реализации одностороннего кодирования с помощью Sklearn

Давайте перейдем к части реализации одно горячего кодирования. Мы собираемся использовать Sklearn для реализации того же.

Мы будем следовать тому же двухэтапному подходу при реализации.

Шаги следующие:

  1. Использовать LabelenCoder преобразовать категории в целые числа.
  2. Использовать Одинhotencoder преобразовать целые числа в одно горячие векторы (двоичные векторы).

Прежде чем мы переместимся дальше, давайте напишем код для объявления массива с данными в нашем примере.

import numpy as np 
data = ['Python', 'Java', 'Python', 'Python', 'C++', 'C++', 'Java', 'Python', 'C++', 'Java' ]
vals = np.array(data)

1. Использование LabetEncoder для преобразования категорий в целые числа

Сначала мы будем использовать LabelenCoder на данные. Давайте импортируем его из Sklearn, а затем использовать его на данных.

Код для того же следующий следующим образом:

from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
integer_encoded = label_encoder.fit_transform(vals)
print(integer_encoded)

Выход:

Выход выходит как:

[2 1 2 2 0 0 1 2 0 1]

2. Используя OneHoteNCoder для преобразования целочисленного кодирования в одно горячее кодирование

Теперь давайте преобразуем целочисленное кодирование на одно горячее кодирование.

OneHoteNCoder работает только на данных, которые находится в формате столбца. Чтобы использовать целочисленное кодирование из LabelEncoder, нам придется изменить вывод, прежде чем предоставлять его в качестве входа в OneHoteNCoder.

Это можно сделать со следующими строками кода:

integer_encoded_reshape = integer_encoded.reshape(len(integer_encoded), 1)
print(integer_encoded_reshape)

Выход:

[[2]
 [1]
 [2]
 [2]
 [0]
 [0]
 [1]
 [2]
 [0]
 [1]]

Теперь мы можем использовать эти данные, чтобы сделать односторонние векторы.

from sklearn.preprocessing import OneHotEncoder
onehot_encoder = OneHotEncoder(sparse=False)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded_reshape)
print(onehot_encoded)

Выход:

[[0. 0. 1.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 1.]
 [1. 0. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]

Полный код

Вот полный код для этого руководства:

import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder

# data
data = ['Python', 'Java', 'Python', 'Python', 'C++', 'C++', 'Java', 'Python', 'C++', 'Java' ]
vals = np.array(data)

# Integer Encoding
label_encoder = LabelEncoder()
integer_encoded = label_encoder.fit_transform(vals)
print(integer_encoded)


#reshaping for OneHotEncoder
integer_encoded_reshape = integer_encoded.reshape(len(integer_encoded), 1)

# One-Hot Encoding
onehot_encoder = OneHotEncoder(sparse=False)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded_reshape)
print(onehot_encoded)

Заключение

Этот учебник был о односторонней кодировке в Python. Мы поняли, как он работает и использовал Skelarn для реализации кодировки на этикетке и одно горячее кодирование.