Régression Theil-Sen avec Python Scikit-Learn

Beginner

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

Introduction

Dans ce tutoriel, nous allons apprendre à connaître la régression Theil-Sen et sa mise en œuvre à l'aide de la bibliothèque Python scikit-learn. Nous verrons également en quoi elle diffère de la régression aux moindres carrés ordinaires (OLS) et de la régression Robust Random Sample Consensus (RANSAC).

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.

Importation des bibliothèques et génération du jeu de données

Tout d'abord, importons les bibliothèques nécessaires et générons un jeu de données synthétique pour l'analyse de régression.

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]

Tracer les données

Maintenant, traçons le jeu de données généré.

plt.scatter(x, y, color="indigo", marker="x", s=40)
plt.axis("tight")
_ = plt.title("Données originales")

Ajuster des modèles de régression linéaire

Ensuite, nous allons ajuster trois modèles de régression linéaire en utilisant les méthodes OLS, Theil-Sen et 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 (temps d'ajustement: %.2fs)" % (name, elapsed_time),
    )

Tracer les lignes de régression

Enfin, nous allons tracer les lignes de régression des modèles ajustés.

plt.axis("tight")
plt.legend(loc="upper left")
_ = plt.title("Lignes de régression")

Sommaire

Dans ce tutoriel, nous avons appris sur la régression Theil-Sen et sa mise en œuvre à l'aide de la bibliothèque Python scikit-learn. Nous avons également vu en quoi elle diffère de la régression aux moindres carrés ordinaires (OLS) et de la régression Robust Random Sample Consensus (RANSAC). En suivant les étapes ci-dessus, nous avons été capables de générer un jeu de données synthétique, d'ajuster des modèles de régression linéaire et de tracer les lignes de régression.