Логистическая регрессия с использованием статистических моделей
Предварительное условие: понимание логистической регрессии
Логистическая регрессия - это тип регрессионного анализа, используемый для определения вероятности наступления определенного события. Этот тип регрессии лучше всего подходит для случаев, когда у нас есть категориальная зависимая переменная, которая может принимать только дискретные значения.
Набор данных:
 В этой статье мы предскажем, будет ли студент зачислен в конкретный колледж, на основе его результатов по GMAT, GPA и опыта работы. Зависимая переменная здесь - это двоичная логистическая переменная , которая, как ожидается, может принимать строго одну из двух форм, то есть допустимую или недопустимую .
Построение модели логистической регрессии:
Statsmodels - это модуль Python, который предоставляет различные функции для оценки различных статистических моделей и выполнения статистических тестов.
| # importing librariesimportstatsmodels.api as smimportpandas as pd # loading the training datasetdf=pd.read_csv('logit_train1.csv', index_col=0) # defining the dependent and independent variablesXtrain=df[['gmat','gpa','work_experience']]ytrain=df[['admitted']]  # building the model and fitting the datalog_reg=sm.Logit(ytrain, Xtrain).fit() | 
Выход :
 Оптимизация успешно завершена.
         Текущее значение функции: 0,352707
         Итерации 8В выходных данных « Итерации » относятся к тому, сколько раз модель повторяет данные, пытаясь оптимизировать модель. По умолчанию максимальное количество выполняемых итераций составляет 35, после чего оптимизация не выполняется.
Сводная таблица:
Сводная таблица ниже дает нам подробное описание результатов регрессии.
| # printing the summary tableprint(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 datasetdf=pd.read_csv('logit_test1.csv', index_col=0) # defining the dependent and independent variablesXtest=df[['gmat','gpa','work_experience']]ytest=df['admitted'] # performing predictions on the test datdasetyhat=log_reg.predict(Xtest)prediction=list(map(round, yhat)) # comparing original and predicted values of yprint('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]
Тестирование точности модели:
| fromimportsklearn.metrics(confusion_matrix,                           accuracy_score) # confusion matrixcm=confusion_matrix(ytest, prediction)print("Confusion Matrix : 
", cm) # accuracy score of the modelprint('Test accuracy = ', accuracy_score(ytest, prediction)) | 
Выход :
Матрица неточностей: [[6 0] [2 2]] Точность теста = 0,8
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.
