안녕하세요! mj입니다.
오늘은 KNN(최근접 이웃 알고리즘)을 사용하여 분류 문제를 해결하는 방법에 대해 알아보겠습니다.
KNN 알고리즘이란?
KNN은 데이터 포인트를 분류할 때 가장 가까운 K개의 이웃을 참조하는 간단하면서도 효과적인 알고리즘입니다. 이 알고리즘은 주로 분류 문제에 사용됩니다. 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값을 변경하여 모델의 성능을 비교해 보겠습니다. 다음은 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