파이썬 Scikit-Learn 을 이용한 Theil-Sen 회귀

Beginner

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

소개

이 튜토리얼에서는 Theil-Sen 회귀와 Python scikit-learn 라이브러리를 사용한 구현 방법에 대해 배웁니다. 또한, 일반 최소 제곱 (OLS) 및 강력한 랜덤 샘플 합의 (RANSAC) 회귀와의 차이점을 살펴봅니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 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("원본 데이터")

선형 회귀 모델 적합

다음으로, 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 (적합 시간: %.2fs)" % (name, elapsed_time),
    )

회귀선 시각화

마지막으로, 적합된 모델의 회귀선을 시각화합니다.

plt.axis("tight")
plt.legend(loc="upper left")
_ = plt.title("회귀선")

요약

이 튜토리얼에서는 Theil-Sen 회귀와 Python scikit-learn 라이브러리를 사용한 구현 방법을 배웠습니다. 또한, 일반 최소 제곱 (OLS) 및 강건한 랜덤 샘플 합의 (RANSAC) 회귀와의 차이점도 살펴보았습니다. 위 단계들을 따름으로써, 합성 데이터셋을 생성하고 선형 회귀 모델을 적합하며, 회귀선을 시각화할 수 있었습니다.