👩💻/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)
반응형