Защо да го пишем, като го има готов
Защото това е единственият модел в курса, който се побира в 15 реда. След днес няма да ви е нужно да вярвате какво прави класификаторът — ще сте го написали.
Второто, което правим днес, е подготовката на данните: кодиране на категорийните признаци, обещано още в урок 3.
Категорийни признаци в числа
В урок 3 видяхме, че кодирането на район „Център“, „Изток“, „Люлин“ като 1, 2, 3 внушава подредба, каквато няма. Правилният начин е една колона да стане на няколко:
район → Център Изток Люлин
"Център" → 1 0 0
"Изток" → 0 1 0
"Люлин" → 0 0 1Кодиране едно от много (one-hot encoding)
Всяка възможна стойност на категорийния признак получава собствена колона със стойност 0 или 1. Така никоя стойност не е „по-голяма“ от друга и разстоянията между различните категории са еднакви.
Цената
Признак с 500 възможни стойности (например град) става на 500 колони. Това раздува данните и влошава работата на алгоритмите, базирани на разстояние. Тогава се групират редките стойности в „друго“ или се използват други методи за кодиране.
Планът за днес
- Пишем функция за разстояние.
- Пишем предсказване за един пример.
- Проверяваме върху малък набор, който познаваме от миналия урок.
- Сравняваме със scikit-learn — числата трябва да съвпаднат.
- Добавяме нормализиране и кодиране и мерим какво печелим.
Правилото за днес
Ако нещо не работи, отпечатвайте междинните стойности. Първо разстоянията, после подредбата, после избраните съседи. Грешката почти винаги е в едно от трите.