No description
  • Jupyter Notebook 100%
Find a file
Михайловский Михаил 89cd43ec67 done research and made prod model
2026-09-29 01:01:16 +03:00
data Загрузка и удаление данных 2026-09-13 16:44:52 +03:00
eda eda images 2026-09-15 00:26:15 +03:00
mlflow mlflow registered model 2026-09-27 22:51:29 +03:00
research done research and made prod model 2026-09-29 01:01:16 +03:00
.gitignore initial commit 2026-09-01 11:11:54 +03:00
.python-version Файлов от uv 2026-09-13 13:51:50 +03:00
pyproject.toml done research and made prod model 2026-09-29 01:01:16 +03:00
README.md done research and made prod model 2026-09-29 01:01:16 +03:00
requirements.txt done research and made prod model 2026-09-29 01:01:16 +03:00
uv.lock done research and made prod model 2026-09-29 01:01:16 +03:00

Описание проекта

Это проект по ЛР ISS.

Запуск.

Вариант А (pip)

Создаём виртуальное окружение

python3 -m venv .venv

Активируем виртуальное окружение

source ./venv/bin/activate

Устанавливаем пакеты

python3 -m pip install -r requirements.txt

Активируем виртуальное окружение в vscode. Для этого нажимаем Ctrl+Shift+P -> Python: Select Interpreter. Выбираем путь к .venv/bin/python3.

Вариант Б (uv)

Создаём виртуальное окружение и устанавливаем пакеты

uv sync

Активируем виртуальное окружение в vscode. Для этого нажимаем Ctrl+Shift+P -> Python: Select Interpreter. Выбираем путь к .venv/bin/python3.

Описание датасета

Используется набор данных о здоровье и сне жителей города Бангладеш. В нём собраны данные о том, когда люди спят, когда ложаться и встают, какие проблемы со сном встречаются и со здоровьем. Более подробное описание

В качестве целевого выбрана субъективная оценка концентрации.

Выводы по разведочному анализу данных

Мы сгруппировали варианты в 3 категории "редко", "иногда", "часто". Строки со значением "неизвестно" были отброшены.

  • Были отброшены строки, где вес составлял меньше 35 килограмм.
  • Были отброшены строки, которые содержали пропуски (таких строк были единицы).
  • Были отброшены строки, где пол был указан "предпочитаю не указывать".

По полученым графикам видно, что график, когда люди ложаться спать и встают может влиять на концентрацию. Распределение больше склоняется в сторону больших проблем с концентрацией для людей, которые не придерживаются очень раннего или очень позднего графика.

Были рассчитаны новые признаки: проблемы со сном и индекс совы. "Проблемы со сном" является взвешенной суммой столбцов, связанных с проблемами в течение сна или засыпанием. "Индекс совы" это взвешенная сумма признаков времени, когда люди ложаться спать или встают. Большее значение соответствует позднему графику.

Проблемы со сном выделяет разные распределения с разными медианами. "Индекс совы" дает меньшее различие. Полученные распределения имеют отличия в дисперсии.

С увеличением кофорта места сна жалоб на концентрацию станновится больше.

Корреляций не наблюдается. Вероятно, зависимости нелинейные.

Запуск mlflow

Для запуска mlflow активируем виртуальное окружение и запускаем скрипт.

source .venv/bin/activate
cd mlflow
./start.sh

После запуска сервер будет доступен на локальном порте 5000. Можно открыть страницу mlflow в браузере по адресу http://127.0.0.1:5000/

Результаты исследования

В ходе исследования обучили несколько моделей, которые используют классификатор "случайный лес". image

Всего имеем 3 класса. Лучшая модель показала показатель f1 46%. Такой результат может быть связан с расплывчатым 3-м классом "Sometimes". Так baseline модель предпочла практически не предсказывать значение "Sometimes", что значительно повлияло на метрики.

Это видно по матрице ошибок, baseline модель выдала метку "Sometimes" всего 10+8+18=36 раз, когда всего меток "Sometimes" в тестовой выборке 69+43+18=130, откуда получили малое значение полноты для этого класса.

[[201  67  10]
 [129  83   8]
 [ 69  43  18]]

Итоговая модель, которая была взята в production имеет следующий run_id: 100d64ad06d74169913e0217d54ee700

Выбранные столбцы, которые используются моделью, можно посмотреть в этом файле