В этом посте мы увидим, как применять и как работает логистический алгоритм регрессии.
Логистическая регрессия — очень известный алгоритм, когда мы говорим о задачах классификации. Мы можем легко реализовать логистическую регрессию и получить очень удовлетворительные результаты, написав всего несколько строк кода.
Но как это работает на самом деле?
Логистическая регрессия очень похожа на линейную регрессию, разница между ними заключается в функции. В линейной регрессии у нас есть функция, которая может возвращать отрицательные числа, в логистической регрессии у нас есть функция, которая возвращает только положительные числа.
Мы можем увидеть это более подробно на изображении ниже:
Это очень удобно, когда мы работаем с Двоичной классификацией (всего 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/