Автор оригинала: Pankaj Kumar.
Одностороннее кодирование – это методика представления категориальных данных в виде двоичных векторов Отказ Это общий шаг в обработке последовательных данных перед выполнением Классификация Отказ
Одно горячее кодирование также обеспечивает способ реализации Слово встраивается Отказ Встраивание слова относится к процессу поворота слов в числа для машины, чтобы можно было его понять.
Обычно приносят слов вложения из корпуса перед вводом его в модель LSTM. Создание слов вложения из корпуса облегчает для компьютера находить отношения и модели между словами.
В этом руководстве мы собираемся понять, что именно является односторонним кодировкой, а затем использовать Sklearn реализовать это.
Давайте начнем с примера.
Работа одно горячего кодирования в Python
Рассмотрим следующую последовательность слов.
['Python', 'Java', 'Python', 'Python', 'C++', 'C++', 'Java', 'Python', 'C++', 'Java' ]
Это последовательные данные с тремя категориями.
Категории в данных выше следующие:
- Питон
- Ява
- C ++
Давайте попробуем понять работу за односторонним кодировкой.
Одно- горячая кодировка имеет два шагового процесса.
- Преобразование Категории целых чисел
- Преобразование Целые числа бинарных векторов
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 для реализации того же.
Мы будем следовать тому же двухэтапному подходу при реализации.
Шаги следующие:
- Использовать LabelenCoder преобразовать категории в целые числа.
- Использовать Один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 для реализации кодировки на этикетке и одно горячее кодирование.