아이리스 데이터셋의 SVM 분류기

Beginner

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

소개

붓꽃 데이터셋은 분류 문제에 사용되는 고전적인 데이터셋입니다. 이 실습에서는 파이썬 scikit-learn 을 사용하여 붓꽃 데이터셋에서 서로 다른 SVM 분류기를 시각화하는 방법을 배웁니다. 붓꽃 데이터셋의 2 차원 투영에서 서로 다른 선형 SVM 분류기를 비교해 볼 것입니다.

VM 팁

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

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

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

필요한 라이브러리 가져오기 및 데이터셋 로드

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

## 사용할 데이터 가져오기
iris = datasets.load_iris()
## 처음 두 개의 특징만 사용합니다. 2 차원 데이터셋을 사용하여 이 부분을 피할 수 있습니다.
X = iris.data[:, :2]
y = iris.target

SVM 분류기 생성 및 데이터 적합

C = 1.0  ## SVM 정규화 매개변수
models = (
    svm.SVC(kernel="linear", C=C),
    svm.LinearSVC(C=C, max_iter=10000, dual="auto"),
    svm.SVC(kernel="rbf", gamma=0.7, C=C),
    svm.SVC(kernel="poly", degree=3, gamma="auto", C=C),
)
models = (clf.fit(X, y) for clf in models)

분류기의 결정 경계 플롯

## 플롯을 위한 2x2 그리드 설정.
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)

X0, X1 = X[:, 0], X[:, 1]

## 각 분류기마다 DecisionBoundaryDisplay 생성
for clf, title, ax in zip(models, titles, sub.flatten()):
    disp = DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        response_method="predict",
        cmap=plt.cm.coolwarm,
        alpha=0.8,
        ax=ax,
        xlabel=iris.feature_names[0],
        ylabel=iris.feature_names[1],
    )
    ## 데이터 포인트 플롯
    ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
    ax.set_xticks(())
    ax.set_yticks(())
    ax.set_title(title)

plt.show()

결과 해석

위 코드는 네 개의 서브플롯이 있는 플롯을 생성합니다. 각 서브플롯은 서로 다른 SVM 분류기의 결정 경계를 보여줍니다. 각 서브플롯의 제목은 해당 분류기에 사용된 SVM 커널의 유형을 나타냅니다. 데이터 포인트는 대상 클래스에 따라 색상으로 구분됩니다.

요약

이 실습에서는 파이썬 scikit-learn 을 사용하여 아이리스 데이터셋에서 서로 다른 SVM 분류기를 시각화하는 방법을 배웠습니다. 아이리스 데이터셋의 2 차원 투영에서 서로 다른 선형 SVM 분류기를 비교하고 결과를 해석했습니다. SVM 분류기는 분류 문제에 강력한 도구이며 다양한 데이터셋에 사용될 수 있습니다.