ds_nms
библиотека для аналитики данных и машинного обучения, включающая модули для предобработки данных, отбора признаков, обучения моделей, тюнинга гиперпараметров и проведения статистического анализа. Она позволяет автоматизировать ключевые этапы работы с данными и моделями машинного обучения, обеспечивая эффективные инструменты для анализа и оптимизации.
📦 Репозиторий (ds_nms)
├── 📂 ds_nms/ [Основной пакет библиотеки]
│ ├── 📄 data_proc.py [Обработка и предобработка данных]
│ ├── 📄 feature_select.py [Отбор значимых признаков]
│ ├── 📄 model_train.py [Обучение моделей]
│ ├── 📄 model_tune.py [Оптимизация гиперпараметров]
│ ├── 📄 model_tune_params.py [Параметры моделей]
│ ├── 📄 stat_tests.py [Статистические тесты]
│ ├── 📄 utils_io.py [Вспомогательные утилиты]
│ └── 📄 __init__.py [Файл инициализации пакета]
│
├── 📂 install/ [Скрипт установки пакета]
│ └── 📄 install_ds_nms.py
│
├── 📂 examples/ [Примеры использования]
│ ├── 📄 example1.ipynb [Jupyter Notebook с примерами работы]
│ ├── 📄 example2.ipynb
│ └── ...
│
├── 📄 requirements.txt [Файл с зависимостями (Ubuntu)]
├── 📄 requirements_win.txt [Файл с зависимостями (Windows)]
├── 📄 .env [Файл с переменными среды (MLFlow)]
└── 📄 README.md
Основные требования:
- Операционная система:
Ubuntu 22.04
/ Windows Python: 3.10.12
/Python: 3.12.3
Установка осуществляется через скрипт install_ds_nms.py, который автоматически создает виртуальное окружение и устанавливает пакет из GitHub.
Шаги установки:
- Из директории репозитория install/ скачать в рабочую директорию файл install_ds_nms.py
- Выполните команду:
python3 install_ds_nms.py
- Создается виртуальное окружение .venv
- Установится пакет ds_nms из GitHub-репозитория
- Создать виртуальное окружение
python3 -m venv .venv
- Активировать окружение
source .venv/bin/activate
- Установить пакет
pip install git+https://github.com/NazarovMichail/ds_nms.git@master
Файл .env - файл с переменными среды для подключения к базе данных MLFlow.
Содержание файла:
- USER_ML = <Имя пользователя Posgresql>
- PASS_ML = <Пароль Posgresql>
- HOST_ML = <Хост Posgresql>
- PORT_ML = <Порт Posgresql>
- BD_ML = <Название БД Posgresql>
Предназначен для обработки и предобработки данных перед анализом и обучением моделей машинного обучения.
- get_duplicated_df: Поиск и обработка дубликатов
- features_separate: Разделяет признаки на категориальные и числовые на основе порога уникальных значений
- get_stratified_df: Добавляет в датафрейм стратификационные группы по квартилям указанного признака
- df_scaling: Масштабирует числовые данные с использованием StandardScaler, MinMaxScaler, Normalizer, RobustScaler
- drop_outliers_iso: Удаляет выбросы из данных с использованием метода IsolationForest
- drop_outliers_tuk: Удаляет выбросы по методу Тьюки (IQR)
- get_pca: Преобразует группы признаков с использованием PCA и добавляет результат в датафрейм
- get_VIF: Вычисляет коэффициент инфляции дисперсии (VIF) для анализа мультиколлинеарности
- plot_corrmatrix: Строит корреляционную матрицу и вычисляет ее ранг и детерминант
- get_polyfeatures: Генерирует полиномиальные признаки
- df_target_encoding: Выполняет целевое кодирование категориальных признаков с использованием TargetEncoder
Предназначен для отбора значимых признаков в наборах данных
- get_selected_features: Выполняет отбор признаков с использованием RFE или SFS, возвращая новый набор данных с выбранными переменными.
- get_best_n_features: Оптимизирует количество признаков с помощью Optuna, проводя кросс-валидацию и выбирая наилучший набор переменных.
- save_selected_features: Выполняет отбор признаков для нескольких датасетов и моделей, сохраняя результаты
Предназначен для обучения моделей машинного обучения, оценки их качества и анализа важности признаков.
- get_feature_importance_df: Возвращает таблицу важности признаков для обученной модели
- get_importances_barplot: Строит график важности признаков, используя коэффициенты модели и SHAP-значения.
- get_feat_importance_arima: Анализирует важность признаков в модели SARIMAX
- get_feature_contrib: Анализирует вклад признаков в предсказания линейных моделей
- plot_ts_pred: Строит график предсказанных и фактических значений для временных рядов.
- get_prediction: Возвращает датафрейм с метриками качества модели и массив предсказаний.
- train_cv: Обучает модель с использованием различных схем кросс-валидации (KFold, LeaveOneOut, StratifiedKFold, TimeSeriesSplit)
- arima_train: Автоматический подбор параметров и обучение SARIMAX модели для временных рядов.
- arima_predict: Выполняет предсказание временного ряда с использованием обученной модели SARIMAX.
Предназначен для оптимизации гиперпараметров моделей машинного обучения с использованием Optuna.
- get_optimize_params: Выполняет подбор оптимальных гиперпараметров модели с использованием Optuna.
- get_optimize_results: Запускает полный процесс оптимизации и последующего обучения модели с лучшими параметрами. Возвращает обученную модель, метрики и предсказания.
- get_optimize_several_results: Оптимизирует несколько моделей на различных датасетах, сохраняя результаты.
- get_best_study_params: Определяет лучшие гиперпараметры, отфильтровывая результаты по заданным критериям
- optuna_plot: Визуализирует Pareto-графики, важность параметров и зависимость метрик от гиперпараметров.
- mlflow_save_results: Логирует метрики и обученные модели в MLflow
- get_prediction_df: Создает итоговый датафрейм с предсказаниями и ошибками модели
Предназначен для управления гиперпараметрами моделей, используемых в процессе обучения и оптимизации. Служит справочником параметров, которые можно изменять и передавать в model_tune для автоматической оптимизации.
-
Класс ModelsParams: Хранит параметры моделей для оптимизации, включая диапазоны значений и базовые параметры. Поддерживаемые модели:
- K-Nearest Neighbors (KNN)
- Lasso, Ridge, ElasticNet
- Huber Regressor
- Stochastic Gradient Descent (SGD)
- Support Vector Regressor (SVR)
- Decision Trees (DT)
- Random Forest (RF)
- Extra Trees (EXTR)
- XGBoost (XGB)
- LightGBM (LGBM)
- Stacking Regressor
- Bayesian Ridge
- Tweedie Regressor
- Theil-Sen Regressor
- ARD Regression
- Passive Aggressive Regressor (PAR)
-
set_param: Позволяет изменять параметры модели перед их передачей в model_tune
Предназначен для проведения статистических тестов и анализа данных.
- plot_test_hists: Строит гистограммы для двух выборок, позволяя визуально сравнить их распределения.
- kolmog_smirn_test: Тест Колмогорова-Смирнова – проверяет, принадлежат ли две выборки одному распределению.
- kraskel_wallis_test: Тест Краскела-Уоллиса – анализирует статистически значимые различия между независимыми выборками.
- adfuller_test: Тест Дики-Фуллера (ADF) – проверяет временной ряд на стационарность.
- kpss_test: KPSS-тест – альтернатива ADF для проверки стационарности временного ряда.
- stationarity_test: Объединяет результаты ADF и KPSS, предоставляя комплексную оценку стационарности.
- acf_pacf_plot: Строит автокорреляционную функцию (ACF) и частичную автокорреляционную функцию (PACF).
Предназначен для работы с файлами и данными, включая сохранение и загрузку файлов в различных форматах (pickle, json), управление сервером MLflow, а также очистку логов в PostgreSQL.
- save_data: Сохраняет данные (словарь с объектами) в указанную директорию в форматах pkl или json.
- load_data: Загружает данные из указанной директории в форматах pkl или json.
- mlflow_server_start: Запускает сервер MLflow для логирования экспериментов
- mlflow_run_delete: Удаляет логи MLflow из базы данных PostgreSQL
-
data_proc_test.ipynb: Тестирование функций предобработки данных, включая обнаружение выбросов, масштабирование, кодирование категориальных признаков и анализ корреляции.
- data_proc
- stat_tests
- utils_io
-
data_ts_test.ipynb: Анализ и обработка временных рядов, включая разложение сезонности, обучение моделей и оценку качества прогнозирования
- model_train
-
feature_contribution.ipynb: Анализ вклада признаков в предсказания моделей с использованием методов интерпретируемости, таких как коэффициенты линейных моделей и SHAP-значения.
- model_train
-
feature_select_test.ipynb: Проверка методов отбора признаков
- feature_select
- utils_io
-
model_tune_test.ipynb: Оптимизация гиперпараметров моделей с использованием Optuna, оценка качества моделей и сохранение лучших конфигураций.
- model_tune
- model_tune_params
- model_train
- utils_io
-
training_test.ipynb: Проверка функций обучения моделей, расчета метрик и визуализации предсказаний.
- model_train
- utils_io