소개
이 실습에서는 scikit-learn 을 사용하여 XOR 데이터셋에 대한 가우시안 프로세스 분류 (GPC) 예제를 살펴볼 것입니다. 정상 동차 커널 (RBF) 과 비정상 커널 (DotProduct) 을 사용하여 얻은 결과를 비교할 것입니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 가져오기
이 단계에서는 이 실습에 필요한 라이브러리를 가져올 것입니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF, DotProduct
XOR 데이터셋 생성
이 단계에서는 numpy 를 사용하여 XOR 데이터셋을 생성합니다. 입력 특징에 기반하여 logical_xor 함수를 사용하여 레이블을 생성합니다.
xx, yy = np.meshgrid(np.linspace(-3, 3, 50), np.linspace(-3, 3, 50))
rng = np.random.RandomState(0)
X = rng.randn(200, 2)
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)
모델 학습
이 단계에서는 가우시안 프로세스 분류기를 데이터셋에 맞춥니다. 비교를 위해 RBF 및 DotProduct 두 가지 다른 커널을 사용합니다.
plt.figure(figsize=(10, 5))
kernels = [1.0 * RBF(length_scale=1.15), 1.0 * DotProduct(sigma_0=1.0) ** 2]
for i, kernel in enumerate(kernels):
clf = GaussianProcessClassifier(kernel=kernel, warm_start=True).fit(X, Y)
## 그리드 상의 각 데이터 포인트에 대한 결정 함수를 플롯합니다.
Z = clf.predict_proba(np.vstack((xx.ravel(), yy.ravel())).T)[:, 1]
Z = Z.reshape(xx.shape)
plt.subplot(1, 2, i + 1)
image = plt.imshow(
Z,
interpolation="nearest",
extent=(xx.min(), xx.max(), yy.min(), yy.max()),
aspect="auto",
origin="lower",
cmap=plt.cm.PuOr_r,
)
contours = plt.contour(xx, yy, Z, levels=[0.5], linewidths=2, colors=["k"])
plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired, edgecolors=(0, 0, 0))
plt.xticks(())
plt.yticks(())
plt.axis([-3, 3, -3, 3])
plt.colorbar(image)
plt.title(
"%s\n Log-Marginal-Likelihood:%.3f"
% (clf.kernel_, clf.log_marginal_likelihood(clf.kernel_.theta)),
fontsize=12,
)
plt.tight_layout()
plt.show()
결과 시각화
이 단계에서는 모델 학습 결과를 시각화합니다. 그리드 상의 각 데이터 포인트에 대한 결정 함수를 플롯하고 입력 특징에 대한 산점도를 그립니다.
요약
이 실험에서는 scikit-learn 을 사용하여 XOR 데이터셋에 대한 가우시안 프로세스 분류 (GPC) 예제를 살펴보았습니다. 정상 동방성 커널 (RBF) 과 비정상 커널 (DotProduct) 을 사용하여 얻은 결과를 비교했습니다.