Raw

4. Домашнє завдання (написання програми)

Джерело завдання. Формулювання взято з методичних матеріалів курсу. Готового коду тут немає — це індивідуальне завдання; техніку обчислень показано на інших даних у 2method.md та 3classroom.md.

Постановка

Реалізувати програму, що бере навчальну вибірку з CSV файлу (як приклад можна розглянути вибірки з Kaggle), запитує атрибути елементу, який потрібно класифікувати, та класифікує його за допомогою алгоритму kNN.

Мову програмування студент обирає самостійно. Навчальна вибірка — таблиця, де рядок є об’єктом: кілька стовпців-ознак і один стовпець-клас (мітка). Наприклад, класичні набори з Kaggle — Iris (класифікація квітки за розмірами пелюсток) чи Wine.

Вхід і вихід

  • Вхід:
    • шлях до файлу CSV з навчальною вибіркою (ознаки + стовпець класу);
    • значення ознак об’єкта, який треба класифікувати (програма їх запитує — з консолі, аргументів або окремого файла);
    • параметр kk (число сусідів).
  • Вихід: передбачений клас об’єкта. Бажано також показати самих kk найближчих сусідів із відстанями та розподіл їхніх голосів.

Рівні складності

Оцінка відповідає найвищому повністю й правильно виконаному рівню.

Базовий рівень — 60–74 балів

  1. Прочитати навчальну вибірку з файлу CSV (числові ознаки + стовпець класу).
  2. Запитати ознаки об’єкта для класифікації та значення kk.
  3. Обчислити евклідові відстані від об’єкта до всіх навчальних точок, відібрати kk найближчих і віднести об’єкт до найпоширенішого серед них класу (мажоритарне голосування).
  4. Обчислення відстані та голосування реалізувати самостійно (не викликати готовий класифікатор як основне рішення).

Середній рівень — 75–89 балів

Додатково до базового:

  1. Додати нормалізацію ознак (мінімакс або zz-стандартизація) і показати, як вона змінює результат порівняно з «сирими» ознаками.
  2. Реалізувати вибір kk (параметром) і різні функції відстані на вибір користувача: евклідову, манхеттенську, Мінковського (і, за наявності категоріальних ознак, Геммінга).
  3. Коректно опрацьовувати файл із заголовком і довільним числом стовпців-ознак (стовпець класу задають параметром чи за назвою).

Високий рівень — 90–100 балів

Додатково до середнього:

  1. Реалізувати зважений kNN (вага 1/d1/d або 1/d21/d^2) і порівняти його результат зі звичайним голосуванням.
  2. Поділити дані на тренувальну й тестову множини, класифікувати тестові об’єкти та оцінити якість: побудувати матрицю невідповідності й обчислити правильність (accuracy), точність (precision) і чутливість (recall).
  3. Дослідити вплив kk: побудувати залежність якості (напр. правильності) на тестовій вибірці від kk і вибрати найкраще kk; передбачити перевірку коректності вводу (порожній файл, нечислові значення, пропуски).

Що здавати

  • Вихідний код програми (з коротким README: як запустити, формат вхідного CSV, який рівень складності виконано).
  • Приклад запуску на навчальному наборі (напр. Iris). Обов’язково перевірте програму на даних Задачі 1: подайте ті 88 точок як навчальну вибірку, а q=(4,4)q = (4,4) — як об’єкт; очікувано клас A для k=1k = 1 і k=3k = 3.
  • Для високого рівня — матрицю невідповідності й метрики на тестовій вибірці.
  • Оформлення звіту — за 5report.md; перелік запитань до захисту — у 6questions.md.

Laboratory/Laboratory6/4task.md · 5.8 KB · updated 2026-08-04 23:17