Raw

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

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

Постановка

Реалізувати метод головних компонент (PCA): центрування даних, обчислення коваріаційної матриці, власних векторів/значень, проєкція на головні компоненти. На вхід — CSV з числовими ознаками; звести дані до 2 компонент і візуалізувати; вивести частку поясненої дисперсії.

Мову програмування студент обирає самостійно. Обчислення власних значень і векторів дозволено виконувати бібліотечною функцією (зокрема numpy.linalg.eig / numpy.linalg.eigh); центрування, коваріаційну матрицю, проєкцію та частку поясненої дисперсії реалізуйте самостійно.

Вхід і вихід

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

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

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

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

  1. Прочитати числові ознаки з файлу CSV; центрувати дані (відняти середнє кожної ознаки).
  2. Обчислити коваріаційну матрицю та її власні значення й вектори; упорядкувати компоненти за спаданням власних значень.
  3. Спроєктувати дані на дві перші головні компоненти й побудувати діаграму розсіювання PC1–PC2.
  4. Вивести частку поясненої дисперсії кожної з двох компонент і їх суму.

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

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

  1. Передбачити стандартизацію ознак (поділ на СКВ) як опцію; пояснити у звіті, коли вона потрібна, і показати різницю результату з нею та без неї.
  2. Побудувати scree-графік (стовпчики власних значень) і вивести накопичену пояснену дисперсію для всіх компонент.
  3. Дати змогу обрати число компонент kk за порогом накопиченої дисперсії (напр., 0.900.90) і вивести обране kk.

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

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

  1. Застосувати метод kk-середніх (Лабораторна 9) до даних до зменшення розмірності (усі ознаки) та після проєкції на 2 компоненти; порівняти отримані розбиття (напр., за узгодженістю міток або значенням SSE) і за часом виконання.
  2. Візуалізувати кластери на площині PC1–PC2 (розфарбувати точки за кластерами) і прокоментувати, чи стала структура даних видимою після зменшення розмірності.
  3. Передбачити перевірку коректності вводу (порожній файл, нечислові значення, пропуски, один стовпець) з інформативним повідомленням.

Що здавати

  • Вихідний код програми (з коротким README: як запустити, який формат входу).
  • Приклад запуску на тестовому файлі. Обов’язково перевірте програму на даних Задач 1–3 (п’ять точок (2,3),(3,6),(4,5),(5,4),(6,7)(2,3),(3,6),(4,5),(5,4),(6,7)) — очікувано коваріаційна матриця з діагоналлю 2.52.5 і коваріацією 1.51.5, власні значення 44 та 11, частка поясненої дисперсії 1-ї компоненти 0.80.8.
  • Візуалізацію PC1–PC2 та (для середнього рівня й вище) scree-графік.
  • Оформлення звіту — за 5report.md; перелік запитань до захисту — у 6questions.md.

Laboratory/Laboratory13/4task.md · 6.1 KB · updated 2026-08-05 08:42