# 샘플의 산점도를 그립니다
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=X[y == cl, 0],
y=X[y == cl, 1],
alpha=0.8,
c=colors[idx],
marker=markers[idx],
label=f'Class {cl}',
edgecolor='black')
먼저 colors와 markers를 정의하고 ListedColormap을 사용하여 colors 리스트에서 컬러맵을 만듭니다. 두 특성의 최솟값과 최댓값을 찾고 이 벡터로 넘파이 meshgrid 함수로 그리드(grid) 배열 xx1과 xx2 쌍을 만듭니다.14 두 특성의 차원에서 퍼셉트론 분류기를 훈련했기 때문에 그리드 배열을 펼치고 훈련 데이터와 같은 개수의 열이 되도록 행렬을 만듭니다.15 predict 메서드로 그리드 각 포인트에 대응하는 클래스 레이블 lab을 예측합니다.
클래스 레이블 lab을 xx1, xx2 같은 차원의 그리드로 크기를 변경한 후 맷플롯립의 contourf 함수로 등고선 그래프를 그립니다. 그리드 배열에 대해 예측한 클래스를 각기 다른 색깔로 매핑하여 결정 영역을 나타냅니다.