👩‍💻/pandas

4. 머신러닝 데이터 분석(2) - 1

글로랴 2021. 2. 15. 21:49

KNN, k-neareast-neighbors

새로운 관측값이 주어지면 기존 데이터 중에서 가장 속성이 비슷한 k개의 이웃을 먼저 찾는다.

그리고 가까운 이웃들이 갖고 있는 목표 값과 같은 값으로 분류하여 예측한다.

 

전통적으로 k-NN 알고리즘은 유클리드 거리(Euclidean distance)를 사용한다. (수치형 데이터를 다룬다.)

 

(1) 장단점

🥰 😥
- 단순하고 효율적이다.
- 기저 데이터 분포에 대한 가정을 하지 않는다.
- 훈련 단계가 빠르다.

- 적절한 k의 선택이 필요하다.
- 분류 단계가 느리다.
- 명목 특징과 누락 데이터에 대한 추가 처리가 필요하다.

 

🚨🙋‍♀️ 적절한 k값 선택이란? 🤔

k값에 따라 예측의 정확도가 달라지므로, 적절한 k값을 찾는 것이 매우 중요하다.

k값이 클수록 노이즈가 많은 데이터로 인한 영향이나 분산은 감소하지만,

작더라도 중요한 패턴을 무시하는 위험을 감수하는 학습자로 편향될 수 있다.

 

즉, 과적합(overfitting) 또는 과소적합(underfitting)될 수 있다.

 

 

(2) 모형 학습 및 검증

# KNN 분류 모형 
from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=5)

# 모형 학습
knn.fit(x_train, y_train)

# 모형 예측
y_hat = knn.predict(x_test)

print(y_hat[0:10])           # 예측값  [0 0 1 0 0 1 1 1 0 0]
print(y_test.values[0:10])   # 실제값  [0 0 1 0 0 1 1 1 0 0]
# 모형 성능 평가
# Confusion Matrix 계산
from sklearn import metrics
knn_matrix = metrics.confusion_matrix(y_test, y_hat)
print(knn_matrix)

print('\n')

# 평가 지표 계산
knn_report = metrics.classification_report(y_test, y_hat)
print(knn_report)

 

반응형