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.