본문 바로가기

Python-머신러닝

K-Nearest Neighbors 및 K값

반응형

K-Nearest Neighbors

 

 

 

빨간색이냐 녹색이냐 두개로 분류하는 문제를 해결할 것.

 

- K란: 기존 데이터와 신규데이터의 거리를 계산한다. 계산해서 정렬을 한다.

ㄴ 내 주위에 몇개의 이웃을 확인해 볼것인가를 결정한다.

ㄴ 가장 거리를 가까운 것부터 먼 순으로, 

- K를 5로 정하면, 신규 데이터와 가장 가까운 데이터 수를 5개로 묶어서 빨간게 더 많으면, 빨간색으로 분류한다.

 

- 거리 계산은 피타고라스 정리로 한다.

ㄴ이런 거리를 Euclidean 거리라고 함.

 

- Euclidean 거리에 의해서, 가장 가까운 K개의 이웃을 택한다. 

- 카테고리의 숫자가 많은 쪽으로, 새로운 데이터의 카테고리를 정해버린다.



 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

X = df.loc[: , 'Age' : 'EstimatedSalary']
y = df['Purchased']

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X = scaler.fit_transform(X)

from sklearn.model_selection import train_test_split
X_train,X_test, y_train, y_test = train_test_split(X,y,test_size = 0.2, random_state= 0)

 

- 모델링: KNN을 분류하는 모델

from sklearn.neighbors import KNeighborsClassifier

classifier = KNeighborsClassifier(n_neighbors=11)

- K값 디폴트 값이 5, 홀수여야한다. 짝수로 나오다가 5:5면 어떡해

 

- 훈련

classifier.fit(X_train,y_train)

 

- 검증

y_pred = classifier.predict(X_test)

from sklearn.metrics import confusion_matrix,accuracy_score

cm = confusion_matrix(y_test,y_pred)

 

- 정확도

accuracy_score(y_test,y_pred)

 

반응형