- Jupyter Notebook 100%
| data | ||
| eda | ||
| mlflow | ||
| research | ||
| .gitignore | ||
| .python-version | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| uv.lock | ||
Описание проекта
Это проект по ЛР 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/
Результаты исследования
В ходе исследования обучили несколько моделей, которые используют классификатор "случайный лес".

Всего имеем 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
Выбранные столбцы, которые используются моделью, можно посмотреть в этом файле