k 선택하기
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 7번째.
칠리에 어떤 k가 적합할까요? 몇 가지를 시도하고 각 모델의 점수를 두 번 매겨 보세요. 학습한 행에 대한 훈련 정확도와 숨겨 둔 행에 대한 테스트 정확도입니다.
k = 1일 때 각 고추는 자기 자신의 최근접 이웃이므로 모델은 데이터를 암기합니다. 학습 데이터에서는 완벽하지만 새로운 데이터에서는 성능이 떨어집니다. k가 너무 크면 그룹이 흐려집니다.
ks = range(1, 120, 6)
train_acc = []
test_acc = []
for k in ks:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
train_acc.append(model.score(X_train, y_train))
test_acc.append(model.score(X_test, y_test))일단 테스트 정확도가 최고점에 이르는 k를 선택하세요. 7장에서는 더 공정한 평가 방법을 보여 줍니다.
챌린지
쉬움한 축구 클럽은 슛을 shots.csv에 기록합니다. 거리, 각도, 그리고 goal 또는 miss입니다. 어떤 k가 가장 잘 예측할까요? 시작 코드는 데이터를 나누고, ks를 나열하며 차트에 레이블을 붙입니다.
- 각 k에 대해 모델을 학습시키고 학습 및 테스트 정확도를 저장하세요.
- 아래와 같이 테스트 정확도가 가장 높은 k를 출력하세요.
ks에 대해 두 목록을 모두 그리세요.train과test로 레이블을 붙이고 범례를 추가하세요.
다른 클럽의 경우:
Best k: 9 (test accuracy 0.783)그런 다음 Coddy가 차트를 설명합니다.
직접 해보기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 슈팅 한 번당 한 행: 골대까지의 거리 (m), 골문을 향한 각도 (도), 득점 또는 실축
shots = pd.read_csv("shots.csv")
X = shots[["distance_m", "angle_deg"]]
y = shots["result"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 42, 4) # k = 1, 5, 9, ..., 41
fig, ax = plt.subplots()
ax.set_title("Shots: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Accuracy")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러