Регирессия Тейла-Сена с использованием библиотеки Scikit-Learn для Python

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом уроке мы узнаем о регрессии Тейла-Сена и ее реализации с использованием библиотеки scikit-learn для Python. Также рассмотрим, как она отличается от обычной наименьших квадратов (OLS) и регрессии Robust Random Sample Consensus (RANSAC).

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем библиотеки и генерируем датасет

Сначала импортируем необходимые библиотеки и сгенерируем синтетический датасет для анализа регрессии.

import time
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, TheilSenRegressor
from sklearn.linear_model import RANSACRegressor

np.random.seed(0)
n_samples = 200
x = np.random.randn(n_samples)
w = 3.0
c = 2.0
noise = 0.1 * np.random.randn(n_samples)
y = w * x + c + noise
X = x[:, np.newaxis]

Построим график данных

Теперь построим график сгенерированного датасета.

plt.scatter(x, y, color="indigo", marker="x", s=40)
plt.axis("tight")
_ = plt.title("Original Data")

Обучим модели линейной регрессии

Далее мы обучим три модели линейной регрессии с использованием методов OLS, Theil-Sen и RANSAC.

estimators = [
    ("OLS", LinearRegression()),
    ("Theil-Sen", TheilSenRegressor(random_state=42)),
    ("RANSAC", RANSACRegressor(random_state=42)),
]
colors = {"OLS": "turquoise", "Theil-Sen": "gold", "RANSAC": "lightgreen"}
lw = 2

line_x = np.array([-3, 3])
for name, estimator in estimators:
    t0 = time.time()
    estimator.fit(X, y)
    elapsed_time = time.time() - t0
    y_pred = estimator.predict(line_x.reshape(2, 1))
    plt.plot(
        line_x,
        y_pred,
        color=colors[name],
        linewidth=lw,
        label="%s (fit time: %.2fs)" % (name, elapsed_time),
    )

Построим линии регрессии

Наконец, построим линии регрессии для обученных моделей.

plt.axis("tight")
plt.legend(loc="upper left")
_ = plt.title("Regression Lines")

Резюме

В этом уроке мы узнали о регрессии Тейла-Сена и ее реализации с использованием библиотеки scikit-learn на Python. Мы также увидели, как она отличается от обычной наименьших квадратов (OLS) и регрессии Robust Random Sample Consensus (RANSAC). Следуя шагам выше, мы смогли сгенерировать синтетический датасет, обучить модели линейной регрессии и построить линии регрессии.