That is a homework project
Project description
Download dataset:
- Use Kaggle public API (https://www.kaggle.com/docs/api).
- Type the following commands:
- cd ml_project/data/raw
- kaggle datasets download -d cherngs/heart-disease-cleveland-uci
- unzip heart-disease-cleveland-uci.zip
- rm heart-disease-cleveland-uci.zip
RUN train with default config:
cd ml_project
python -m src.pipelines.train_pipeline
RUN train with overrode config (all pipelines' configs are in configs/train_pipelines folder):
cd ml_project
python -m src.pipelines.train_pipeline +train_pipelines=forest_train_pipeline
Run predict with default config:
cd ml_project
python -m src.pipelines.predict_pipeline
RUN tests:
cd ml_project
pytest
Архитектурные решения:
- Проект ml-project представляет собой пакет Python. Структура пакета (заимствована стуктура cookiecutter-data-science):
├── __init__.py
├── README.md
├── data
│ └── raw <- Исходный датасет
│
├── notebooks <- Результаты анализа данных и прототипы.
│ └── EDA.ipynb
│
├── configs <- Конфигурации проекта в формате .yaml
│ ├── train_pipelines <- Измененные default конфигурации train пайплайнов
│ ├── features
│ ├── model
│ ├── preprocessing
│ ├── split
│ ├── default_train_pipeline.yaml
│ └── default_predict_pipeline.yaml
│
├── requirements.txt
│
├── outputs <- Все артефакты создаваемые пайплайнами (модели, метрики, используемые конфигурационные файлы).
│ ├── train
│ └── inference
└── src <- Исходный код.
├── __init__.py
├── tests
└── pipelines
├── __init__.py
├── train_pipeline.py
├── predict_pipeline.py
│
├── data <- Модули, содержащие код для предобработки данных.
│ ├── __init__.py
│ ├── features_params.py <- Класс для конфигурации (Выделяемые из датасета признаки).
│ ├── split_params.py <- Класс для конфигурации (Размеры тренировочного и тестого датасетов).
│ └── make_dataset.py <- Создание датафрейма, разбиение на тренировочные и тестовые данные.
│
├── preprocessing <- Содержит трансформеры для подготовки данных.
│ ├── __init__.py
│ ├── preprocessing_params.py <- Класс для конфигурации (Параметры трансформера).
│ └── transformers.py
│
└── models <- Обучение, использовние и конфигурирование модели.
├── __init__.py
├── model_params.py <- Класс для конфигурации (Параметры модели).
├── predict_model.py
└── train_model.py
- Для тренировки модели и использования обученной модели созданы соответствующие пайплайны (src/pipelines).
- Проект имеет модульную структуру (за каждую часть пайплайна отвечает определенный пакет).
- Для конфигурирования использована hydra.
- Данные скачиваются с Google Drive.
- Артефакты сохраняются в папке outputs/train, outputs/inference.
- Для тестирования пайплайнов генерируются данные приближенные к реальным:
- категориальные
- числовые (с дискретными и непрерывными распределенями) в пределах минимальных и максимальных значений
- В описании к пулл реквесту описаны основные "архитектурные" и тактические решения. (1/1)
- В пулл-реквесте проведена самооценка (1/1)
- Выполнено EDA и прототипирование. Нет скрипта (1/2)
- Написана функция/класс для тренировки модели, вызов оформлен как утилита командной строки, записана в readme инструкция по запуску (3/3)
- Написана функция/класс predict (вызов оформлен как утилита командной строки), которая примет на вход артефакт/ы от обучения, тестовую выборку (без меток) и запишет предикт по заданному пути, инструкция по вызову записана в readme (3/3)
- Проект имеет модульную структуру. Описание структуры проекта в README.md (2/2)
- Использованы логгеры (2/2)
- Используется модуль logging в основных модулях (пайплайны, обучение, получение датасета).
- Настройки модуля - измененнные настройки логгера hydra (вывод в файл и в консоль).
- Логи подсвечиваются в консоли.
- Написаны тесты на отдельные модули и на прогон обучения и predict. (3/3)
- Для всех модулей и пайплайнов есть тесты. (framework pytest)
- В CI отображается отчёт о покрытии (общее покрытие строк 93 %).
- Для тестов генерируются синтетические данные, приближенные к реальным. (2/2)
- Данные генерируются дискретные (категориальные признаки, 'age' и т.д.) и непрерывные с равномерным распределением.
- Все данные генерируются в пределах их минимальных и максимыльных значений.
- Используются для тестирования как train, так и predict пайплайнов.
- Обучение модели конфигурируется с помощью конфигов yaml. (3/3)
Есть две конфигурации (отличаются модели, признаки и параметры разбиения на train, test):
- configs/default_train_pipeline.yaml
- configs/pipelines/forest_train_pipeline.yaml
- Используются датаклассы для сущностей из конфига, а не голые dict (2/2)
- Все датакслассы конфигов находятся в директориях с соответствующими модулями.
- Имена классов модулей содержащих датаклассы конфигов с суффиксом '_params'.
- Напишите кастомный трансформер и протестируйте его (3/3)
- Реализовано два кастомных трансформера (IdentityTransformer, OneHotTransformer)
- OneHotTransformer осуществляет one-hot кодирование категориальных признаков и рескейлинг числовых признаков.
- Реализованы тесты на случайном датасете.
- В проекте зафиксированы все зависимости (1/1)
- Настроен CI для прогона тестов, линтера на основе github actions (3/3).
Дополнительные баллы:
- Используется hydra для конфигурирования (3 балла)
- Mlflow (Не используется: 0 баллов)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for ml_in_prod_juliarty_ml_project_1-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4d41074e39e8d17d1566e6d2f6b2fc226c42aabb16c1de690792c19f9df782e |
|
MD5 | 9d5778531bef854fb6e629c7892c105e |
|
BLAKE2b-256 | 2274c25581e6828f7e6297cf03b616175b614383f63e0640c5baea794fa0650b |