Реализуем линейную регрессию на Python | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
Flutter Mobile Developer Подготовка к сертификации Oracle Java Programmer (OCAJP)
-8%
Алгоритмы и структуры данных
-12%
Web-разработчик на Python
-11%
Архитектура и шаблоны проектирования
-14%
JavaScript Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах»
-18%
iOS-разработчик. Базовый курс
-23%
Разработчик на Spring Framework
-23%
Python Developer. Basic
-16%
C# ASP.NET Core разработчик
-18%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Android Developer. Basic
-10%
C++ Developer. Professional Разработчик C# AWS для разработчиков Software Architect Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Backend-разработка на Kotlin React.js Developer Разработчик Node.js Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Advanced Fullstack JavaScript developer
Инфраструктура
PostgreSQL
-10%
IoT-разработчик
-12%
Administrator Linux. Professional
-11%
Базы данных
-19%
Administrator Linux.Basic
-18%
Супер-интенсив «СУБД в высоконагруженных системах»
-18%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Сетевой инженер AWS для разработчиков Software Architect Reverse-Engineering. Professional CI/CD VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Реализуем линейную регрессию на Python

ML_Deep_6.11-5020-a1e128.png

Не так давно мы рассказывали про основные алгоритмы для машинного обучения. Сегодня попробуем реализовать что-нибудь на Python 3. Начнём с линейной регрессии. Перед началом работы следует импортировать нужные библиотеки:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
%matplotlib inline

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

Алгоритм универсален, т. к. может запускаться как с одной входной переменной (это будет простая линейная регрессия), так и с зависимостью от нескольких (так называемая множественная регрессия). И суть регрессии заключается в том, чтобы назначить оптимальные веса для переменных с последующим созданием линии (ax + b), которая, в дальнейшем, сможет применяться для прогнозирования вывода. Если хотите углубиться в тему, смотрите видео с более подробным объяснением. Мы же перейдём от теории к реализации.

Начало работы:

from sklearn import linear_model
df = pd.read_csv('linear_regression_df.csv')
df.columns = ['X', 'Y']
df.head()

А теперь давайте посмотрим на визуализацию:

sns.set_context("notebook", font_scale=1.1)
sns.set_style("ticks")
sns.lmplot('X','Y', data=df)
plt.ylabel('Response')
plt.xlabel('Explanatory')

Что же, осталось реализовать алгоритм линейной регрессии:

linear = linear_model.LinearRegression()
trainX = np.asarray(df.X[20:len(df.X)]).reshape(-1, 1)
trainY = np.asarray(df.Y[20:len(df.Y)]).reshape(-1, 1)
testX = np.asarray(df.X[:20]).reshape(-1, 1)
testY = np.asarray(df.Y[:20]).reshape(-1, 1)
linear.fit(trainX, trainY)
linear.score(trainX, trainY)
print('Coefficient: \n', linear.coef_)
print('Intercept: \n', linear.intercept_)
print('R² Value: \n', linear.score(trainX, trainY))
predicted = linear.predict(testX)

По материалам статьи «The Hitchhiker’s Guide to Machine Learning in Python».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться