Логистическая регрессия с использованием статистических моделей

Опубликовано: 19 Июля, 2021

Предварительное условие: понимание логистической регрессии

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

Набор данных:
В этой статье мы предскажем, будет ли студент зачислен в конкретный колледж, на основе его результатов по GMAT, GPA и опыта работы. Зависимая переменная здесь - это двоичная логистическая переменная , которая, как ожидается, может принимать строго одну из двух форм, то есть допустимую или недопустимую .

Построение модели логистической регрессии:

Statsmodels - это модуль Python, который предоставляет различные функции для оценки различных статистических моделей и выполнения статистических тестов.

  • Сначала мы определяем набор зависимых ( y ) и независимых ( X ) переменных. Если зависимая переменная находится в нечисловой форме, она сначала преобразуется в числовую с помощью макетов. Файл, использованный в примере для обучения модели, можно скачать здесь.
  • Statsmodels предоставляет функцию Logit () для выполнения логистической регрессии. Функция Logit () принимает y и X в качестве параметров и возвращает объект Logit. Затем модель подбирается к данным.




    # 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.

  • Предыдущий
    Создайте круговые символы в Python с помощью боке
    Следующий
    Услуга без подключения
    Рекомендуемые статьи
    Страница :
    Статья предоставлена:
    косинус1509
    @ cosine1509
    Голосуйте за трудности
    Теги статьи:
    • наука о данных
    • Регресс
    • Машинное обучение
    • Python
    Теги практики:
    • Машинное обучение
    Сообщить о проблеме
    Python Машинное обучение Наука о данных

    РЕКОМЕНДУЕМЫЕ СТАТЬИ