3.1 k-Nearest Neighbor
Supervised learning(비지도 학습)이란 label을 컴퓨터에 미리 알려주고 학습시키는 방법.
3.1.1 k-Nearest Neighbor
k-nearest neighbor는 새 입력을 받았을 때 기존 cluster에서 모든 데이터와 instance 기반으로 거리를 측정하고 가장 많은 속성을 가진 cluster에 해당 입력을 할당한다.
즉 과거 데이터를 사용해 미리 분류 모형을 만드는 것이 아니라 과거 데이터를 저장해 두고 필요할 때마다 비교를 수행한다.
먼저 라이브러리 호출 및 데이터 준비.
- Line 1 : 벡터, 행렬 연산 처리를 위한 라이브러리
- Line 2 : 데이터를 차트, 플롯 형태로 그리기 위한 라이브러리
- Line 3 : 데이터 분석 및 조작을 위한 라이브러리
- Line 4 : 모델 성능 평가
- Line 6 : 데이터셋의 column에 이름 할당
- Line 8 : 데이터를 pandas dataframe에 저장.
여기서는 iris dataset을 사용한다.
다음은 데이터 전처리를 진행하고 training set, test set으로 분리.
- Line 13 : 평균이 0, std가 1이 되도록 scaling.
- Line 15 : training data를 scaling.
- Line 16 : test data를 scaling.
모델을 생성하고 훈련시키자.
모델에 대한 정확도를 측정.
- Result :
정확도: 0.9666666666666667
train_test_split()
method는 데이터를 무작위로 분할하므로, 매번 코드를 실행할 떄마다 정확도에 차이가 있을 수 있다.
3.1.2 Find best K
k-NN의 최적의 $K$값은 무엇이 될까? for
문을 사용해 $K$값을 순환하면서 최적의 $K$값을 찾아보자.
- Result :
정확도 1.0 으로 최적의 k는 1 입니다.