소개
붓꽃 데이터셋은 분류 문제에 사용되는 고전적인 데이터셋입니다. 이 실습에서는 파이썬 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 분류기는 분류 문제에 강력한 도구이며 다양한 데이터셋에 사용될 수 있습니다.