충청남도 논산시 연산면에 대한 그래프였네요. 그런데 무엇이 문제여서 이렇게 수긍하기 어려운 결과가 나온 것일까요?
코드가 잘 실행이 되어 그래프까지 그려진 것을 보면 코드의 문제가 아니라는 것을 알 수 있습니다. 그런데 이상한 지역을 찾은 것을 보니 인구 구조가 가장 비슷한 지역을 찾는 알고리즘이 잘못 설계된 것 같네요.
문제를 해결하는 과정을 다시 천천히 되돌아보겠습니다. 여러분도 어디가 문제인지 잠시 생각해 보세요!
➊ 전국의 모든 지역 중 한 곳(B)을 선택한다.
➋ 궁금한 지역 A의 0세 인구 비율에서 B의 0세 인구 비율을 뺀다.
➌ ➋를 100세 이상 인구수에 해당하는 값까지 반복한 후 각각의 차이를 모두 더한다.
➍ 전국의 모든 지역에 대해 반복하며 그 차이가 가장 작은 지역을 찾는다.
아마 처음 이 알고리즘을 설계할 때부터 문제를 발견한 사람도 있을 것입니다. 혹은 지금 다시 돌아보면서 어느 부분에서 문제가 있다는 것을 발견했을지도 모릅니다. 한번 출력해 볼까요?
print(np.sum(home - away))
실행 결과
-3.25260651746e-19 -4.55364912444e-18 -1.08420217249e-18 5.20417042793e-18 1.08420217249e-17 (생략)