본문 바로가기

프로그래밍/Machine Learning

[Machine Learning] k-NN(KNN, k-Nearest Neighbor, k-최근접 이웃) 알고리즘을 활용한 머신러닝 모델 만들기

k-NN(KNN, K-Nearest Neighbor, k-최근접 이웃 알고리즘) : 새로운 데이터가 주어졌을 때, 훈련 데이터(training set)에서 새로운 데이터에 가장 가까운 k개의 이웃을 찾는 알고리즘

 

싸이킷런(scikit-learn)에서의 k-Nearest Neighbor 알고리즘은 neighbors 모듈 아래 KNeighborsClassifier 클래스에 구현되어있다.

 

따라서 K-Nearest Neighbor 알고리즘은 KNeighborsClassifier 클래스를 통해 객체를 만들어 사용할 수 있는데, 이때 매개변수로 찾고자 하는 이웃의 개수(n_neighbors)를 지정해 줄 수 있다. (아래의 경우 편의를 위하여 n_neigbors의 값을 1로 지정)

 

k-NN알고리즘 사용을 위한 객체(knn) 생성

 

다음으로 앞서 생성하였던 훈련 데이터인 X_train(데이터를 담고 있음)과 훈련 데이터의 레이블을 담고 있는 y_train(정확한 혹은 기대하는 출력을 가지고 있음. 이 경우 품종에 해당하는 클래스(0~2))을 knn객체의 fit메서드의 매개변수로 활용하여 모델을 구축하여 준다.

* (https://honeyteacs.tistory.com/11?category=706999) 참조

 

fit메서드를 통한 모델 구축

 

새로운 데이터를 생성하여 위에서 구축한 k-NN 모델을 통한 클래스 예측 및 knn객체의 score메서드를 활용하여 테스트 세트를 대상으로 한 모델의 정확도 확인

 

새로운 데이터 생성을 통한 예측 및 테스트 세트를 대상으로 한 모델의 정확도 확인
예측 및 테스트 세트의 정확도 결과

 

 

*테스트 세트의 정확도 분석을 위한 또 다른 방법

1. knn객체의 predict 메서드를 통한 테스트 세트에 들어있는 데이터 각각의 클래스 예측

2. y_test(각 테스트 데이터의 클래스 레이블(0~2)을 담고 있음)과 1번에서의 예측값을 비교

 

테스트 데이터 각각의 클래스 예측 및 예측값과 기대값과의 비교
테스트 세트의 정확도 결과