Логистическая регрессия является одним из самых основных алгоритмов классификации. Глубокое понимание очень важно при изучении ML.

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

Это тип алгоритма классификации.

Алгоритм классификации

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

Пример: В случае обнаружения спама в электронных письмах. Электронное письмо может быть спамом или не спамом. Нет промежуточного состояния.

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

Сигмовидная функция

Сигмовидная функция — это математическая функция, имеющая S-образную кривую (сигмовидную кривую). Математически функция такова:

Его кривая выглядит так:

С его выходом в диапазоне от 0 до 1. Как мы видим, кривая быстро движется к 1, когда t > 0, и к 0, когда t ‹ 0. При t = 0 она равна 0,5.

Значение приведенной выше функции для t = 2 равно 0,88, а для t = -2 равно 0,119, что показывает, насколько резко она идет к 0 и 1.

Мы используем вероятность, где будет назначена пороговая точка. Скажем, 0,5 (переломный момент), и если мы получим выходной сигнал больше порогового значения, выходной сигнал будет принят за 1, а менее порогового значения выходной сигнал будет принят за 0.

Существует 2 вида классификации:

  • Бинарная классификация
  • Мультиклассовая классификация

Оба они могут быть лучше поняты на примерах.

Бинарная классификация:

Необходимо будет сделать только 2 разделения или классификации. Как спам или не спам.

Мультиклассовая классификация:

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

Есть 2 типа:

ОБЩИЙ ОБЩИЙ ОБЗОР (один отдых В/С):

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

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

Проблема первая: красный против зеленого/синего

Проблема вторая: синий против зеленого/красного

Проблема третья: зеленый против синего/красного

OVO(один V/S один)

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

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

  • Проблема 1: красный против зеленого
  • Задача 2: красный против синего
  • Задача 3: красный против желтого
  • Задача 4: зеленый против желтого
  • Задача 5: синий против зеленого
  • Задача 6: синий против желтого

Реализация с использованием sklearn

Мы импортируем все необходимые библиотеки.

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np

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

train_data = pd.read_csv(r'C:\Users\Ananthapadmanabha\Desktop\blogs\Untitled Folder\training_titanic_x_y_train.csv')

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

train_data['sex_factor'] = pd.factorize(train_data.Sex)[0]

После анализа набора данных мы рассматриваем только эти столбцы для обучения [‘SibSp’, ‘Pclass’, ‘sex_factor’, ‘Fare’, ‘Parch’] ‘’

columns_taken_for_training = ['SibSp','Pclass','sex_factor','Fare','Parch']
X = train_data[columns_taken_for_training]
Y = train_data.Survived

мы используем train_test_split() , чтобы разделить набор данных на данные для обучения и тестирования.

X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.33)

Мы вызываем функцию логистической регрессии и подгоняем обучающие данные с помощью функции fit(). затем, используя X_test , мы предсказываем Y_pred.

cld = LogisticRegression(C=2,tol=0.001,penalty='l2',solver='sag',max_iter=2000)
cld.fit(X_train,Y_train)
Y_pred = cld.predict(X_test)

Чтобы проверить, насколько точны наши прогнозы, мы используем X_test и Y_test и получаем значение. В score() «1» — идеальное значение. Здесь мы получаем значение «0,7».

cld.score(X_test,Y_test)

Файл jupyter к этому коду приведен здесь

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

Если вы нашли этот блог полезным, поделитесь им с кем-нибудь.