최근접 이웃 회귀

Beginner

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

소개

최근접 이웃 회귀는 머신 러닝 알고리즘으로, 새로운 데이터 포인트의 값을 예측하기 위해 학습 데이터 세트에서 k 개의 가장 가까운 데이터 포인트를 찾고, 그 평균값을 사용하여 새로운 값을 예측합니다. 이 실습에서는 scikit-learn 을 사용하여 k-최근접 이웃을 이용한 회귀 문제 해결 방법과 중심점 (barycenter) 및 일정 가중치를 사용한 타겟 보간법을 보여줍니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 Jupyter Notebook을 연습에 사용할 수 있습니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

샘플 데이터 생성

먼저 회귀 문제에 사용할 샘플 데이터를 생성합니다. 1 개의 특징을 가진 40 개의 데이터 포인트 배열을 생성하고, 데이터에 사인 함수를 적용하여 타겟 배열을 만듭니다. 또한 매 5 번째 데이터 포인트에 약간의 노이즈를 추가합니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors

np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
T = np.linspace(0, 5, 500)[:, np.newaxis]
y = np.sin(X).ravel()

## 타겟에 노이즈 추가
y[::5] += 1 * (0.5 - np.random.rand(8))

회귀 모델 적합

그런 다음 5 개의 이웃과 균일 및 거리 가중치를 사용하여 샘플 데이터에 회귀 모델을 적합시킵니다. for 루프를 사용하여 각 가중치 유형을 반복하고, 맞춰진 모델의 predict 메서드를 사용하여 데이터 포인트의 산점도와 예측 값의 선 그래프를 생성합니다.

n_neighbors = 5

for i, weights in enumerate(["uniform", "distance"]):
    knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)
    y_ = knn.fit(X, y).predict(T)

    plt.subplot(2, 1, i + 1)
    plt.scatter(X, y, color="darkorange", label="data")
    plt.plot(T, y_, color="navy", label="prediction")
    plt.axis("tight")
    plt.legend()
    plt.title("KNeighborsRegressor (k = %i, weights = '%s')" % (n_neighbors, weights))

plt.tight_layout()
plt.show()

요약

이 실험에서는 k-최근접 이웃 알고리즘을 사용하여 학습 데이터 세트 내 k 개의 가장 가까운 이웃을 기반으로 새로운 데이터 포인트의 값을 예측하는 방법을 보여주었습니다. scikit-learn 을 사용하여 샘플 데이터를 생성하고 균일 및 거리 가중치를 모두 사용하여 회귀 모델을 적합시켰습니다. 그런 다음 데이터 포인트와 예측 값을 플롯하여 모델의 정확성을 시각화했습니다.