Логистическая регрессия является одним из самых основных алгоритмов классификации. Глубокое понимание очень важно при изучении 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 к этому коду приведен здесь
В следующем блоге мы обсудим, как улучшить оценку с помощью Создания полезных функций на основе заданных функций и регуляризации.
Если вы нашли этот блог полезным, поделитесь им с кем-нибудь.