Reference¶
-
class
risksutils.visualization.
InteractiveIsotonic
(data, pdims, tdims, ddims=None, gdims=None, calibrations_data=None)[исходный код]¶ Интерактивная визуализация точности прогноза вероятности
Аргументы
- data : pandas.DataFrame
- таблица с данными
- pdims : list
- список названий столбцов с предсказаниями
- tdims : list
- список названий столбцов с целевыми переменными
- ddims : list
- список названий столбцов с датами
- gdims : list
- список названий столбцов с категориальными полями
- calibrations_data : pandas.DataFrame
таблица содержащая калибровки прогноза в целевые переменных tdims должна содержать столбец c именем predict
tdims = ['t1', 't2'] calibrations_data = pd.DataFrame({ 'predict': [0, 0.3, 0.6], 't1': [0, 0.1, 0.2], 't2': [0, 0.4, 0.8] })
если аргумент задан, то на диаграммах isotonic будут присутствовать графики калибровок
Результат
- diagram
объект с набором связанных интерактивных диаграмм
- isotonic : hv.DynamicMap
- зависимость частоты наступления события от прогноза. Содержит виджеты для каждого выбора прогноза (pdims) и для выбора целевой переменной (tdims)
обращаться к диаграммам нужно, как к атрибутам
diagram.isotonic
доступны диаграммы для категориальных полей, указанных в gdims, и для временных, указанных в ddims обращаться к ним можно по имени, например
ddims = ['request_dt', 'response_dt'] diagram.request_dt diagram.response_dt
на данных диаграммах можно указать подвыборку, с помощью виджетов диаграмм bokeh, тогда пересчитаются и все оставшиеся диаграммы
-
risksutils.visualization.
cross_tab
(df, feature1, feature2, target, num_buck1=10, num_buck2=10, min_sample=100, compute_iv=False)[исходный код]¶ Кросстабуляция пары признаков и бинарной целевой переменной
Аргументы
- df : pandas.DataFrame
- таблица с данными
- feature1 : str
- название признака 1
- feature2 : str
- название признака 2
- target : str
- название целевой переменной
- num_buck1 : int
- количество бакетов для признака 1
- num_buck2 : int
- количество бакетов для признака 2
- min_sample : int
- минимальное количество наблюдений для отображение доли целевой переменной в ячейке
- compute_iv : bool
- нужно ли рассчитывать information value для признаков
Результат
(rates, counts) : (pandas.Styler, pandas.Styler)
-
risksutils.visualization.
distribution
(df, feature, date, num_buck=10, date_freq='MS')[исходный код]¶ График изменения распределения признака по времени
Аргументы
- df : pandas.DataFrame
- таблица с данными
- feature : str
- название признака
- date : str
- название поля со временем
- num_buck : int
- количество бакетов
- date_ferq : str
- Тип агрегации времени (по умолчанию „MS“ - начало месяца)
Результат
spreads : holoviews.NdOverlay
-
risksutils.visualization.
isotonic
(df, predict, target, calibrations_data=None)[исходный код]¶ Визуализация точности прогноза вероятности
Аргументы
- df : pandas.DataFrame
- таблица с данными
- predict : str
- прогнозная вероятность
- target : str
- бинарная (0, 1) целевая переменная
- calibrations_data : pandas.DataFrame
- таблица с калибровками
Результат
area * curve * [curve] : holoviews.Overlay
-
risksutils.visualization.
woe_line
(df, feature, target, num_buck=10)[исходный код]¶ График зависимости WoE от признака
Аргументы
- df : pandas.DataFrame
- таблица с данными
- feature : str
- название признака
- target : str
- название целевой переменной
- num_buck : int
- количество бакетов
Результат
scatter * errors * line : holoviews.Overlay
-
risksutils.visualization.
woe_stab
(df, feature, target, date, num_buck=10, date_freq='MS')[исходный код]¶ График стабильности WoE признака по времени
Аргументы
- df : pandas.DataFrame
- таблица с данными
- feature : str
- название признака
- target : str
- название целевой переменной
- date : str
- название поля со временем
- num_buck : int
- количество бакетов
- date_ferq : str
- Тип агрегации времени (по умолчанию „MS“ - начало месяца)
Результат
curves * spreads : holoviews.Overlay
-
risksutils.metrics.
information_value
(df, feature, target, num_buck=10)[исходный код]¶ information value признака с целевой переменной target
Аргументы
- df : pandas.DataFrame
- таблица с данными
- feature : str
- признак
- target : str
- целевая переменная
- num_buck : numeric
- количество бакетов
Результат
information value : float
Пример использования
>>> import pandas as pd >>> df = pd.DataFrame({'foo': [1, 1, 1, np.nan, np.nan], ... 'bar': [0, 0, 1, 0, 1]}) >>> information_value(df, 'foo', 'bar') 0.11552453009332433
-
risksutils.metrics.
information_value_binormal
(auc)[исходный код]¶ information value из бинормального приближения через AUC
Аргументы
- AUC : float
- Area Under Roc Curve
Результат
information value : float
Пример использования
>>> information_value_binormal(0.5) 0.0
-
risksutils.metrics.
stability_index
(df, feature, date, num_buck=10, date_freq='MS')[исходный код]¶ Stability index для всех последовательных пар дат
Аргументы
- df : pandas.DataFrame
- таблица с данными
- feature : str
- признак
- date : str
- название поля со временем
- num_buck : numeric
- количество бакетов
- date_ferq : str
- Тип агрегации времени (по умолчанию „MS“ - начало месяца)
Результат
pd.Series
Пример использования
>>> df = pd.DataFrame({ ... 'dt': pd.Series(['2000-01-01', '2000-01-01', '2000-01-01', ... '2000-02-01', '2000-02-02', '2000-02-01', ... '2000-04-02', '2000-04-03'], ... dtype='datetime64[ns]'), ... 'foo': ['a', 'a', np.nan, 'a', 'b', 'b', 'a', 'b'] ... }) >>> stability_index(df, 'foo', 'dt') dt 2000-02-01 6.489979 2000-04-01 0.115525 Name: si, dtype: float64
-
risksutils.models.
recalibration
(df, features, target, target_calibration=None, calibrations_data=None, offset=None, use_bias=True)[исходный код]¶ Построение логистической регрессии с калибровкой
Обычная лог регрессия строится зависимость прогноза вероятности от линейной комбинации признаков в виде:
prob = 1 / (1 + exp(- logit))
В данной функции есть возможность добавить кусочно линейное преобразование в конце - calibration:
prob = calibration(1 / (1 + exp(- logit)))
При обучении линейной комбинации признаков для расчета logit можно добавить к ним снос (offset), который не будет обучаться
Аргументы
- df : pandas.DataFrame
- таблица с данными
- features : list или str
набор признаков в виде списка название полей, например
['f0', 'f1', 'f2', 'f3']
или описание столбцов в виде patsy формулы, например
'f0 + f1 + C(f2) + I(np.log(f3))'
в данном случае f2 - будет категориальным признаком, а от f3 будет взят логарифм
- target : str
- название целевой переменной
- target_calibration : str
- название целевой переменной в которую нужно будет калибровать формулу
- calibrations_data : pandas.DataFrame
- таблица с соотношением калибровок вероятностей должна содержать столбцы target_calibration и target
- offset : str
- название поля для сноса
- use_bias : bool
- нужно ли обучать константу
Результат
- model : statmodels.model
для просмотра результатов нужно выполнить
model.summary()
коэффициенты доступны
model.params