인공지능/머신러닝

[머신러닝3] K-Nearest Neighbor

공부짱짱열심히하기 2022. 12. 2. 13:10

최근접 이웃 알고리즘(K-NN)

 

 

 

어떠한 레이블링 되어있는 데이터에 새로운 데이터가 생겼을때

이데이터가 과연 어느쪽과 가까운지를 판단하는 알고리즘

인접한 데이터를 인공지능이판단하여 비슷한 속성으로 데이터를 진단해줌

 


 

 

동일하게 연봉과 나이 성별, 구매여부가 있는 데이터

이데이터를 KNN 머신러닝을 통해

새로운데이터가 나타났을때 구매한 쪽과 구매하지 않은쪽과 어느쪽이 더 가까운 이웃인지 분류를 통해 예측하기

 

 


트레이닝 기본

1. nan확인

2.x와y분리

3.문자열이 있다면 숫자로 바궈주기

4.피셔츠케일링을 통해 값 맞춰주기

5.트레이닝 / 테스트 셋으로 분리시키기

---------------------------------------------------------- 

6.모델링하기

7.성능평가

[머신러닝0] 머신러닝의 기초(총정리) (tistory.com)

 

[머신러닝0] 머신러닝의 기초(총정리)

머신러닝이란 데이터를 이용하여 데이터 특성과 패턴을 학습하여 그결과 밭으로 미지의 데이터에 대한 결과값을 예측하는것 머신러닝의 종류도 다양하며 용도나 상황에 따라 이용하는 툴도 정

seonggongstory.tistory.com

 


 

 

from sklearn.neighbors import KNeighborsClassifier

 

 KNeighborsClassifier()

 파라미터를 사용하기 위해선 sklearn의 라이브러리를 import하고

 

파라미터변수 = KNeighborsClassifier()

스플릿해준 트레이닝용 x데이터와 y데이터를 넣어준다

 

이렇게 트레이닝한 인공지능의 성능을 확인해볼때

 

컨퓨전 메트릭스, accuracy_score 를통해 확인하면 좋음

 

from matplotlib.colors import ListedColormap
X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, 
                               stop = X_set[:, 0].max() + 1, step = 0.01),
                     np.arange(start = X_set[:, 1].min() - 1, 
                               stop = X_set[:, 1].max() + 1, step = 0.01))
plt.figure(figsize=[10,7])
plt.contourf(X1, X2, classifier.predict(
            np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Classifier (Test set)')
plt.legend()
plt.show()

 

 

   array([[50,  8],
             [ 4, 38]], 
  초록구역안에 빨간점 8개 빨간영역에 초록점 4개 확인 

 

 

 


모델링
from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier()
n_neighbor = n 이웃하는 숫자 표시

classifier.fit(X_train, y_train)