문제
잘 짜놓은 k-neareast neighbor 머신러닝 코드가 왜인지 이상한 결과를 뱉어낸다. 여기저기에 $std::cout$를 찍어서 확인해보지만 어디 하나 이상한 데가 없어서 당황스럽다. 왜인지 distance를 잘 계산은 하는데 계속 같은 점에 대해서만 하는 것 같아서 이상하다.
원인
알고보니(그래도 1시간 정도만에 찾았다) 이중 for문에서 i와 j를 헷갈려서 쓴 부분이 있었다. 말하자면 j번째 training sample과의 거리를 구해야하는데, i번째 sample과의 거리를 구하고 있었다. 그러니 당연히 대다수의 distance가 같게 나타난 것이었다.
해결방법
오타를 바로잡았다.
예방
이건 클린코드와 관련된 문제다. 이와 관련된 공통적인 조언은 의미있는 이름을 지으라는 것이다. 내 경우에는 $neighborNum$이라든지 $train\_idx$ 같은 걸 사용할 수 있을 것이다.
만약 처음부터 내가 100% 작성한 코드였다면 이중 for문 자체를 사용하지 않았을 것이다.
참고자료
https://this-programmer.tistory.com/101
https://velog.io/@doforme/chap-2.-의미있는-이름
'컴퓨터' 카테고리의 다른 글
GPU를 이용한 병렬화에서 고려해야 할 요소 (0) | 2024.06.21 |
---|
댓글