[python] scikit-learn을 사용한 k-최근접 이웃 알고리즘

목차

소개

k-최근접 이웃 알고리즘은 지도 학습 중 하나로, 새로운 데이터를 기존 데이터와 비교하여 가까운 이웃들의 레이블을 참고하여 예측하는 분류 알고리즘입니다. 이 알고리즘은 간단하면서도 효과적인 알고리즘이며, scikit-learn 라이브러리를 사용하여 구현할 수 있습니다.

k-최근접 이웃 알고리즘이란?

k-최근접 이웃 알고리즘은 분류 문제를 해결하는데 사용되며, 새로운 데이터 포인트와 가장 가까운 k개의 이웃을 찾아서 이웃들의 레이블을 보고 예측합니다. k값은 사용자가 지정하며, 일반적으로 홀수로 설정하여 다수결 방식으로 레이블을 결정합니다. 이 알고리즘은 거리를 기반으로 하기 때문에 데이터의 스케일에 영향을 받을 수 있으며, 데이터가 많으면 계산 시간이 오래 걸릴 수 있습니다.

scikit-learn을 사용한 k-최근접 이웃 알고리즘

scikit-learn은 파이썬에서 많이 사용되는 머신러닝 라이브러리로, k-최근접 이웃 알고리즘 또한 제공하고 있습니다. scikit-learn을 사용하면 간단한 코드로 k-최근접 이웃 알고리즘을 구현할 수 있습니다.

scikit-learn의 k-최근접 이웃 알고리즘은 KNeighborsClassifier 클래스를 사용하여 구현할 수 있습니다. 이 클래스는 데이터셋과 타겟 값으로 모델을 학습시키고, predict 메서드로 예측을 수행할 수 있습니다. 모델의 성능을 평가하려면 score 메서드를 사용합니다. 또한, 알고리즘의 성능을 향상시킬 수 있는 매개변수들을 설정할 수 있습니다.

예제 코드

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 데이터셋을 준비합니다.
X = [[0, 0], [1, 1], [2, 2], [3, 3]]
y = ['A', 'A', 'B', 'B']

# 데이터셋을 훈련 데이터와 테스트 데이터로 분할합니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# k-최근접 이웃 알고리즘 모델을 생성합니다.
knn = KNeighborsClassifier(n_neighbors=3)

# 훈련 데이터로 모델을 학습시킵니다.
knn.fit(X_train, y_train)

# 테스트 데이터로 예측을 수행합니다.
y_pred = knn.predict(X_test)

# 예측 결과의 정확도를 계산합니다.
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)

위의 코드는 scikit-learn을 사용하여 k-최근접 이웃 알고리즘을 구현하는 간단한 예제입니다. 데이터셋을 준비하고, 훈련 데이터와 테스트 데이터로 분할한 후에 모델을 생성하고 학습시킨 후, 테스트 데이터로 예측을 수행하고 정확도를 계산합니다.

참고 자료