.. | ||
static | ||
templates | ||
Data_chess_games.csv | ||
flask-server.py | ||
img_screen_1.png | ||
img_screen_2.png | ||
readme.md |
Задание
Использовать метод кластеризации по варианту для выбранных данных, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи
Вариант №10
Используемые технологии
В лабораторной были использованы библиотеки:
- pandas - позволяет работать с наборами данных
- matplotlib - используется для создания графиков
- sklearn - используется для работы с моделями и методами машинного обучения
- Flask - предоставляет способ быстрого создания веб-страниц для визуализации работы приложения
Используемые компоненты
- KMeans - библиотечная реализация метода k-средних, алгоритм стремится минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров
- silhouette_score - метрика "Силуэт" для определения качества кластеризации. Вычисляется с помощью среднего внутрикластерного расстояния и среднего расстояния до ближайшего кластера по каждому образцу
Как запустить
Запустить файл flask-server, который поднимет локальный сервер и позволит обратиться к программе через браузер по ссылке http://127.0.0.1:5000/
Что делает программа
Берет 5000 записей из датасета (датасет Chess Game Dataset https://www.kaggle.com/datasets/datasnaek/chess), Преобразует данные нечисловых столбцов в числовые значения, осуществляет нормализацию и взвешивание параметров. Проводит кластеризацию с помощью метода KMeans на данных, количество кластеров выбрано вручную. Оценивает качество кластеризации с помощью метрики "Силуэт"
Анализ и скриншоты работы программы
С помощью кластеризации планировалось разбить все шахматные партии на группы с учетом напряженности игры. Так, рейтинговые игры, с меньшими временными затратами на ход и более высокими рейтингами игроков считаются более напряженными.
Наилучшие результаты по метрике "Силуэт" получаются, если задать количество кластеров, равное двум. Но при этом всего лишь происходит разделение игр на рейтинговые и не рейтинговые. Изменение веса этого параметра также не дает существенных результатов
С другой стороны, разделение данных на 3 кластера визуально совпадает с ожидаемым разделнием. Так, самые напряженные игры войдут в синий кластер, менее напряженные - в желтый. Красный кластер соберет все наимее напряженные игры, так как они проходят вне рейтинга. Однако оценка по метрике "Силуэт" будет существенно хуже.