Оглавление:

Оглавление
Как работает порядковое кодирование?
пример
Одно горячее кодирование
Ловушка фиктивной переменной
OHE с использованием наиболее часто встречающихся переменных

Есть два типа данных

  1. Числовые данные состоят из количественной информации, выраженной или измеренной с помощью чисел. Его можно разделить на дискретные (различные значения) или непрерывные (значения на непрерывной шкале, например: возраст, вес и рост).
  2. Категориальные данные — это информация, разделенная на отдельные категории или группы. Он представляет собой качественные переменные, которые не могут быть измерены в числовой шкале. Категориальные данные обычно представлены ярлыками или именами и могут включать номинальные или порядковые категории, например: :-пол, национальность.

Опять же, существует два типа категорийных данных

i) Номинальные данные – это тип категориальных данных, состоящий из отдельных категорий или меток без какого-либо внутреннего порядка или числового значения. Он представляет собой качественные переменные, которые нельзя ранжировать или упорядочить. Номинальные данные часто используются для классификации или разделения информации на взаимоисключающие группы.

ii) Порядковые данные – это тип категориальных данных с категориями, имеющими определенный порядок или рейтинг. Примеры включают рейтинги, шкалы Лайкерта и уровни образования.

Проблема с категориальными данными в основном заключается в строковой форме, алгоритмы машинного обучения ожидают чисел.

Чтобы преобразовать его в числа, существуют различные методы кодирования. мы сосредоточимся на двух методах.

  1. порядковое кодирование [применяется к порядковым данным]
  2. однократное кодирование [применяется к номинальным данным

Как работает порядковое кодирование?

Предположим, у вас есть столбец в наборе данных под названием «Образование», это порядковые данные.

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

PG›UG›Старшая школа

PG=2

UG=1

Средняя школа = 0

тогда преобразованный столбец будет выглядеть

пример:

Чтобы показать это, я использую набор данных клиентов

#importing necessary liberaries
import numpy as np
import pandas as pd
#reading dataset
df = pd.read_csv('customer.csv')
df.sample(5)

выход:

#considering only necessary columns
df = df.iloc[:,2:]
df.head()

выход:

#test train split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,2:], df.iloc[:,:-1], test_size=0.3, random_state=42)

#importing ordinal encoding
from sklearn.preprocessing import OrdinalEncoder

#you have to give order wise categories
oe = OrdinalEncoder(categories=[['Poor','Average','Good'],['School','UG','PG']])

oe.fit(X_train)

X_train = oe.transform(X_train)

после этого это преобразованные значения

Одна горячая кодировка:

рассмотрим следующий пример:

Здесь у нас есть три цвета (категории) желтый, синий, красный. Здесь нельзя использовать порядковое кодирование, потому что данные номинальные.

поэтому в OHE вы создаете столбец для каждой категории и конвертируете строку в вектор следующим образом:

[1,0,0] представляет желтый цвет

[0,1,0] представляет синий

[0,0,1] представляет красный цвет

Если у вас 50 категорий, вам нужно сделать 50 разных столбцов. Это единственный способ решить эту проблему.

Ловушка с фиктивной переменной:

После применения ОГЭ. вам нужно удалить любой столбец из вновь созданного столбца. Как правило, мы удаляем 1-й столбец

Из-за мультиколлинеарности в машинном обучении существует общая мудрость. Между столбцами ввода не должно быть связи.

Вы можете увидеть отношения здесь. если вы добавите 3 столбца в любую строку. Сумма равна 1.

Это становится проблематичным, когда вы работаете с линейными моделями, такими как логистическая регрессия.

если вы удалите весь столбец. Итак, на ум должен прийти вопрос: как вы будете представлять три цвета?

Удалив один столбец. Вы можете представлять Синий и Красный. Проблема только с желтым. Если и синий, и красный столбцы равны нулю, то он представляет желтый цвет.

OHE с использованием наиболее частых переменных:

Предположим, у меня есть набор данных об автомобилях. В столбце марки, который содержит более 32 марок, марка является номинальными категориальными данными.

Если применить к этому ОДНУ, то нужно создать 32 столбца, что увеличит размерность данных и потребует времени на обработку.

Что делать в этом случае. наиболее часто встречающиеся категории в этой колонке. Вы сохраняете те самые частые категории.

Вы преобразуете эти другие категории в новую категорию, скажем, «другие».

Я создал блокнот Jupyter, чтобы продемонстрировать реализацию горячего кодирования. Если вы хотите просмотреть блокнот, вы можете получить к нему доступ по следующей ссылке:



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

Свяжитесь со мной:

LinkedIn: https://www.linkedin.com/in/pareshpatil122/

Гитхаб: https://github.com/paresh122

Портфолио: https://pareshpatil-portfolio.netlify.app/