오늘은 KNN(최근접 이웃 알고리즘)을 사용하여 분류 문제를 해결하는 방법에 대해 알아보겠습니다.
KNN은 데이터 포인트를 분류할 때 가장 가까운 K개의 이웃을 참조하는 간단하면서도 효과적인 알고리즘입니다. 이 알고리즘은 주로 분류 문제에 사용됩니다. KNN의 기본 아이디어는 비슷한 데이터 포인트들이 같은 클래스를 공유한다는 것입니다.
이제 KNN 알고리즘을 파이썬으로 구현해 보겠습니다. 예를 들어, 유명한 아이리스 데이터셋을 사용하여 꽃의 종류를 분류해 보겠습니다.
pip install numpy pandas scikit-learn
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 아이리스 데이터셋 로드
iris = load_iris()
X = iris.data
y = iris.target
# 데이터셋을 학습용과 테스트용으로 나누기
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# KNN 모델 생성
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(f"정확도: {accuracy:.2f}")
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
정확도: 1.00
위의 결과는 모델이 테스트 데이터에 대해 100% 정확도를 달성했음을 보여줍니다.
K값을 변경하여 모델의 성능을 비교해 보겠습니다. 다음은 K값을 1에서 5까지 변화시킨 결과입니다:
for k in range(1, 6):
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print