사용자 지정 커널을 이용한 SVM 분류

Beginner

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

소개

이 실습에서는 사용자 지정 커널을 사용하여 Support Vector Machines(SVM) 를 이용하여 샘플을 분류하는 방법을 배웁니다. 파이썬의 scikit-learn 라이브러리를 사용하여 사용자 지정 커널로 SVM 분류를 수행합니다. SVM 은 분류, 회귀 및 이상치 탐지에 사용되는 인기 있는 머신 러닝 알고리즘입니다. SVM 은 데이터를 클래스로 분리하는 경계 또는 선 (초평면) 을 생성합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

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

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

라이브러리 가져오기

이 단계에서는 이 실습에 필요한 라이브러리를 가져옵니다. numpy, matplotlib, scikit-learn 및 DecisionBoundaryDisplay 를 사용할 것입니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay

데이터 로드

이 단계에서는 scikit-learn 의 datasets 모듈을 사용하여 iris 데이터셋을 로드합니다. 데이터셋의 첫 두 개 특징을 선택하여 변수 X 에 할당하고, 대상 변수를 Y 에 할당합니다.

iris = datasets.load_iris()
X = iris.data[:, :2]
Y = iris.target

사용자 지정 커널 생성

이 단계에서는 사용자 지정 커널을 생성합니다. 사용자 지정 커널은 두 행렬의 내적 (dot product) 입니다. 값이 [[2, 0], [0, 1.0]]인 행렬 M 을 생성합니다. 그런 다음 행렬 X 와 Y 를 M 으로 곱하고 그 내적을 계산합니다.

def my_kernel(X, Y):
    """
    사용자 지정 커널을 생성합니다.

                 (2  0)
    k(X, Y) = X  (    ) Y.T
                 (0  1)
    """
    M = np.array([[2, 0], [0, 1.0]])
    return np.dot(np.dot(X, M), Y.T)

SVM 분류기 생성

이 단계에서는 SVM 분류기의 인스턴스를 생성하고 데이터를 맞춥니다. 이전 단계에서 생성한 사용자 지정 커널을 사용합니다.

clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)

결정 경계 시각화

이 단계에서는 결정 경계와 지지 벡터를 시각화합니다. scikit-learn 의 검사 모듈에서 DecisionBoundaryDisplay 모듈을 사용하여 결정 경계를 그립니다. 또한 학습 데이터 포인트를 산점도로 표시합니다.

ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    cmap=plt.cm.Paired,
    ax=ax,
    response_method="predict",
    plot_method="pcolormesh",
    shading="auto",
)

plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title("사용자 지정 커널을 사용한 서포트 벡터 머신을 이용한 3 클래스 분류")
plt.axis("tight")
plt.show()

요약

이 실습에서는 사용자 지정 커널을 사용하여 서포트 벡터 머신 (SVM) 을 활용하여 샘플을 분류하는 방법을 배웠습니다. scikit-learn 라이브러리를 사용하여 사용자 지정 커널로 SVM 분류를 수행했습니다. 아이리스 데이터셋을 로드하고, 사용자 지정 커널을 생성하고, SVM 분류기 인스턴스를 생성하여 데이터를 맞추고, 결정 경계와 지지 벡터를 시각화했습니다. SVM 은 분류, 회귀 및 이상치 탐지에 사용되는 인기 있는 머신 러닝 알고리즘입니다.