머신러닝-3단계(KNN-분류/회귀)

joooon na·2023년 8월 30일
0

머신러닝

목록 보기
5/11
  • 1) 분류 유형뿐만 아니라 회귀 유형에도 사용된다.
    • 분류 -> 가장 많이 포함된 유형으로 분류
    • 회귀 -> K개 값의 평균을 계산하여 값을 예측

  • 2) K값의 중요성
    • K가 train 갯수라면, 평균값이 나온다. 즉, k의 수가 증가하면 모델은 단순해진다. 그래서 적절한 수의 k를 선택하는게 중요하다. (디폴트 = 5, k는 홀수로 설정)

  • 3) 거리 계산 : 유클리드 거리와 맨하튼 거리가 있다.

  • 4) 스케일링
    • x와 y의 데이터 단위의 차이가 있을 수 있다. 그래서 1. 정규화 방법 or 2. 표준화 방법을 이용해서 데이터 스케일링을 한다. 우리는 정규화 방법을 사용한다.

  • 5) 정규화 : xnorm=xxminxmaxxmin\huge x_{norm}=\frac{x-x_{min}}{x_{max}-x_{min}}
    - 정규화 할 때, 주의점은 비율 fitting을 x_train으로 하고, x_test에 적용 할 때는 fitting된 걸로 해줘야 된다.

  • 6) 정규화는 KNN 알고리즘뿐만 아니라, x_train 칼럼들의 데이터 단위가 1000단위 1단위 10단위 이렇게 차이가 많이 날 때도 정규화를 시켜준다.

ex)

# 데이터 분리 과정을 하고 다음 과정이 정규화이다.

# 방법 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)을 찾는 것도 중요 함. 나중에 배운데
profile
배고프다

0개의 댓글