
v1 KNN 회귀 는 단순 평균 — 가까운 이웃과 먼 이웃이 동일 가중. 문제: k 경계 에서 "ˆ{k}번째 이웃" 과 "k+1 번째 이웃" 의 대접이 극단적으로 달라짐 → 불연속적인 예측.
가중치 선택:
weights | 특성 | |
|---|---|---|
'uniform' | 1 | v1 basic, 경계 불연속 |
'inverse' | 가까우면 많이, 먼 이웃은 거의 무시 | |
'gaussian' | 부드러운 decay, σ 를 중앙 거리로 자동 설정 |
'gaussian' 의 는 각 테스트 점의 k 번째 이웃 거리 를 사용 → scale-adaptive.
함수 knn_regressor_weighted(X_train, y_train, X_test, k, weights='uniform') 를 완성하세요.
(M,) 예측값.weights ∈ {'uniform', 'inverse', 'gaussian'}.'gaussian' 에서 = 각 테스트 점의 k-th 이웃 거리 + .| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 shape (M,) | |
| 2 | weights='uniform' → v1 과 일치 | |
| 3 | weights='inverse': 정확 매치 (d=0) 시 예측 = 해당 y | |
| 4 | weights='gaussian': 가까운 이웃 지배 | |
| 5 | 노이즈 데이터에서 weighted 가 uniform 보다 MSE 낮음 (평균) | |
| 6 | sklearn KNeighborsRegressor(weights='distance') 와 일치 | |
| 7 | k=N, weights='uniform' → 전체 평균 |
코드를 작성하고 Run 을 눌러보세요.