- 1) 분류 유형뿐만 아니라 회귀 유형에도 사용된다.
- 분류 -> 가장 많이 포함된 유형으로 분류
- 회귀 -> K개 값의 평균을 계산하여 값을 예측
- 2) K값의 중요성
- K가 train 갯수라면, 평균값이 나온다. 즉, k의 수가 증가하면 모델은 단순해진다. 그래서 적절한 수의 k를 선택하는게 중요하다. (디폴트 = 5, k는 홀수로 설정)
- 3) 거리 계산 : 유클리드 거리와 맨하튼 거리가 있다.
- 4) 스케일링
- x와 y의 데이터 단위의 차이가 있을 수 있다. 그래서 1. 정규화 방법 or 2. 표준화 방법을 이용해서 데이터 스케일링을 한다. 우리는 정규화 방법을 사용한다.
- 5) 정규화 :
- 정규화 할 때, 주의점은 비율 fitting을 x_train으로 하고, x_test에 적용 할 때는 fitting된 걸로 해줘야 된다.
- 6) 정규화는 KNN 알고리즘뿐만 아니라, x_train 칼럼들의 데이터 단위가 1000단위 1단위 10단위 이렇게 차이가 많이 날 때도 정규화를 시켜준다.
# 데이터 분리 과정을 하고 다음 과정이 정규화이다. # 방법 1. # 최댓값, 최솟값 구하기, x_train으로 fitting x_max = x_train.max() x_min = x_train.min() # 학습데이터 최소/최대 값을 이용한 정규화 x_train = (x_train - x_min) / (x_max-x_min) x_test = (x_test - x_min) / (x_max-x_min) ________________________________________________________________________ # 방법 2. # 모듈 불러오기 from sklearn.preprocessing import MinMaxScaler # 정규화 scaler = MinMaxScaler() x_train = scaler.fit_transform(x_train) x_test = scaler.transform(x_test) ______________________________________________________ # 이후 과정은 모델링 과정이다. - 회귀 문제 from sklearn.neighbors import KNeighborRegressor 을 사용한다. -분류 문제 from sklearn.neighbors import KNeighborClassifier 을 사용한다. model = KNeighborsClassifier(n_neighbors=3) # n_neighbors의 최선 값(k)을 찾는 것도 중요 함. 나중에 배운데