В этом посте мы увидим, как применять и как работает логистический алгоритм регрессии.

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

Но как это работает на самом деле?

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

Мы можем увидеть это более подробно на изображении ниже:

Это очень удобно, когда мы работаем с Двоичной классификацией (всего 2 класса), где мы используем Двоичную логистическую классификацию.

В этом репозитории вы можете увидеть, как я применил логистическую регрессию для решения Kaggle Challenge Titanic,где у нас всего 2 класса!

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

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

Давайте сделаем машинное обучение, детка!

Просмотр набора данных

Мы можем использовать Seaborn для загрузки набора данных в нашу записную книжку, используя следующую строку:

# Load dataset:
data = sns.load_dataset(‘iris’)

После этого мы можем взглянуть на данные…

Просто добавлю, что для задач классификации нейронные сети могут работать лучше любого алгоритма, вы можете увидеть, как я применил нейронные сети для решения “ Kaggle Challenge Titanic»в этой публикации.

Но в этой конкретной проблеме у нас есть функция в нашем наборе данных, которая меняет весь сценарий.

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

И именно поэтому в этой задаче лучше использовать логистическую регрессию.

Другая важная вещь, на которую следует обратить внимание, касается наших данных. Нам не нужно ничего менять или форматировать, наши данные готовы для ввода в нашу Модель, это так редко!

Но возвращаясь, нам нужно разделить наши данные на Train и Test. В этом примере я хочу использовать 30% моего набора данных для тестирования и 70% для обучения.

Мы можем использовать приведенный ниже код для разделения:

X = data.drop(columns=’species’)
y = data[‘species’]
# Splitting: 
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

Но у нас всего несколько данных…

Я знаю, но для нашей Модели логистической регрессии этого достаточно!

Теперь у нас уже есть набор данных, разделенный на Train и Test.

Давайте построим нашу модель!

Создание нашей модели

Мы хотим использовать scikit-learn для построения нашей Модели, но вы можете выбрать, что лучше для вас.

Чтобы построить нашу модель логистической регрессии, мы можем импортировать класс LogisticRegression из scikit-learn и преобразовать его в переменную, например код ниже:

# Building the model:
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()

Теперь мы хотим обучить нашу модель, используя метод fit(), передавая в качестве параметров наш поезд X и Y, где:

  • X: входные данные, такие как sepal_lenght и petal_lenght.
  • Y: Является ли выходным, может быть: Setosa, Virginica или Versicolour.

После обучения нашей модели мы можем делать прогнозы в нашем тестовом наборе данных. Для этого мы используем метод predict(), передавая в качестве параметра наш X_test (входные данные нашего набора тестовых данных), как в приведенном ниже коде:

pred = model.predict(X_test)

Визуализация метрик нашей модели

Теперь у нас уже есть прогнозы нашей Модели, и мы можем видеть, дает ли он правильные результаты или нет.

Для этого мы можем использовать classification_report scikit-learn, используя приведенный ниже код:

from sklearn.metrics import classification_report, confusion_matrix
print(classification_report(y_test, pred))

После запуска этого кода мы видим, что модель работает слишком хорошо в нашем наборе данных, достигая точности 100% в 2 наших классах и 90% для другого класса. Взглянув на нашу матрицу путаницы, мы можем лучше визуализировать прогнозы по сравнению с правильным ответом:

Теперь у нас есть модель, обученная и выступающая слишком хорошо!

Вы можете получить доступ к репозиторию этого сообщения в здесь.

На данный момент это все!

Увидимся в следующий раз!

Мои социальные сети:

Linkedin:https://www.linkedin.com/in/gabriel-mayer-779b5a162/

GitHub: https://github.com/gabrielmayers

Instagram: https://www.instagram.com/gabrielmayerl/