Menu
CoddyTech

k-NN의 판단 방식

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

이 장에서는 k-NN을 자세히 살펴봅니다. 장을 마칠 때쯤이면 순한 고추와 매운 고추를 보여 주는 이 지도처럼 어떤 데이터든 지도를 그릴 수 있게 됩니다:

음영 처리된 지도에 길이와 과피 두께를 기준으로 표시된 고추 80개: 모델이 맵다고 판단하는 왼쪽의 주황색 영역과 순하다고 판단하는 오른쪽의 파란색 영역

새 고추에 라벨을 지정하기 위해 k-최근접 이웃은 가장 가까운 학습용 고추 k개를 찾고, 이 고추들이 투표합니다:

새 고추를 나타내는 검은 별이 있는 고추의 근접 사진. 회색 선이 이 별을 가장 가까운 고추 5개와 연결합니다. 매운 고추 3개와 순한 고추 2개이므로 매운 고추가 이깁니다

가장 가까운 것은 거리가 가장 작은 것을 뜻하며, 2절에서 배운 내용입니다. k를 선택합니다:

model = KNeighborsClassifier(n_neighbors=5)

n_neighbors는 별도로 지정하지 않으면 k가 5입니다. 클래스가 두 개일 때 홀수 k로는 동점이 절대 발생하지 않습니다.

challenge icon

챌린지

쉬움

천문학 동아리는 stars.csv에 있는 별을 온도와 등급에 따라 왜성과 거성으로 분류합니다. 시작 코드는 새로운 별과 k를 읽습니다.

  1. 직접 k개의 가장 가까운 별을 찾으세요. distance 열을 추가한 다음 정렬하세요.
  2. 그중 거성이 몇 개인지 출력한 다음, 투표에서 승리한 유형을 출력하세요.
  3. 모든 별로 학습한 k-NN 모델의 k를 사용해 결과를 확인하세요.

다른 동아리의 별과 k = 5에 대해:

Giants among the nearest 5: 4
By hand: giant
Model: giant

직접 해보기

import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier

# 별 하나당 한 행: 온도는 천 켈빈 단위, 등급은 값이 작을수록 더 밝음, 왜성 또는 거성
stars = pd.read_csv("stars.csv")
X = stars[["temp_kK", "magnitude"]]
y = stars["type"]

# 새로운 별과 k
temp = float(input())
mag = float(input())
k = int(input())
new_star = pd.DataFrame({"temp_kK": [temp], "magnitude": [mag]})

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

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

지도 학습의 모든 레슨

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