CS/기계학습심화

[기계학습심화] 6. KNN 구현

에버듀 2025. 4. 17. 03:26
반응형

sklearn 라이브러리에는 다양한 데이터 셋이 존재한다.

그 중에서 Iris (붓꽃) 데이터 셋을 사용해 붓꽃의 종류를 구분하는 모델을 KNN으로 만들어보자.

 

 

 

먼저 붗꽃 데이터를 가져온다.

붓꽃 데이터는 이렇게 4개의 실수로 구성된 리스트의 나열이다.

 

 

4개의 실수는 각각 꽃받침과 꽃잎의 크기를 나타낸다.

iris 데이터는 data 부분과 target 부분이 있다.

 

 

 

target 부분에는 data 영역에 있는 붓꽃이 어떤 class 의 붗꽃인지를 나타내는 정보가 같은 인덱스에 맞춰 들어가있다.

이제 이 데이터를 사용하여 새로운 붓꽃의 꽃받침과 꽃잎 길이가 주어졌을 때 이 붓꽃의 class 가 어디에 속하는지 분류해보자.

 

 

kNN 알고리즘으로 분류 모델을 만들기에 앞서 성능을 테스트할 테스트 데이터를 분리한다.

sklearn 의 train_test_split 을 사용하여 150개 데이터를 8:2 로 분류한다.

 

 

 

kNN 분류기 모델은 sklearn 에 이미 존재한다.

이 모델을 가져와 k = 6 으로 세팅한 모델을 준비한다.

그리고 train 데이터 셋으로 모델을 학습시킨다. (사실 학습시킬 건 없다. 그냥 데이터를 준비만 해두는 셈이다.)

 

그리고 X_test 로 테스트 데이터의 입력값을 knn 모델에 넣어 y_pred 예측값을 뽑는다.

예측값 y_pred 와 테스트 저답 y_test 를 비교하여 정확도를 측정하였더니 96.6% 가 나왔다.

 

 

 

이번엔 기존 데이터를 굳이 나누지 않고 모든 데이터를 다 넣어서 k = 5 로 모델을 학습시킨다.

이 모델에 새로운 임의의 데이터 [3, 4, 5, 2] 와 [5, 4, 2, 2] 를 넣어 분류 결과를 출력해보았다.

이 분류 결과는 96% 확률로 맞을 것이다.

 

 

반응형