K-최근접 이웃 회귀 알고리즘 구현

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 Python 을 사용하여 K-최근접 이웃 (KNN, K-Nearest Neighbors) 회귀 알고리즘을 구현하는 방법을 배우게 됩니다. KNN 은 널리 사용되는 머신 러닝 방법으로, 일반적으로 분류 문제에 사용됩니다. 하지만 연속적인 목표 값을 예측하는 회귀 작업에도 적용할 수 있습니다.

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • KNN 회귀 알고리즘과 작동 원리 이해
  • Python 에서 KNN 회귀 알고리즘 구현 방법
  • 테스트 데이터와 훈련 데이터 간의 유클리드 거리 (Euclidean distance) 계산 방법
  • k 개의 가장 가까운 이웃을 식별하고 해당 목표 값을 검색하는 방법
  • 테스트 데이터의 출력을 예측하기 위해 k 개의 가장 가까운 이웃의 목표 값 평균을 계산하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • Python 을 사용하여 KNN 회귀 알고리즘을 처음부터 구현
  • KNN 알고리즘에서 거리 측정으로 유클리드 거리 (Euclidean distance) 사용
  • KNN 회귀 알고리즘을 적용하여 연속적인 목표 값 예측
  • 머신 러닝 알고리즘 구현에 대한 실질적인 기술 시연

KNN 회귀 알고리즘 구현

이 단계에서는 Python 을 사용하여 K-최근접 이웃 (KNN, K-Nearest Neighbors) 회귀 알고리즘을 구현하는 방법을 배우게 됩니다. 이 단계를 완료하려면 아래 단계를 따르세요:

  1. 선호하는 코드 편집기에서 knn_regression.py 파일을 엽니다.

  2. knn(train_data, train_labels, test_data, k) 함수를 찾습니다. 이 함수는 KNN 회귀 알고리즘의 주요 구현 부분이 됩니다.

  3. train_data 매개변수는 알려진 샘플의 특징 데이터이고, train_labels는 알려진 샘플의 목표 값이며, test_data는 단일 미지 샘플의 특징 데이터이고, k는 K-최근접 이웃에 사용되는 가장 가까운 이웃의 수를 나타냅니다.

  4. knn() 함수 내부에서 test_data와 모든 훈련 샘플 간의 유클리드 거리 (Euclidean distance) 를 계산하는 것으로 시작합니다. numpy.sqrt()numpy.sum() 함수를 사용하여 유클리드 거리를 계산할 수 있습니다.

distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
  1. 다음으로, 거리를 정렬하고 처음 k개의 인덱스를 가져와서 k개의 가장 가까운 이웃의 인덱스를 가져옵니다.
nearest_indices = np.argsort(distances)[:k]
  1. nearest_indices를 사용하여 k개의 가장 가까운 이웃의 레이블을 검색합니다.
nearest_labels = train_labels[nearest_indices]
  1. 단일 미지 샘플 test_data에 대한 예측 목표 값을 얻기 위해 k개의 가장 가까운 이웃 레이블의 평균을 계산합니다.
predicted_label = np.mean(nearest_labels)
  1. round() 함수를 사용하여 예측된 레이블을 최대 2 자리 소수점까지 반올림합니다.
predicted_label = round(predicted_label, 2)
  1. 마지막으로, 단일 미지 샘플 test_data에 대한 예측 목표 값을 반환합니다.
return predicted_label
  1. knn_regression.py 파일을 저장합니다.
✨ 솔루션 확인 및 연습

KNN 회귀 알고리즘 테스트

이 단계에서는 제공된 예제를 실행하여 KNN 회귀 알고리즘 구현을 테스트합니다.

코드 편집기에서 knn_regression.py 파일을 엽니다.

파일 하단에 다음 테스트 케이스를 추가합니다:

if __name__ == "__main__":
    train_data = np.array(
        [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10]]
    )
    train_labels = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    test_data = np.array([[1.2, 1.3]])

    result = knn(train_data, train_labels, test_data, k=3)
    print(result)

다음 명령을 실행하여 예제를 실행합니다:

python3 knn_regression.py

출력은 단일 미지 샘플에 대한 예측 목표 값으로, 최대 2 자리 소수점까지 반올림됩니다.

2.0

축하합니다! KNN 회귀 알고리즘을 성공적으로 구현하고 제공된 예제로 테스트했습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.