4. Домашнє завдання (написання програми)
Джерело завдання. Завдання доповнює матеріали курсу (у вихідному архіві домашнє завдання для теми 13 відсутнє). Готового коду тут немає — це індивідуальне завдання; техніку обчислень показано на інших даних у 2method.md та 3classroom.md.
Постановка
Реалізувати метод головних компонент (PCA): центрування даних, обчислення коваріаційної матриці, власних векторів/значень, проєкція на головні компоненти. На вхід — CSV з числовими ознаками; звести дані до 2 компонент і візуалізувати; вивести частку поясненої дисперсії.
Мову програмування студент обирає самостійно. Обчислення власних значень і
векторів дозволено виконувати бібліотечною функцією (зокрема
numpy.linalg.eig / numpy.linalg.eigh); центрування, коваріаційну матрицю,
проєкцію та частку поясненої дисперсії реалізуйте самостійно.
Вхід і вихід
- Вхід: шлях до файлу CSV з числовими ознаками (рядки — об’єкти, стовпці — ознаки; можливі заголовок і нечислові стовпці-мітки, які слід відкинути або використати лише для розфарбування графіка).
- Вихід:
- коваріаційна (або кореляційна — для стандартизованих даних) матриця;
- власні значення (за спаданням) і частки поясненої дисперсії;
- нові координати об’єктів у перших двох головних компонентах;
- візуалізація — діаграма розсіювання об’єктів у координатах PC1–PC2.
Рівні складності
Оцінка відповідає найвищому повністю й правильно виконаному рівню.
Базовий рівень — 60–74 балів
- Прочитати числові ознаки з файлу CSV; центрувати дані (відняти середнє кожної ознаки).
- Обчислити коваріаційну матрицю та її власні значення й вектори; упорядкувати компоненти за спаданням власних значень.
- Спроєктувати дані на дві перші головні компоненти й побудувати діаграму розсіювання PC1–PC2.
- Вивести частку поясненої дисперсії кожної з двох компонент і їх суму.
Середній рівень — 75–89 балів
Додатково до базового:
- Передбачити стандартизацію ознак (поділ на СКВ) як опцію; пояснити у звіті, коли вона потрібна, і показати різницю результату з нею та без неї.
- Побудувати scree-графік (стовпчики власних значень) і вивести накопичену пояснену дисперсію для всіх компонент.
- Дати змогу обрати число компонент за порогом накопиченої дисперсії (напр., ) і вивести обране .
Високий рівень — 90–100 балів
Додатково до середнього:
- Застосувати метод -середніх (Лабораторна 9) до даних до зменшення розмірності (усі ознаки) та після проєкції на 2 компоненти; порівняти отримані розбиття (напр., за узгодженістю міток або значенням SSE) і за часом виконання.
- Візуалізувати кластери на площині PC1–PC2 (розфарбувати точки за кластерами) і прокоментувати, чи стала структура даних видимою після зменшення розмірності.
- Передбачити перевірку коректності вводу (порожній файл, нечислові значення, пропуски, один стовпець) з інформативним повідомленням.
Що здавати
- Вихідний код програми (з коротким
README: як запустити, який формат входу). - Приклад запуску на тестовому файлі. Обов’язково перевірте програму на даних Задач 1–3 (п’ять точок ) — очікувано коваріаційна матриця з діагоналлю і коваріацією , власні значення та , частка поясненої дисперсії 1-ї компоненти .
- Візуалізацію PC1–PC2 та (для середнього рівня й вище) scree-графік.
- Оформлення звіту — за 5report.md; перелік запитань до захисту — у 6questions.md.