Набор данных об одобрении кредита с GitHub — классификация с использованием различных моделей.

Что такое машинное обучение?

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

Машинное обучение (ML) — это категория алгоритма, который позволяет программным приложениям более точно прогнозировать результаты без явного программирования. Основная предпосылка машинного обучения заключается в создании алгоритмов, которые могут получать входные данные и использовать статистический анализ для прогнозирования выходных данных при обновлении выходных данных по мере появления новых данных.

Типы машинного обучения?

Машинное обучение можно разделить на 3 типа алгоритмов.

  1. Контролируемое обучение
  2. Неконтролируемое обучение
  3. Обучение с подкреплением

Обзор алгоритма контролируемого обучения

В контролируемом обучении система ИИ представлена ​​данными, которые помечены, что означает, что все данные помечены правильной меткой.

Цель состоит в том, чтобы аппроксимировать функцию отображения настолько хорошо, чтобы, когда у вас есть новые входные данные (x), вы могли предсказать выходные переменные (Y) для этих данных.

Как показано в приведенном выше примере, мы изначально взяли некоторые данные и пометили их как «Спам» или «Не спам». Эти помеченные данные используются моделью обучения под наблюдением, эти данные используются для обучения модели.

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

Типы контролируемого обучения

  • Классификация. Проблема классификации возникает, когда выходной переменной является категория, например «красный» или «синий», или «заболевание» и «отсутствие заболевания».
  • Регрессия. Проблема регрессии возникает, когда выходная переменная представляет собой реальное значение, например «доллары» или «вес».

Обзор алгоритма обучения без учителя

При неконтролируемом обучении система ИИ представлена ​​немаркированными, некатегоризированными данными, и алгоритмы системы воздействуют на данные без предварительного обучения. Результат зависит от закодированных алгоритмов. Подвергнуть систему неконтролируемому обучению — один из способов тестирования ИИ.

Пример обучения без учителя

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

Типы неконтролируемого обучения

  • Кластеризация. Проблема кластеризации заключается в том, что вы хотите выявить присущие данным группировки, например группировать клиентов по покупательскому поведению.
  • Ассоциация. Проблема изучения правила ассоциации возникает, когда вы хотите обнаружить правила, описывающие большие части ваших данных, например, люди, которые покупают X, также склонны покупать Y.

Обзор обучения с подкреплением

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

Пример обучения с подкреплением

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

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

Введение нашей проблемы

В финансах ссуда — это ссуда денег одним или несколькими лицами, организациями или другими организациями другим лицам, организациям и т. д. Получатель (т. е. заемщик) берет на себя долг , и обычно обязан выплачивать проценты по этому долгу до тех пор, пока он не будет погашен, а также выплачивать основную сумму займа. Чтобы узнать больше, посетите Википедию. Весь процесс выяснения, будет ли землекоп выплачивать ссуды, может быть утомительным, поэтому необходимо автоматизировать процедуру.

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

Источник набора данных.Набор данных для этого проекта получен из GitHub, дома науки о данных.

Существующая проблема:основная цель этого проекта — предсказать, кому из клиентов будет выплачен кредит, а кому нет. Следовательно, это задача классификации с учителем, которую нужно обучать с помощью таких алгоритмов, как:

  1. Логистическая регрессия
  2. Древо решений
  3. Случайный лес

Примечание. Классификатор машинного обучения, который можно использовать, не ограничивается вышеупомянутым. Другие модели, такие как XGBoost, CatBoost и им подобные, могут применяться при обучении модели. Выбор этих трех алгоритмов обусловлен желанием сохранить поясняющую модель, а также небольшим набором данных.

Отказ от ответственности:

  1. В этом проекте используются значения гиперпараметров по умолчанию.
  2. Помимо того, что описано в этом посте, можно сделать больше визуализации.
  3. Предоставленный набор данных для обучения находится в центре внимания, потому что мы не отправляем его на kaggle для оценки. Следовательно, мы разделили поезд на проверочный набор, чтобы оценить наши оценки.

В этой таблице показаны имена переменных и их соответствующие описания.

В настоящее время! Приступим к работе с набором данных (очистка данных)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

Считайте данные и проверьте форму. Ой! он имеет 614 строк и 13 столбцов. Это 12 функций

Отсутствующие значения. Проверьте, где есть отсутствующие значения, и исправьте их соответствующим образом.

total = df_train.isnull().sum().sort_values(ascending=False)
percent = (df_train.isnull().sum()/df_train.isnull().count()).sort_values(ascending=False)
missing_data = pd.concat([total, percent], axis=1, keys=[‘Total’, ‘Percent’])
missing_data.head(20)

Переменные: Credit_History, Self_Employed, Сумма кредита, Иждивенцы, Loan_Amount_Term, Пол и Женат имеют отсутствующие значения

Заполните пропущенные значения

df_train[‘Gender’] = df_train[‘Gender’].fillna(
df_train[‘Gender’].dropna().mode().values[0] )
df_train[‘Married’] = df_train[‘Married’].fillna(
df_train[‘Married’].dropna().mode().values[0] )
df_train[‘Dependents’] = df_train[‘Dependents’].fillna(
df_train[‘Dependents’].dropna().mode().values[0] )
df_train[‘Self_Employed’] = df_train[‘Self_Employed’].fillna(
df_train[‘Self_Employed’].dropna().mode().values[0] )
df_train[‘LoanAmount’] = df_train[‘LoanAmount’].fillna(
df_train[‘LoanAmount’].dropna().median() )
df_train[‘Loan_Amount_Term’] = df_train[‘Loan_Amount_Term’].fillna(
df_train[‘Loan_Amount_Term’].dropna().mode().values[0] )
df_train[‘Credit_History’] = df_train[‘Credit_History’].fillna(
df_train[‘Credit_History’].dropna().mode().values[0] )

Да! Пропущенные значения искусно обработаны

Исследовательский анализ данных: мы хотим показать силу визуализации

Больше мужчин в аренде, чем женщин. Кроме того, те, что в кредит, больше, чем в противном случае

Женатые люди получают больше кредита, чем неженатые

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

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

Полугородские получают больше кредита, за ними следуют городские, а затем сельские. Это логично!

Чрезвычайно большое количество из них идет на срок 360 циклов кредита. Это окупится в течение года

Мужчины, как правило, имеют самый высокий доход. Очевидно, что мужчины, состоящие в браке, имеют больший доход, чем неженатые мужчины. Разумный!

Выпускник-мужчина имеет больший доход

Выпускник и женатый человек имеют больший доход

Выпускник, но не самозанятый имеет больший доход

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

Никто не является иждивенцем, а самозанятые имеют больший доход

Никто не зависит, а мужчина имеет гораздо больший доход

Выпускник, у которого нет иждивенца, имеет больший доход

Никто не зависит и имеет собственность в городской, сельской и полугородской имеет больший доход

Женат и имеет хорошую кредитную историю показывает больший доход. Также в иерархии следует неженатый, но с хорошей кредитной историей.

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

Кодирование числовых данных; готовимся к тренировке

code_numeric = {‘Male’: 1, ‘Female’: 2,
‘Yes’: 1, ‘No’: 2,
‘Graduate’: 1, ‘Not Graduate’: 2,
‘Urban’: 3, ‘Semiurban’: 2,’Rural’: 1,
‘Y’: 1, ’N’: 0,
‘3+’: 3}

df_train = df_train.applymap(lambda s: code_numeric.get(s) if s in code_numeric else s)
df_test = df_test.applymap(lambda s: code_numeric.get(s) if s in code_numeric else s)

#drop the uniques loan id
df_train.drop(‘Loan_ID’, axis = 1, inplace = True)

Ой! необходимо преобразовать функцию «Зависимые» в числовую, используя pd.to_numeric

Dependents_ = pd.to_numeric(df_train.Dependents)
Dependents__ = pd.to_numeric(df_test.Dependents)

df_train.drop([‘Dependents’], axis = 1, inplace = True)
df_test.drop([‘Dependents’], axis = 1, inplace = True)

df_train = pd.concat([df_train, Dependents_], axis = 1)
df_test = pd.concat([df_test, Dependents__], axis = 1)

Да! преобразовано успешно

Тепловая карта: отображение корреляций функций с целью. Никакие корреляции не являются чрезвычайно высокими. Корреляции между LoanAmount и ApplicantIncome можно объяснить.

Отделение цели от функции для обучения

y = df_train[‘Loan_Status’]
X = df_train.drop(‘Loan_Status’, axis = 1)

from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=0)

Использование логистической регрессии

model = LogisticRegression()

model.fit(X_train, y_train)

ypred = model.predict(X_test)

evaluation = f1_score(y_test, ypred)
evaluation

Заключение

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

Резюме

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