Menu
CoddyTech

결정 경계

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 8번째.

결정 경계는 모델의 답이 바뀌는 곳입니다. 이를 확인하려면 격자 형태로 배열된 차트의 모든 지점에서 모델에 물어보세요:

작은 점들의 격자 위에 놓인 칠리 80개. 각 점은 해당 지점에서의 모델 답에 따라 색칠되어 있습니다. 왼쪽은 매운맛을 나타내는 주황색, 오른쪽은 순한 맛을 나타내는 파란색이며, 계단 모양 선을 따라 만납니다

np.meshgrid는 모든 x와 모든 y를 짝짓습니다. 짝들을 행으로 펼친 다음, 모두 예측하고 결과를 그리드의 모양으로 다시 접습니다:

xx, yy = np.meshgrid(np.linspace(2, 16, 100), np.linspace(0.5, 6.5, 100))
grid = np.column_stack([xx.flatten(), yy.flatten()])
zz = model.predict(grid).reshape(xx.shape)
ax.contourf(xx, yy, zz, levels=[-0.5, 0.5, 1.5], colors=["C0", "C1"], alpha=0.3)

contourf는 각 클래스 코드의 영역을 채웁니다. levels는 코드 사이의 중간에 경계선을 두고, colors는 점의 색상과 일치시킵니다. 점은 그다음에 그 위에 그리세요.

challenge icon

챌린지

쉬움

자판기는 동전의 크기와 무게를 기준으로 분류합니다. 시작 코드는 coins.csv를 사용해 k-NN을 학습하고(클래스 코드 0~2), draw_coins(ax)는 동전을 그립니다.

  1. 가로는 18~26 mm, 세로는 3~9 g인 100 x 100 격자 xx, yy를 만드세요.
  2. 모든 점을 예측해 격자와 같은 모양의 zz에 저장하세요.
  3. C0~C2 색상으로 지도를 채운 다음, 동전을 그리고 표시하세요.

이것처럼요:

동전 분류 지도: 세 개의 부드러운 영역. 왼쪽 아래는 10c를 나타내는 파란색, 가운데는 5c를 나타내는 주황색, 오른쪽은 25c를 나타내는 초록색이며, 각 영역 위에 해당 동전이 있고 범례가 있음

다른 나라의 동전이므로 영역도 다릅니다.

Coddy가 여러분의 지도를 설명합니다.

직접 해보기

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier

# 기계가 측정한 동전 하나당 한 행: 지름 (mm), 무게 (g), 센트 단위의 액면가
coins = pd.read_csv("coins.csv")
X = np.column_stack([coins["diameter_mm"], coins["weight_g"]])
# 클래스 코드: 10c는 0, 20c는 1, 50c는 2
y = coins["value_c"].map({10: 0, 20: 1, 50: 2})
names = ["10c", "20c", "50c"]
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X, y)


# ax에 동전을 그립니다. 클래스마다 다른 색을 사용합니다: C0, C1, C2
def draw_coins(ax):
    for code in range(3):
        ax.scatter(X[y == code, 0], X[y == code, 1], s=20, label=names[code])
    ax.legend()


fig, ax = plt.subplots()
ax.set_title("Coin Sorter Map")
ax.set_xlabel("Diameter (mm)")
ax.set_ylabel("Weight (g)")

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러