Python Реализация двоичного классификатора для прогнозирования кредитных решений.

В рамках моих постоянных усилий по улучшению своих навыков в области науки о данных я создаю модели машинного обучения на основе случайных наборов данных из репозитория машинного обучения UCI. Вы можете просмотреть мои предыдущие модели здесь.

В этом задании случайным набором данных, который необходимо решить, является Австралийский набор данных об одобрении кредита. Если вы хотите продолжить или попробовать набор данных самостоятельно, вы можете загрузить версию CSV, которую я уже очистил.

Одна из дополнительных задач этих случайных задач включает форматирование необработанных данных в полезные форматы CSV. Поэтому я оставлю ссылки и на очищенные наборы данных, которые размещены на моем GitHub.

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

Набор данных состоит из 14 переменных характеристик и 1 метки класса, которая количественно определяет решение об утверждении. О самих 14 признаках известно немного в целях конфиденциальности и удобства обработки статистических алгоритмов.

Это означает, что даже имен признаков нет, но известно, являются ли они непрерывными или категориальными. Я аналогичным образом пометил, какие столбцы являются непрерывными (N), категориальными (C) и требуют ли они дальнейшего кодирования (C_enc) в наборе данных.

Построить модель бинарной классификации, чтобы предсказать, был ли кредит одобрен для конкретного клиента или отклонен, очень просто.

Это включает в себя:

Предварительная обработка данных: одно горячее кодирование и стандартизация

Создание классификатора + оценка производительности модели:

Гистограммы каждого столбца для просмотра разделимости классов:

Приведенный ниже код строит гистограмму с каждой независимой переменной и меткой класса. Это делается для того, чтобы определить, насколько хорошо каждая отдельная переменная может объяснить разделение классов.

Как видно, почти все переменные сами по себе не учитывают решение об утверждении. Это означает, что целевая переменная зависит от нелинейной комбинации всех переменных. Ниже приведен код для реализации того же самого.

Показатели и график принятия решений:

Вот точность, среднее значение 10-кратной перекрестной проверки точности и стандартное отклонение модели при оценке на тестовом наборе.

Кроме того, вот как построить график подсчета решений с Seaborn. Этот график помогает визуализировать с одного взгляда, сколько отказов и одобрений было получено. Сначала вам нужно будет создать отдельный фрейм данных для построения графика.

pred = list()
reject_count = approved_count = 0
for i in range(len(y_pred)):
    if y_pred[i] == 0:
        pred.append('Rejections')
    else:
        pred.append('Approvals')
pred = pd.DataFrame(pred)
pred.columns = ['Decisions']
# Visualization of Decision Counts
plt.Figure(figsize = (8, 8))
sb.set_style('darkgrid')
sb.countplot(pred['Decisions'], data = pred, edgecolor = 'black', linewidth=1.5, palette = 'dark')
plt.title('Predicted Credit Approvals')
plt.xlabel('Approval Decision')
plt.ylabel('Count')
plt.show()

Ну это все. Хотя это простой алгоритм и модель имеет хорошую точность 89%, вы можете видеть, что корреляции между переменными сильно нелинейны.

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

Спасибо за прочтение, хорошего дня и до новых встреч.