Параметры логистической регрессии питон

Как выполнить логистическую регрессию в Python (шаг за шагом)

Как выполнить логистическую регрессию в Python (шаг за шагом)

Логистическая регрессия — это метод, который мы можем использовать для подбора модели регрессии, когда переменная ответа является двоичной.

Логистическая регрессия использует метод, известный как оценка максимального правдоподобия, чтобы найти уравнение следующего вида:

log[p(X) / (1-p(X))] = β 0 + β 1 X 1 + β 2 X 2 + … + β p X p

  • X j : j -я предикторная переменная
  • β j : Оценка коэффициента для j -й переменной-предиктора

Формула в правой части уравнения предсказывает логарифмические шансы переменной ответа, принимающей значение 1.

Таким образом, когда мы подбираем модель логистической регрессии, мы можем использовать следующее уравнение для расчета вероятности того, что данное наблюдение примет значение 1:

p(X) = e β 0 + β 1 X 1 + β 2 X 2 + … + β p X p / (1 + e β 0 + β 1 X 1 + β 2 X 2 + … + β p X p )

Затем мы используем некоторый порог вероятности, чтобы классифицировать наблюдение как 1 или 0.

Например, мы можем сказать, что наблюдения с вероятностью больше или равной 0,5 будут классифицироваться как «1», а все остальные наблюдения будут классифицироваться как «0».

В этом руководстве представлен пошаговый пример выполнения логистической регрессии в R.

Шаг 1: Импортируйте необходимые пакеты

Во-первых, мы импортируем необходимые пакеты для выполнения логистической регрессии в Python:

import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn import metrics import matplotlib.pyplot as plt 

Шаг 2: Загрузите данные

В этом примере мы будем использовать набор данных по умолчанию из книги Introduction to Statistical Learning.Мы можем использовать следующий код для загрузки и просмотра сводки набора данных:

#import dataset from CSV file on Github url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv" data = pd.read_csv (url) #view first six rows of dataset data[0:6] default student balance income 0 0 0 729.526495 44361.625074 1 0 1 817.180407 12106.134700 2 0 0 1073.549164 31767.138947 3 0 0 529.250605 35704.493935 4 0 0 785.655883 38463.495879 5 0 1 919.588530 7491.558572 #find total observations in dataset len(data. index ) 10000 

Этот набор данных содержит следующую информацию о 10 000 человек:

  • по умолчанию: указывает, нарушил ли индивидуум дефолт.
  • студент: Указывает, является ли человек студентом.
  • баланс: средний баланс, который несет физическое лицо.
  • доход: Доход физического лица.
Читайте также:  Удаление последнего элемента строки питон

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

Шаг 3. Создайте обучающую и тестовую выборки

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

#define the predictor variables and the response variable X = data[['student', 'balance', 'income']] y = data['default'] #split the dataset into training (70%) and testing (30%) sets X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.3,random_state=0) 

Шаг 4: Подберите модель логистической регрессии

Далее мы будем использовать функцию LogisticRegression() , чтобы подогнать модель логистической регрессии к набору данных:

#instantiate the model log_regression = LogisticRegression() #fit the model using the training data log_regression. fit (X_train,y_train) #use model to make predictions on test data y_pred = log_regression. predict (X_test) 

Шаг 5: Диагностика модели

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

Во-первых, мы создадим матрицу путаницы для модели:

cnf_matrix = metrics. confusion_matrix (y_test, y_pred) cnf_matrix array([[2886, 1], [ 113, 0]]) 

Из матрицы путаницы мы видим, что:

Истинно положительных предсказаний: 2886

Истинно отрицательные прогнозы: 0

Ложноположительные прогнозы: 113

Ложноотрицательные прогнозы: 1

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

print(" Accuracy:",metrics. accuracy_score (y_test, y_pred))l Accuracy: 0.962 

Это говорит нам о том, что модель сделала правильный прогноз относительно того, будет ли человек не выполнять свои обязательства в 96,2% случаев.

Наконец, мы можем построить кривую ROC (рабочая характеристика приемника), которая отображает процент истинных положительных результатов, предсказанных моделью, поскольку отсечка вероятности прогнозирования снижается с 1 до 0.

Чем выше AUC (площадь под кривой), тем точнее наша модель может предсказывать результаты:

Читайте также:  Doing tabs in html

Кривая ROC в Python

#define metrics y_pred_proba = log_regression. predict_proba (X_test)[. 1] fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba) auc = metrics. roc_auc_score (y_test, y_pred_proba) #create ROC curve plt.plot (fpr,tpr,label=» AUC kg-card kg-image-card»>

Полный код Python, использованный в этом руководстве, можно найти здесь .

Источник

Оцените статью