4. Домашнє завдання (написання програми)
Джерело завдання. Формулювання взято з методичних матеріалів курсу. Готового коду тут немає — це індивідуальне завдання; техніку обчислень показано на інших даних у 2method.md та 3classroom.md.
Постановка
Реалізувати програму, що бере навчальну вибірку з CSV файлу (як приклад можна розглянути вибірки з Kaggle), запитує атрибути елементу, який потрібно класифікувати, та класифікує його за допомогою алгоритму kNN.
Мову програмування студент обирає самостійно. Навчальна вибірка — таблиця, де рядок є об’єктом: кілька стовпців-ознак і один стовпець-клас (мітка). Наприклад, класичні набори з Kaggle — Iris (класифікація квітки за розмірами пелюсток) чи Wine.
Вхід і вихід
- Вхід:
- шлях до файлу CSV з навчальною вибіркою (ознаки + стовпець класу);
- значення ознак об’єкта, який треба класифікувати (програма їх запитує — з консолі, аргументів або окремого файла);
- параметр (число сусідів).
- Вихід: передбачений клас об’єкта. Бажано також показати самих найближчих сусідів із відстанями та розподіл їхніх голосів.
Рівні складності
Оцінка відповідає найвищому повністю й правильно виконаному рівню.
Базовий рівень — 60–74 балів
- Прочитати навчальну вибірку з файлу CSV (числові ознаки + стовпець класу).
- Запитати ознаки об’єкта для класифікації та значення .
- Обчислити евклідові відстані від об’єкта до всіх навчальних точок, відібрати найближчих і віднести об’єкт до найпоширенішого серед них класу (мажоритарне голосування).
- Обчислення відстані та голосування реалізувати самостійно (не викликати готовий класифікатор як основне рішення).
Середній рівень — 75–89 балів
Додатково до базового:
- Додати нормалізацію ознак (мінімакс або -стандартизація) і показати, як вона змінює результат порівняно з «сирими» ознаками.
- Реалізувати вибір (параметром) і різні функції відстані на вибір користувача: евклідову, манхеттенську, Мінковського (і, за наявності категоріальних ознак, Геммінга).
- Коректно опрацьовувати файл із заголовком і довільним числом стовпців-ознак (стовпець класу задають параметром чи за назвою).
Високий рівень — 90–100 балів
Додатково до середнього:
- Реалізувати зважений kNN (вага або ) і порівняти його результат зі звичайним голосуванням.
- Поділити дані на тренувальну й тестову множини, класифікувати тестові об’єкти та оцінити якість: побудувати матрицю невідповідності й обчислити правильність (accuracy), точність (precision) і чутливість (recall).
- Дослідити вплив : побудувати залежність якості (напр. правильності) на тестовій вибірці від і вибрати найкраще ; передбачити перевірку коректності вводу (порожній файл, нечислові значення, пропуски).
Що здавати
- Вихідний код програми (з коротким
README: як запустити, формат вхідного CSV, який рівень складності виконано). - Приклад запуску на навчальному наборі (напр. Iris). Обов’язково перевірте програму на даних Задачі 1: подайте ті точок як навчальну вибірку, а — як об’єкт; очікувано клас A для і .
- Для високого рівня — матрицю невідповідності й метрики на тестовій вибірці.
- Оформлення звіту — за 5report.md; перелік запитань до захисту — у 6questions.md.