# Лабораторна робота 9. Кластеризація. Метод $k$-середніх > Дев'ята лабораторна робота курсу **«Аналітика даних»** — перша в модулі > **кластеризації** (навчання без учителя). Спершу **в аудиторії** ви виконуєте > метод $k$-середніх «руками» на малому наборі точок: рахуєте відстані, відносите > точки до центроїдів, перераховуєте центри й обчислюєте суму квадратів помилок > (SSE). Потім **удома** реалізуєте **програмою** алгоритм $k$-means, що читає > дані з файлу CSV й записує результат категоризації у файл. Робота закріплює > [Лекцію 9](../../Lectures/DA-L09.md). ## Коротко про роботу | | | |---|---| | **Тема** | Кластеризація; функції відстані; метод $k$-середніх; сума квадратів помилок (SSE); критерій збіжності; нечіткий $c$-середніх | | **Передумова** | [Лекція 9. Задачі кластеризації. Метод $k$-середніх](../../Lectures/DA-L09.md) | | **Аудиторна частина** | Обчислення відстаней, повний прогін $k$-середніх «руками», нечітка приналежність (з розв'язаннями) | | **Домашня частина** | Програма: читає CSV з даними, кластеризує методом $k$-means і записує мітки кластерів у файл | | **Оцінювання** | три рівні: базовий **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)) — самостійна реалізація алгоритму $k$-means у коді. - **Навчання без учителя.** Мітки кластерів **невідомі** й самі є результатом роботи алгоритму; номери кластерів ($1, 2, \dots$) умовні — важливий лише **поділ** об'єктів на групи, а не конкретні номери. - **Відстань — евклідова.** Якщо не зазначено інше, відстань між об'єктами вважають **евклідовою** ($L_2$). Для віднесення точки до кластера порівнюють відстані (рівносильно — їхні квадрати) до центроїдів. - **SSE як міра якості.** Компактність розбиття вимірюють сумою квадратів помилок $\mathrm{SSE} = \sum_c \sum_{x \in C_c} \lVert x - \mu_c \rVert^2$; що вона менша, то щільніші кластери. - **Мова програмування — на вибір.** Стандартні бібліотеки для читання CSV дозволені; готові реалізації кластеризації (`sklearn.cluster.KMeans`) можна брати **лише для перевірки** власного коду. ## Підсумок Метод $k$-середніх — найпоширеніший алгоритм кластеризації: він розбиває дані на $k$ груп, ітеративно чергуючи **віднесення** точок до найближчого центроїда й **перерахунок** центроїдів як середніх кластерів, аж поки ті не перестануть зміщуватися. У цій роботі ви навчитеся виконувати його кроки «руками» — рахувати відстані, будувати таблиці віднесення, оновлювати центри й обчислювати SSE — та **автоматизуєте** алгоритм програмою, що кластеризує дані з файлу CSV. Кластеризація — базовий інструмент розвідувального аналізу даних, сегментації та стиснення, тож розуміння механіки $k$-means знадобиться далі в курсі ([ієрархічні методи — Лекція 10](../../Lectures/DA-L10.md)) і на практиці.