ESC(Programming Lab)/Machine Learning

k-NN (k nearest neighbor) 알고리즘 구현

남혁준 2020. 3. 10. 18:34

1) k-NN 알고리즘의 이해
- 구글드라이브 ebook 폴더에 있는 “Machine learning in action”의 chapter2나 인터넷을 이용하여 k-NN 알고리즘에 대해 이해

2) k-NN 알고리즘의 구현
- 프로그램 인수로 reference data 파일이름, test data 파일이름, k값을 받도록 작성
reference data와 test data를 파일에서 읽어 들여 저장할 배열의 크기는 이미 파일 내 데이터의 정보를 알고 있으므로 이를 이용하면 됨 (그러나 동적할당 사용).
실험에 사용할 IRIS 데이터는 https://archive.ics.uci.edu/ml/datasets/Iris 에서 다운 받을 수 있음 (UCI machine learning repository).
IRIS 데이터는 3개의 클래스가 있으며 각 클래스마다 50개의 데이터 (벡터)가 있음. 90개 (각 클래스마다 30개) 벡터를 reference data로, 나머지 60개를 테스트 데이터로 분류하여 reference data 파일, test data 파일을 만들 것.
정렬 (sorting)을 위해서는 stdlib.h에 정의되어 있는 qsort( ) 함수를 이용. 함수의 이용 방법은 인터넷 참조. Quick sorting 알고리즘에 대해서도 자료구조 수업에 사용했던 책이나 인터넷을 참고하여 이해. 
프로그램의 (모니터) 출력은 각 클래스마다 분류의 정확도를 출력 (맞게 분류된 벡터 개수/총 벡터 개수).

3) k-NN 알고리즘의 실행
k의 값을 변화시켜가며 실험을 하여 분류 정확도가 어떻게 변하는지 실험
Reference data와 test data의 비율을 3:2가 아니라 1:4, 2:2, 4:1로 변화시켜가며 실험을 하여 분류정확도가 어떻게 변하는지 실험.

 

 

KNN (Iris data) 실행사진