Постановка задачи

У нас есть компания по финансированию жилищного строительства, и мы хотим автоматизировать процесс получения кредита на основе сведений о клиенте, предоставленных при заполнении онлайн-заявки.

О наборе данных

Loan_ID: уникальный идентификатор займа.

Пол: мужской/женский

Женаты: заявитель женат (да/нет)

Иждивенцы: количество иждивенцев

Образование: образование кандидата (высшее/неполное высшее)

Self_Employed: работающий не по найму (да/нет)

Доход заявителя: доход заявителя.

Доход созаявителя: доход созаявителя.

LoanAmount: сумма кредита в тысячах.

Loan_Amount_Term: срок кредита в месяцах.

Credit_History: кредитная история соответствует требованиям.

Область_недвижимости: городская/полугородская/сельская местность

Статус_кредита: (выходная переменная) Кредит одобрен (Да/Нет)

Импортируйте необходимые библиотеки

Загрузите и проверьте форму данных

Предварительная обработка данных

1.1 Анализ категориальной независимой переменной и целевой переменной

  1. Доля женатых заявителей выше для одобренных кредитов.
  2. Распределение заявителей с 1 или 3+ иждивенцами одинаково по обеим категориям Loan_Status.
  3. Из графика Self_Employed vs Loan_Status мы не можем сделать никаких существенных выводов.
  4. Кажется, что люди с кредитной историей 1, скорее всего, одобрят свои кредиты.
  5. Доля одобренных кредитов в полугородской местности выше, чем в сельской или городской местности.

1.2 Удалить второстепенные переменные

Столбец Loan_ID содержит порядковый номер Заявителя, который является избыточным для дальнейшего анализа. Таким образом, мы опускаем столбец.

1.3 Обработка отсутствующих значений

У нас есть нулевые значения в нескольких переменных. Мы увидим количество значений переменных и решим, как лучше заполнить нулевые значения.

Глядя на переменную Loan_Amount_Term, которая является числовой переменной, значение 360 повторяется чаще всего. Итак, мы заменим отсутствующие значения в этой переменной, используя режим этой переменной

Глядя на переменную Сумма ссуды, мы будем использовать медиану для заполнения нулевых значений, поскольку мы видим, что сумма ссуды имеет выбросы, поэтому среднее значение не будет правильным подходом, поскольку на него сильно влияет наличие выбросов.

1.4 Обработка выбросов

Переменные не имеют нормального распределения

Из-за этих выбросов большая часть данных в сумме кредита находится слева, а правый хвост длиннее. Это называется правильная асимметрия. Один из способов устранить асимметрию — выполнить логарифмическое преобразование. Когда мы используем логарифмическое преобразование, оно не сильно влияет на меньшие значения, но уменьшает большие значения. Итак, мы получаем распределение, похожее на нормальное распределение. Давайте визуализируем эффект преобразования журнала.

Сделано предположение, что у некоторых людей может быть низкий доход, но сильный доход CoappliantIncome, поэтому хорошей идеей будет объединить их в столбце TotalIncome. И удаление переменной coapplicantIncome

1.5 Кодирование категориальных переменных

1.6 Корреляция между всеми числовыми переменными

Мы видим, что наиболее коррелирующими переменными являются ApplicantIncome — LoanAmount и Credit_History — Loan_Status.

Создайте обобщенную функцию, чтобы построить кривую ROC для тестового набора.

Создайте входные и целевые переменные

1.7 Распределение зависимой переменной

Из графика видно, что данные несбалансированы. Мы будем использовать SMOTE для избыточной выборки.

SMOTE для балансировки данных

Поезд-тестовый сплит

Логистическая регрессия

Построить полную логистическую модель на обучающем наборе данных

Интерпретация. Используя логистическую регрессию, мы получаем точность 72%.

K Ближайшие соседи (KNN)

Создайте модель knn на обучающем наборе данных, используя евклидово расстояние

Интерпретация. Используя логистическую регрессию, мы получаем точность 78%.

Вывод

Интерпретация: из результата видно, что модель KNN дает лучшую точность и показатель AUC по сравнению с другими моделями. Мы можем использовать KNN для развертывания.