더북(TheBook)

KNearest::findNearest() 함수는 samples 행렬 각 행에 저장된 테스트 데이터와 가까운 k개의 훈련 데이터를 찾아 분류 또는 회귀 응답을 반환합니다. samples 행렬의 행 개수는 예측할 테스트 데이터 개수와 같고, 열 개수는 학습 시 사용한 훈련 데이터의 차원과 같아야 합니다. 분류 및 회귀 결과가 저장되는 results 행렬은 samples 행렬과 같은 행 개수를 가지고, 열 개수는 항상 1입니다. 즉, samples 행렬에서 i번째 행에 대한 응답이 results 행렬의 i번째 행에 저장됩니다. neighborResponsesdist 인자는 kNN 알고리즘 수행 후 추가적인 정보를 받아 오는 용도이며, 필요하지 않으면 생략할 수 있습니다.

2차원 평면에서 세 개의 클래스로 구성된 점들을 kNN 알고리즘으로 분류하고, 그 경계면을 화면에 표시하는 예제 프로그램 소스 코드를 코드 15-1에 나타냈습니다. 코드 15-1은 (150, 150), (350, 150), (250, 400) 좌표를 중심으로 하는 가우시안 분포의 점을 각각 30개씩 생성하여 kNN 알고리즘 훈련 데이터로 사용합니다. 그리고 (0, 0) 좌표부터 (499, 499) 좌표 사이의 모든 점에 대해 kNN 분류를 수행하여 그 결과를 빨간색, 녹색, 파란색 색상으로 나타냅니다. kNN 알고리즘의 k 값은 트랙바를 이용하여 프로그램 실행 중 변경할 수 있도록 하였습니다. 코드 15-1에 나타난 소스 코드 파일은 내려받은 예제 파일 중 ch15/knnplane 프로젝트에서 확인할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.