Пакет для автоматического решения задач классификации на табличных данных. Попытка создать к AutoML-like решение.
Что можно сделать с помощью этого пакета:
- Заполнить пропуски в категориальных и числовых признаках
- Провести скейлинг числовых фичей
- Задать список параметров, которые не надо обрабатывать
- Получить модель, которая лучше всего решает задачу
- Указать список моделей, среди которых надо выбрать лучшую
В пакете есть несколько классов, каждый из которых отвечает за свою функциональность:
DataProvider
-- валидация и загрузка данных, для польнейшего использованияPreprocessor
-- обработка данных, заполнение пропусков, скейлинг, энкодингAutoClassifier
-- подбор лучше модели на кросс валидации, метрика f1- Отдельные классы для ошибок
Флоу использования следующий:
from classifier import AutoClassifier # Импорт базового класса
# Инициализация классификатора
cls = AutoClassifier(models=["all"], data_source="../data/hotels.csv", target="booking_status")
# Получение модели и скора на данных
model, score = cls.fit()
- Поддерживаемые типы данных для data файла:
csv
иparquet
- В используемом файле с данными, не стоит оставлять идентификаторы любого рода. Например идентификатор ббронирования, его лучше удалить
- Сейчас используются три модели, это
DecisionTreeClassifier
,LogisticRegression
,SVC
- При разработке и в отладке использовася этот датасет: https://www.kaggle.com/datasets/ahsan81/hotel-reservations-classification-dataset
Для использования этого репозитория как python пакета необходимо:
- Скачать код:
git clone https://github.com/mvrck96/taurus-auto-ml.git && cd taurus-auto-ml
- Создать виртуальное окружение:
python3 -m venv venv
, после чего активировать его:source venv/bin/activate
- Установить все зависимости:
pip install -r requirements.txt
- Установить утилиту для сборки:
pip install build
- Собрать пакет:
python -m build
- После чего будет создана директория
dist
а в ней будет файл с раширением.whl
и архив.tar.gz
- Любой из этих файлов можно установить с помощью
pip install
Что стоит улучшить ?
- Добавить другие форматы инициализации данных, например просто передавать датафрейм
- Детальнее обрабатывать параметры, для этого надо лучше понимать природу признака и что он описывает
- Более глубокий инжиниринг фичей
- Запуск препроцессинга обернуть в
Pandas Pipeline
- Расширить пул используемых моделей
- Добавить тюнинг параметров для каждой модели, реализовать можно через
RandomSearchCV
- Проработать механизм передачи кастомных метрик для CV
- Валидировать модели в паралельных процессах, для ускорения работы
- Реализовать метод предсказания
- Добавить тесты: юнит, смок
- Добавить логирование, например через
tqdm
чтобы пользователи понимали что происходит