Риски пропущенных данных в кредитных данных

Моделирование кредитного риска на Python

Michael Crabtree

Data Scientist, Ford Motor Company

Что такое пропущенные данные?

  • NULL вместо реального значения в строке
  • Пустая строка ''
  • Строка не является полностью пустой
  • Может встречаться в любом столбце

Пример фрейма данных с пропущенной длиной стажа

Моделирование кредитного риска на Python

Сходство с выбросами

  • Негативно влияют на качество модели машинного обучения
  • Могут вносить непредвиденные смещения в модели
  • Могут вызывать ошибки в некоторых моделях машинного обучения
Моделирование кредитного риска на Python

Сходство с выбросами

  • Негативно влияют на качество модели машинного обучения
  • Могут вносить непредвиденные смещения в модели
  • Могут вызывать ошибки в некоторых моделях машинного обучения
Тип пропущенных данных Возможный результат
NULL в числовом столбце Ошибка
NULL в строковом столбце Ошибка
Моделирование кредитного риска на Python

Как работать с пропущенными данными

  • Существует три основных способа работы с пропущенными данными
    • Заменить пропущенные значения
    • Удалить строки с пропущенными данными
    • Оставить строки с пропущенными данными без изменений
  • Выбор действия определяется пониманием данных
Моделирование кредитного риска на Python

Как работать с пропущенными данными

  • Существует три основных способа работы с пропущенными данными
    • Заменить пропущенные значения
    • Удалить строки с пропущенными данными
    • Оставить строки с пропущенными данными без изменений
  • Выбор действия определяется пониманием данных
Пропущенные данные Интерпретация Действие
NULL в loan_status Кредит недавно одобрен Удалить из данных для предсказания
NULL в person_age Возраст не указан или не раскрыт Заменить медианой
Моделирование кредитного риска на Python

Поиск пропущенных данных

  • Нулевые значения легко найти с помощью функции isnull()
  • Подсчитать их количество можно функцией sum()
  • Метод .any() проверяет все столбцы
null_columns = cr_loan.columns[cr_loan.isnull().any()]
cr_loan[null_columns].isnull().sum()
# Total number of null values per column
person_home_ownership          25
person_emp_length             895
loan_intent                    25
loan_int_rate                3140
cb_person_default_on_file      15
Моделирование кредитного риска на Python

Замена пропущенных данных

  • Замените пропущенные данные с помощью метода .fillna() и агрегирующих функций
cr_loan['loan_int_rate'].fillna((cr_loan['loan_int_rate'].mean()), inplace = True)

Пример замены пропущенной процентной ставки средним значением

Моделирование кредитного риска на Python

Удаление пропущенных данных

  • Для идентификации записей используются индексы — так же, как при работе с выбросами
  • Удалить записи полностью позволяет метод .drop()
indices = cr_loan[cr_loan['person_emp_length'].isnull()].index
cr_loan.drop(indices, inplace=True)
Моделирование кредитного риска на Python

Давайте потренируемся!

Моделирование кредитного риска на Python

Preparing Video For Download...