kNN 알고리즘으로 필기체 숫자 영상을 학습시키려면 각 필기체 숫자 영상이 나타내는 숫자 값을 레이블 행렬로 함께 전달해야 합니다. 이 레이블 행렬의 행 크기는 훈련 데이터 영상 개수와 같고, 열 크기는 1입니다. 그림 15-7에 나타난 훈련 데이터 행렬에서 처음 500개 행은 숫자 0에 대한 데이터이고, 그다음 500개 행은 숫자 1에 대한 데이터입니다. 그러므로 레이블 행렬도 처음 500개 행 원소는 0으로 설정하고, 그다음 500개 행은 1로 설정합니다. 이와 같은 방식으로 5000×1 행렬 원소를 모두 설정한 후, KNearest 클래스의 레이블 데이터로 전달합니다.
이처럼 digits.png 영상으로부터 훈련 데이터 행렬과 레이블 데이터 행렬을 만들고, KNearest 객체를 학습시키는 train_knn() 함수 소스 코드를 코드 15-2에 나타냈습니다. train_knn() 함수는 이 절에서 만드는 knndigits 예제 프로그램에서 kNN 알고리즘 학습을 위해 사용하는 함수입니다. train_knn() 함수가 정의된 소스 파일과 사용된 영상 파일은 내려받은 예제 파일 중 ch15/knndigits 프로젝트에서 확인할 수 있습니다.