KS и PSI: добавьте флаги алертов в pandas DataFrame

В таблице мониторинга уже рассчитаны показатели дрейфа для каждого признака. Реализуйте solve(payload), которая добавит флаги по правилам условия и обработает отсутствующие значения. Разбор подготовки данных, оценки и деплоя моделей продолжайте в платном курсе «Data Scientist: от данных до деплоя моделей» — откройте программу.

Агрегация drift-метрик с флагами превышения порогов

В промышленном мониторинге метрик drift для признаков часто требуется не только считать числовые показатели (KS p-value, PSI), но и формировать сводный DataFrame с дополнительной информацией, указывающей, какие значения превышают заданные пороги.

Ваша задача — реализовать функцию, которая принимает DataFrame с результатами вычисления KS-теста и PSI по признакам и возвращает DataFrame, где к исходным данным добавлены два булевых столбца:

  • ks_alert — True, если p-value KS-теста меньше 0.05 (иначе False);
  • psi_alert — True, если PSI больше 0.2 (иначе False).

Если в исходных данных для метрик встречаются пропуски (NaN), то соответствующий флаг ставится в False.

Входные данные:

  • df_metrics — pandas DataFrame, индекс — имена признаков;
  • колонки:
    • ks_pvalue (float или NaN)
    • psi (float или NaN)

Выходные данные:

  • pandas DataFrame, расширенный двумя колонками ks_alert и psi_alert с булевыми значениями.

Example test


import pandas as pd
import numpy as np

df_metrics = pd.DataFrame({
    'ks_pvalue': [0.04, 0.06, np.nan, 0.03],
    'psi': [0.15, 0.22, 0.05, np.nan]
}, index=['feat1', 'feat2', 'feat3', 'feat4'])

# Ожидаемый результат:
#          ks_pvalue   psi  ks_alert  psi_alert
# feat1        0.04  0.15      True      False
# feat2        0.06  0.22     False       True
# feat3         NaN  0.05     False      False
# feat4        0.03   NaN      True      False

РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи