Логистическая регрессия с использованием статистических моделей
Предварительное условие: понимание логистической регрессии
Логистическая регрессия - это тип регрессионного анализа, используемый для определения вероятности наступления определенного события. Этот тип регрессии лучше всего подходит для случаев, когда у нас есть категориальная зависимая переменная, которая может принимать только дискретные значения.
Набор данных:
В этой статье мы предскажем, будет ли студент зачислен в конкретный колледж, на основе его результатов по GMAT, GPA и опыта работы. Зависимая переменная здесь - это двоичная логистическая переменная , которая, как ожидается, может принимать строго одну из двух форм, то есть допустимую или недопустимую .
Построение модели логистической регрессии:
Statsmodels - это модуль Python, который предоставляет различные функции для оценки различных статистических моделей и выполнения статистических тестов.
# importing libraries import statsmodels.api as sm import pandas as pd # loading the training dataset df = pd.read_csv( 'logit_train1.csv' , index_col = 0 ) # defining the dependent and independent variables Xtrain = df[[ 'gmat' , 'gpa' , 'work_experience' ]] ytrain = df[[ 'admitted' ]] # building the model and fitting the data log_reg = sm.Logit(ytrain, Xtrain).fit() |
Выход :
Оптимизация успешно завершена. Текущее значение функции: 0,352707 Итерации 8
В выходных данных « Итерации » относятся к тому, сколько раз модель повторяет данные, пытаясь оптимизировать модель. По умолчанию максимальное количество выполняемых итераций составляет 35, после чего оптимизация не выполняется.
Сводная таблица:
Сводная таблица ниже дает нам подробное описание результатов регрессии.
# printing the summary table print (log_reg.summary()) |
Выход :
Результаты логит-регрессии ================================================== ============================ Деп. Переменная: допущена Нет. Наблюдения: 30 Модель: Logit Df Остатки: 27 Метод: MLE Df Модель: 2 Дата: среда, 15 июля 2020 г. Псевдо-R-squ .: 0.4912 Время: 16:09:17 Лог-Вероятность: -10,581 сходится: True LL-Null: -20.794 Тип ковариации: ненадежный LLR Значение p: 3,668e-05 ================================================== ================================= коэффициент std err z P> | z | [0,025 0,975] -------------------------------------------------- --------------------------------- гмат -0,0262 0,011 -2,383 0,017 -0,048 -0,005 гпа 3,9422 1,964 2,007 0,045 0,092 7,792 work_experience 1,1983 0,482 2,487 0,013 0,254 2,143 ================================================== =================================
Объяснение некоторых терминов в сводной таблице:
- coef: коэффициенты независимых переменных в уравнении регрессии.
- Логарифм правдоподобия: натуральный логарифм функции оценки максимального правдоподобия (MLE). MLE - это процесс оптимизации, заключающийся в нахождении набора параметров, который дает наилучшее соответствие.
- LL-Null: значение логарифма правдоподобия модели, когда не включена независимая переменная (включена только точка пересечения).
- Псевдо R-squ. : замена значения R-квадрата в линейной регрессии методом наименьших квадратов. Это отношение логарифмической вероятности нулевой модели к таковой для полной модели.
Прогнозирование новых данных:
Теперь протестируем нашу модель на новых тестовых данных. Тестовые данные загружаются из этого CSV-файла.
Функция predic () полезна для выполнения прогнозов. Полученные прогнозы представляют собой дробные значения (от 0 до 1), которые обозначают вероятность допуска. Следовательно, эти значения округляются, чтобы получить дискретные значения 1 или 0.
# loading the testing dataset df = pd.read_csv( 'logit_test1.csv' , index_col = 0 ) # defining the dependent and independent variables Xtest = df[[ 'gmat' , 'gpa' , 'work_experience' ]] ytest = df[ 'admitted' ] # performing predictions on the test datdaset yhat = log_reg.predict(Xtest) prediction = list ( map ( round , yhat)) # comparing original and predicted values of y print ( 'Acutal values' , list (ytest.values)) print ( 'Predictions :' , prediction) |
Выход :
Оптимизация успешно завершена. Текущее значение функции: 0,352707 Итерации 8 Фактические значения [0, 0, 0, 0, 0, 1, 1, 0, 1, 1] Прогнозы: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1]
Тестирование точности модели:
from import sklearn.metrics (confusion_matrix, accuracy_score) # confusion matrix cm = confusion_matrix(ytest, prediction) print ( "Confusion Matrix :
" , cm) # accuracy score of the model print ( 'Test accuracy = ' , accuracy_score(ytest, prediction)) |
Выход :
Матрица неточностей: [[6 0] [2 2]] Точность теста = 0,8
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.