본문 바로가기
AI/Machine Learning

[ML] KNN 알고리즘 - AND, XOR 연산

by 안녕나는현서 2021. 4. 29.
728x90

- scikit-learn

  • 파이썬에서 쉽게 사용할 수 있는 머신러닝 프레임 워크, 라이브러리
  • 회귀, 분류, 군집, 차원축소, 특성공학, 전처리, 교차검증, 파이프라인 등 머신러닝에 필요한 기능을 갖춤
  • 학습을 위한 샘플 데이터 제공

 

- KNN(K-Nearest Neighbors, k-최근접 이웃 알고리즘)

  • 새로운 데이터 포인트와 가장 가까운 훈련 데이터셋의 데이터 포인트를 찾아 예측
    • 이웃이 적을 수록 모델의 복잡도 상승 → 과대적합
    • 이웃이 전체 데이터의 개수와 같아지면 항상 가장 많은 클래스로 예측 → 과소적합
  • k값에 따라 가까운 이웃의 수가 결정
  • 분류와 회귀에 모두 사용 가능(지도학습)
  • 결정경계(Decision Boundary) : 클래스 분류하는 경계
  • 데이터 포인트(sample) 사이 거리 값 측정 방법 : 유클리디언 거리 공식(EUclidean Distance)
    • 거리를 측정하기 때문에 같은 scale을 같도록 정규화 필요
  • 장점
    • 이해하기 매우 쉽고 조정없이도 좋은 성능 발휘하는 모델
  • 단점
    • 훈련 데이터 세트가 크면 예측이 느림
    • 수 백개 이상의 많은 특성을 가진 데이터 세트와 특성 값 대부분이 0인 희소(sparse)한 데이터 세트에는 잘 동작하지 않음
    • 전처리 과정이 중요

 

- AND 연산 : 데이터의 모든 값이 1이여야 1을 반환

import pandas as pd

 

 

1. Data Collection

data1 = [0,0,0]
data2 = [1,0,0]
data3 = [0,1,0]
data4 = [1,1,1]

data = [data1, data2, data3, data4]

input_df = pd.DataFrame(data, columns=['feature1', 'feature2', 'target'])
input_df

 

2. Data Perparation

X_train = input_df.loc[:, 'feature1':'feature2']
y_train = input_df.loc[:, 'target']
X_train

y_train

 

3. Choose a model

from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors = 3)

 

4. Train the model

knn_model.fit(X_train, y_train)

 

5. Evaluate the model

X_test = [[0,0], [1,1], [0,1], [1,0]]
y_test = [0, 1, 0, 0]

knn_model.score(X_test, y_test)

 

6. Hyperparameter tuning

knn_model = KNeighborsClassifier(n_neighbors = 1)
knn_model.fit(X_train, y_train)
knn_model.score(X_test, y_test)

 

7. Make predictions

data = [[0,1], [0,0], [1,1], [1,0]]
knn_model.predict(data)

 

 

- XOR 연산 : 두 입력값이 같으면 0, 다르면 1을 반환

import pandas as pd

 

1. Data Collection

data = [[0,0,0],
       [0,1,1],
       [1,0,1],
       [1,1,0]]

df = pd.DataFrame(data, columns=['A','B','XOR'])
df

 

2. Data Preparation

X_train = df.loc[:, :'B']
y_train = df.loc[:, 'XOR']

 

3. Choose a model

from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors = 1)

 

4. Train the model

knn_model.fit(X_train, y_train)

 

5. Evaluate the model

answer = [0,1,1,0]
metrics.accuracy_score(answer, pre)

 

6. Make predictions

data = [[0,0],
         [0,1],
         [1,0],
         [1,1]]
pre = knn_model.predict(data)
pre

 

 

728x90

'AI > Machine Learning' 카테고리의 다른 글

[ML] 경사하강법- 미분  (0) 2021.05.10
[ML] 붓꽃의 품종 분류(지도학습 / 분류)  (0) 2021.04.29
[ML] KNN - bmi model  (0) 2021.04.29
[ML] 일반화, 과대적합, 과소적합  (0) 2021.04.29
[ML] 머신러닝 기초  (0) 2021.04.29

댓글