Гибкий инструмент для оценки моделей машинного обучения с поддержкой ансамблей, оптимизации гиперпараметров и валидации.
Автор: Ерофеев Олег
- 10+ моделей: CatBoost, XGBoost, LightGBM, Логистическая регрессия, Случайный лес и другие
- Ансамбли: Блендинг, Бэггинг, Стекинг, Голосование (Hard/Soft)
- Оптимизация: Интеграция с Optuna для автоматического подбора параметров
- Валидация: K-Fold, Стратифицированный K-Fold, Leave-One-Out, Train-Test Split
- Метрики кластеризации: Расчет силуэта, Calinski-Harabasz, Davies-Bouldin
- Контроль качества:
- Предварительная проверка конфигурации
- Соответствие PEP-8
- Логирование ошибок
- Автосохранение моделей
- March 28, 2025: Добавлена оценка кластеризации (ModelEvaluator v0.0.2).
- February 13, 2025: Запуск ModelEvaluator 0.0.1 для задач классификации с поддержкой ансамблей и Optuna.
- Создайте окружение Anaconda:
conda create -n model_eval python=3.10
conda activate model_eval
- Скачайте файл
environment.yml
- Установите зависимости:
conda env update -f environment.yml
from model_evaluator import ModelEvaluator
# Инициализация
evaluator = ModelEvaluator(
data=df, # Ваш датасет
target_column='Cluster', # Целевая переменная
)
link = 'models/' # Папка для сохранения моделей
# Пример оценки моделей
results = evaluator.evaluate_models(
save_models_to=link
)
results # Вывод результатов
- Быстрая проверка введенных параметров и конфликтов в самом начале работы кода!
- Поддержка мультикласса и бинарной классификации
- Автоматическое определение типа классификации
- Поддержка метрик для многоклассовых задач
- Расчет метрик качества кластеризации
- Возможность сохранения моделей в файл
- Поддержка кастомных параметров для моделей
- Возможность оценки ансамблей моделей
- Оптимизация гиперпараметров с помощью Optuna
- Возможность выбора метода валидации
- Возможность использовать конкретные модели для оценки
- Возможность исключить модели из оценки
Параметр | Тип | Описание |
---|---|---|
selected_models |
dict | Словарь с моделями для оценки: {'Модель': {параметры}} |
unselected_models |
dict | Модели для исключения из оценки: {'Модель': {}} |
custom_params |
dict | Пользовательские параметры для всех моделей: {'Модель': {параметры}} |
cv_method |
str | Метод валидации: KFold , Stratified , LeaveOneOut , train_test_split (default: KFold ) |
cv_params |
dict | Параметры для выбранной валидации |
save_models_to |
str | Путь для сохранения обученных моделей |
- Передавать можно один из трех параметров:
selected_models
,unselected_models
,custom_params
. - Если
selected_models
илиcustom_params
не переданы, то будут использованы все модели по умолчанию (с использованием зафиксированногоseed
, где это возможно)
- Датасет с результатами оценки моделей
- Во время работы выводятся оформленные промежуточные результаты, а также информация о процессе обучения
link = '../../models/'
custom_params = {
'CatBoost': {'verbose': 0, 'random_state': 42},
'XGBoost': {'verbosity': 0, 'random_state': 42},
'LightGBM': {'verbosity': -1, 'random_state': 42},
}
results_df = evaluator.evaluate_models(
custom_params=custom_params,
cv_method='KFold',
cv_params={'n_splits': 5},
save_models_to=link
)
results_df
Вычисляет метрики качества кластеризации и возвращает результаты в виде таблицы.
Параметр | Тип | Описание |
---|---|---|
metrics |
list, optional | Список метрик для расчета. Доступные: ['silhouette', 'calinski_harabasz', 'davies_bouldin'] . По умолчанию используются все. |
pd.DataFrame
: DataFrame с результатами расчета метрик, округленными до трех знаков.
evaluator = ModelEvaluator(data=data, target_column='Cluster')
# Расчет метрик
metrics_df = evaluator.evaluate_clustering()
print(metrics_df.round(3))