Съдържание:

Съдържание
Как работи поредното кодиране?
пример
Едно горещо кодиране
Прихващане на фиктивни променливи
OHE, използвайки най-честите променливи

Има два типа данни

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

Отново има два типа категорични данни

i) Номинални данни са тип категориални данни, които се състоят от отделни категории или етикети без присъщ ред или числово значение. Той представлява качествени променливи, които не могат да бъдат класирани или подредени. Номиналните данни често се използват за класифициране или категоризиране на информация във взаимно изключващи се групи.

ii) Поредните данни са вид категорични данни с категории, които имат определен ред или класиране. Примерите включват класации, скали на Likert и образователни нива.

Проблемът с категоричните данни е най-вече в низова форма, алгоритмите за машинно обучение очакват числа.

За да го преобразувате в числа, има различни техники за кодиране. ще се спрем на две техники.

  1. поредно кодиране [приложено към поредни данни]
  2. еднократно кодиране [приложено към номинални данни

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

Да предположим, че имате колона в набор от данни, наречена Образование, това са поредни данни

Така че трябва да преобразувате тези редни, категорични данни в числови данни. Трябва да присвоите само стойности според реда; това е и вашата колона се трансформира

PG›UG›Highschool

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 колони във всеки ред.sum е 1.

Става проблематично, когато работите върху линейни модели като логистична регресия.

ако премахнете цяла колона. Така че трябва да ви е хрумнал въпрос: как ще представите три цвята?

Като премахнете една колона. Можете да представлявате синьо и червено. Проблемът е само с жълтото. Ако и синята, и червената колона са нула, тогава това представлява жълто

OHE, използвайки най-честите променливи:

Да предположим, че имам набор от данни за автомобили В колоната марка, която има 32+ марки, марката е номинални категорични данни

Ако приложите ЕДНА към това, трябва да създадете 32 колони, което ще увеличи размерността на данните и ще отнеме време за обработка.

Какво да направите в този сценарий. най-често срещаните категории в тази колона. Запазвате тези най-чести категории.

Трансформирате тези други категории в нова категория, да кажем „други“.

Създадох Jupyter Notebook, за да покажа прилагането на one-hot кодиране. Ако желаете да прегледате бележника, можете да получите достъп до него на следната връзка:



Благодаря ви, че отделихте време да прочетете моя блог. Вашата подкрепа и ангажираност означават света за мен. Искрено оценявам интереса ви към моя проект и се надявам, че той ви е предоставил ценни прозрения. Вашата постоянна читателска аудитория и обратна връзка ме вдъхновяват да продължа да споделям знания и да се стремя към съвършенство. Благодарим ви, че сте част от това пътуване

Свържете се с мен:

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

GitHub: https://github.com/paresh122

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