Моделите за машинно обучение могат да разбират само числови данни, но повечето данни, които имаме в реалния свят, се състоят от всички видове типове данни. И така, как ML моделът обработва текстови данни? Тук се нуждаем от кодиране.

Можем да използваме целочислено кодиране или кодиране на етикети. Но не всяко кодиране работи върху всички нечислови данни (категориални данни). Виждате ли, категориалните данни са от различни видове.

Номиналните променливи нямат никакво числово подреждане между тях като цветовете — червено, зелено, синьо, докато редните имат някаква йерархия между тях, като ниска, средна, висока или дипломирана, магистратура и докторска степен. Дихотомичните данни са двоични данни, т.е. тези, които имат само два възможни изхода като Мъртъв/Жив или Глава/Опашка и т.н.

Да кажем, че имаме примерен набор от данни за „Данни за здравето на момчетата“.

Нашата работа е да обучим линеен регресионен модел за прогнозиране на зависима характеристика (Тегло в този случай), използвайки независими характеристики (Височина, възраст и град в този случай). Моделът на множествена линейна регресия обикновено приема формата на уравнение на линия, както е показано по-долу:

y = m1x1+m2x2+m3x3….+c

След това ще опитам да поставя някои фиктивни коефициенти и ще създам модел на множествена регресия за примерни данни.

Тегло = 0,5*Височина+0,2*Възраст+0,6*Град

Но забележете последния член в горното уравнение, умножаването на число с име на град е абсурдно и нелогично. Решението за това са фиктивни променливи. Когато работим с номинални променливи, простото целочислено кодиране няма да работи, така че използваме Едно горещо кодиране, където създаваме една колона за всяка от категориите и присвояваме една от двоичните стойности, т.е. 0 или 1. Тези допълнителни създадените изкуствени променливи са известни като фиктивни променливи. В pandas имаме метод, наречен get_dummies(), който може да се използва за това. Данните след използване на метода get_dummies изглеждат както е показано по-долу. Този набор от данни сега може да бъде добре включен в регресионното уравнение, споменато по-горе.

Но ще забележите, че има проблем с горните данни. Град_Чикаго+Град_Бостън+Град_Феникс =1

Горното уравнение е валидно за всички точки от данни в данните за обучение. Ако прекъснем проблема по-нататък,

City_Chicagoможе да се предвиди отCity_Bostonи City_Phoenix

City_Bostonможе да се предвиди отCity_Chicagoи City_Phoenix

City_Phoenixможе да се предвиди отCity_Chicagoи City_Boston

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

Така че решението да избегнете този капан е да декларирате една променлива по-малко от общия брой променливи. Просто трябва да зададем drop_first = Trueвъв функцията на pandas get_dummies().

Ето как ще избягаме от този гаден капан, хора!

😊