결정 경계
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 8번째.
결정 경계는 모델의 답이 바뀌는 곳입니다. 이를 확인하려면 격자 형태로 배열된 차트의 모든 지점에서 모델에 물어보세요:
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는 점의 색상과 일치시킵니다. 점은 그다음에 그 위에 그리세요.
챌린지
쉬움자판기는 동전의 크기와 무게를 기준으로 분류합니다. 시작 코드는 coins.csv를 사용해 k-NN을 학습하고(클래스 코드 0~2), draw_coins(ax)는 동전을 그립니다.
- 가로는 18~26 mm, 세로는 3~9 g인 100 x 100 격자
xx,yy를 만드세요. - 모든 점을 예측해 격자와 같은 모양의
zz에 저장하세요. - C0~C2 색상으로 지도를 채운 다음, 동전을 그리고 표시하세요.
이것처럼요:
다른 나라의 동전이므로 영역도 다릅니다.
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)")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러