data-science-summary/summary
KNN (k-neareast neighbor) 분류모델 in python
고수트
2020. 9. 19. 17:51
반응형
<엔지니어는 구현을 못하면 모르는것이다>
KNN (k-neareast neighbor) 분류모델
근처 k개의 가장 가까운 훈련 데이터로 값을 예측하는방법
궁금한 데이터 주변 K 개의 데이터의 클래스가 1 이 제일 많으면 1 이 됨
거리 측정하는 방식에는 유클리디안방식, 맨헤탄 방식등이 있다.
보통 판정하기위해 K 는 홀수로 측정한다.
장점은 쉽고 직관적이고 샘플수가 많은경우 높은 정확도를 가지고 있다.
단점은 느리다.
# KNN (k-neareast neighbor) 분류모델
from sklearn.neighbors import KNeighborsClassifier
X = [[0,1,2], [1,3,5], [1,10,10],[1,2,2],[1,3,4],[2,7,8], [3,3,10]]
y = [0, 0, 1, 0,0,1,1]
# 유클리디안방식
knn = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
knn = KNeighborsClassifier(n_neighbors=3, p=2)
# 맨헤탄 방식
knn = KNeighborsClassifier(n_neighbors=3, metric='manhattan')
knn = KNeighborsClassifier(n_neighbors=3, p=1)
# 학습
knn.fit(X, y)
test_x = [[1,2,3],[1,9,9]]
test_y = [0, 1]
# 예측
knn.predict(test_x)
import numpy as np
# k 에 따른 정확도
k = np.arange(1,8)[::2]
acc =[]
for i in k:
knn =KNeighborsClassifier(n_neighbors=i).fit(X,y)
acc.append(knn.score(test_x, test_y))
for i,j in zip(k,acc):
print('k가 '+ str(i)+'일때 정확도는 ' + str(j))
반응형