Package: ml-in-prod-juliarty-ml-project-1
Download dataset:Use Kaggle public API (https://www.kaggle.com/docs/api).Type the following commands:cd ml_project/data/rawkaggle datasets download -d cherngs/heart-disease-cleveland-uciunzip heart-disease-cleveland-uci.ziprm heart-disease-cleveland-uci.zipRUN train with default config:cd ml_project
   python -m ml_project.pipelines.train_pipelineRUN train with overrode config (all pipelines' configs are in configs/train_pipelines folder):cd ml_project
   python -m ml_project.pipelines.train_pipeline +train_pipelines=forest_train_pipelineRun predict with default config:cd ml_project
    python -m ml_project.pipelines.predict_pipelineRUN 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
└── ml_project                <- Исходный код.
    ├── __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Для тренировки модели и использования обученной модели созданы соответствующие пайплайны (ml_project/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.yamlconfigs/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 баллов)