더북(TheBook)

충청남도 논산시 연산면에 대한 그래프였네요. 그런데 무엇이 문제여서 이렇게 수긍하기 어려운 결과가 나온 것일까요?

코드가 잘 실행이 되어 그래프까지 그려진 것을 보면 코드의 문제가 아니라는 것을 알 수 있습니다. 그런데 이상한 지역을 찾은 것을 보니 인구 구조가 가장 비슷한 지역을 찾는 알고리즘이 잘못 설계된 것 같네요.

문제를 해결하는 과정을 다시 천천히 되돌아보겠습니다. 여러분도 어디가 문제인지 잠시 생각해 보세요!

전국의 모든 지역 중 한 곳(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
(생략)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.