[ML] kNN(k Nearest Neighber)

박미영·2023년 5월 25일
0

DataSchool StudyNote - ML

목록 보기
15/19

📌kNN

k Nearest Neighber

  • 새로운 데이터가 있을 때, 기존 데이터의 그룹 중 어떤 그룹에 속하는지를 분류하는 문제
  • k는 몇 번째 가까운 데이터까지 볼 것인가를 정하는 수치
  • 단점: 거리를 계속 측정해야한다.




k=5로 설정하면 5번째까지 가까운 데이터

k값에 따라 결과값이 바뀔 수 있다.
(k=3 -> 세모, k=5 -> 동그라미)



- 유클리드 기하

거리를 계산하는 것



단위에 따라 바뀔 수도 있다 - 표준화 필요



- kNN 장단점

  • 실시간 예측을 위한 학습이 필요치 않다.
  • 결국 속도가 빨라진다.
  • 고차원 데이터에는 적합하지 않다.




- iris 데이터 예제

1. 데이터 전처리

from sklearn.datasets import load_iris

iris = load_iris()
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, 
                                                    test_size=0.2, random_state=13, stratify=iris.target)



2. kNN 학습

kNN에도 fit이 있으나 프로그래밍 언어 sklearn 절차상 fit을 하는 것 -> 학습할게 없음
DecisionTreeClassifier, RandomForestClassifier, LogisticRegression 같은 fit이 아님

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)



3. accuracy 확인

from sklearn.metrics import accuracy_score

pred = knn.predict(X_test)
print(accuracy_score(y_test, pred))



4. 성과 확인

from sklearn.metrics import classification_report, confusion_matrix

print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))

setosa는 10개 다 맞추고, versicolor는 9개 맞추고 한 개 틀렸는데 virginica라고 했다.
virginica는 10개 다 맞췄다.




"이 글은 제로베이스 데이터 취업 스쿨 강의를 듣고 작성한 내용으로 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."

0개의 댓글