소개
이 프로젝트에서는 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) 회귀 알고리즘을 구현하는 방법을 배우게 됩니다. 이 단계를 완료하려면 아래 단계를 따르세요:
선호하는 코드 편집기에서
knn_regression.py파일을 엽니다.knn(train_data, train_labels, test_data, k)함수를 찾습니다. 이 함수는 KNN 회귀 알고리즘의 주요 구현 부분이 됩니다.train_data매개변수는 알려진 샘플의 특징 데이터이고,train_labels는 알려진 샘플의 목표 값이며,test_data는 단일 미지 샘플의 특징 데이터이고,k는 K-최근접 이웃에 사용되는 가장 가까운 이웃의 수를 나타냅니다.knn()함수 내부에서test_data와 모든 훈련 샘플 간의 유클리드 거리 (Euclidean distance) 를 계산하는 것으로 시작합니다.numpy.sqrt()및numpy.sum()함수를 사용하여 유클리드 거리를 계산할 수 있습니다.
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
- 다음으로, 거리를 정렬하고 처음
k개의 인덱스를 가져와서k개의 가장 가까운 이웃의 인덱스를 가져옵니다.
nearest_indices = np.argsort(distances)[:k]
nearest_indices를 사용하여k개의 가장 가까운 이웃의 레이블을 검색합니다.
nearest_labels = train_labels[nearest_indices]
- 단일 미지 샘플
test_data에 대한 예측 목표 값을 얻기 위해k개의 가장 가까운 이웃 레이블의 평균을 계산합니다.
predicted_label = np.mean(nearest_labels)
round()함수를 사용하여 예측된 레이블을 최대 2 자리 소수점까지 반올림합니다.
predicted_label = round(predicted_label, 2)
- 마지막으로, 단일 미지 샘플
test_data에 대한 예측 목표 값을 반환합니다.
return predicted_label
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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



