Einführung
In diesem Tutorial lernen wir die Theil-Sen-Regression und deren Implementierung mit der Python-Bibliothek scikit-learn kennen. Wir werden auch sehen, wie sie sich von der einfachen kleinsten Quadrate (OLS)-Regression und der robusten Zufallsstichprobenkonsensus (RANSAC)-Regression unterscheidet.
Tipps für die virtuelle Maschine
Nachdem der Start der virtuellen Maschine abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Bibliotheken importieren und Datensatz generieren
Zunächst importieren wir die erforderlichen Bibliotheken und generieren einen synthetischen Datensatz für die Regressionsanalyse.
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]
Die Daten plotten
Lassen Sie uns nun den generierten Datensatz plotten.
plt.scatter(x, y, color="indigo", marker="x", s=40)
plt.axis("tight")
_ = plt.title("Original Data")
Lineare Regressionsmodelle anpassen
Als nächstes werden wir drei lineare Regressionsmodelle mit den Methoden OLS, Theil-Sen und RANSAC anpassen.
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),
)
Die Regressionslinien plotten
Schließlich werden wir die Regressionslinien der angepassten Modelle plotten.
plt.axis("tight")
plt.legend(loc="upper left")
_ = plt.title("Regression Lines")
Zusammenfassung
In diesem Tutorial haben wir über die Theil-Sen-Regression und ihre Implementierung mit der Python-Bibliothek scikit-learn gelernt. Wir haben auch gesehen, wie sie sich von der Ordinary Least Squares (OLS)-Regression und der Robust Random Sample Consensus (RANSAC)-Regression unterscheidet. Indem wir die obigen Schritte folgten, konnten wir einen synthetischen Datensatz generieren, lineare Regressionsmodelle anpassen und die Regressionslinien plotten.