# Лабораторна робота 6. Класифікація. Метод $k$ найближчих сусідів (kNN) > Шоста лабораторна робота курсу **«Аналітика даних»**. Спершу **в аудиторії** ви > «руками» класифікуєте нову точку методом **kNN** (обчислюєте евклідові відстані, > обираєте $k$ найближчих сусідів, голосуєте) та оцінюєте класифікатор за > **матрицею невідповідності** (правильність, точність, чутливість, специфічність, > $F_1$, MCC). Потім **удома** реалізуєте **програму** kNN, що читає навчальну > вибірку з файлу CSV і класифікує введений об'єкт. Робота закріплює > [Лекцію 6](../../Lectures/DA-L06.md). ## Коротко про роботу | | | |---|---| | **Тема** | Класифікація; метод $k$ найближчих сусідів; функції відстані; матриця невідповідності та метрики якості | | **Передумова** | [Лекція 6. Класифікація. Метод $k$ найближчих сусідів (kNN)](../../Lectures/DA-L06.md) | | **Аудиторна частина** | kNN «руками» ($k=1$ і $k=3$); метрики за матрицею невідповідності (з розв'язаннями) | | **Домашня частина** | Програма: читає навчальну вибірку з CSV, запитує ознаки об'єкта й класифікує його методом kNN | | **Оцінювання** | три рівні: базовий **60–74** / середній **75–89** / високий **90–100** | ## Зміст | № | Частина | Файл | |:--:|---|---| | 1 | Мета роботи | [1purpose.md](1purpose.md) | | 2 | Методичні вказівки (теорія + демонстраційний приклад) | [2method.md](2method.md) | | 3 | Аудиторні задачі з розв'язаннями | [3classroom.md](3classroom.md) | | 4 | Домашнє завдання (програма) | [4task.md](4task.md) | | 5 | Зміст звіту | [5report.md](5report.md) | | 6 | Контрольні запитання | [6questions.md](6questions.md) | ## Домовленості - **Дві частини.** Аудиторні задачі ([3classroom.md](3classroom.md)) розбирають спільно «руками» — з них ви розумієте, *що саме* обчислює програма. Домашнє завдання ([4task.md](4task.md)) — самостійна реалізація kNN у коді. - **Відстань за замовчуванням — евклідова.** Якщо не зазначено інше, «відстань» означає евклідову; квадрат відстані $d^2$ зручний для **порівняння** сусідів (не треба брати корінь, порядок той самий). - **Нормалізація.** Якщо ознаки мають різні масштаби, перед обчисленням відстаней їх **нормалізують** (мінімакс або $z$-стандартизація). В аудиторних задачах дані вже зіставні за масштабом, тож нормалізацію там опускають; у програмі її додають на середньому рівні. - **Непарне $k$.** Для двокласової задачі беріть **непарне** $k$, щоб уникнути нічиєї в голосуванні. - **Мова програмування — на вибір.** Стандартні бібліотеки для читання CSV дозволені; готові реалізації (`sklearn.neighbors.KNeighborsClassifier`) можна брати **лише для перевірки** власного коду. ## Підсумок Метод $k$ найближчих сусідів — найпрозоріший класифікатор: він не будує моделі, а відносить новий об'єкт до того класу, що переважає серед його найближчих сусідів у просторі ознак. У цій роботі ви навчитеся виконувати kNN «руками» (відстані → сусіди → голосування), свідомо обирати $k$ і функцію відстані, нормалізувати ознаки та **оцінювати** якість класифікації матрицею невідповідності. Ці навички — фундамент усього Модуля 3: ту саму матрицю невідповідності й ті самі метрики ви застосуєте до дерев рішень ([Лабораторна 7](../Laboratory7/main.md)) і баєсового класифікатора ([Лабораторна 8](../Laboratory8/main.md)).