본문 바로가기
Computer Science/Errors

[Python] KeyError: 0 (sklearn predict function error) 해결 방법

by Henry Cho 2022. 12. 5.
728x90

KeyError: 0 (sklearn predict function error) 해결 방법

포스트 난이도: HOO_Junior


# KeyError: 0 (sklearn predict function error) 

 

sklearn은 Scikit-learn의 줄임말로써 대표적인 머신러닝 라이브러리 중에 하나이다. 머신러닝의 기초를 배우고 구조 데이터를 처리한다고 할 때 사용하는 라이브러리 중 하나가 바로 sklearn인 셈이다.

 

sklearn에서 predcit function을 사용하려고 했을때 KeyError:0라는 에러가 발생하는 경우가 있다. KeyError:0의 원인은 작성된 코드에 따라 원인이 다양하다. 하지만 일반적으로 KeyError:0가 발생할 경우 defaultdict() 함수를 통해서 이 문제를 손쉽게 해결할 수가 있다.

 

그럼에도 불구하고 sklearn의 predict을 사용하는 과정에서 KeyError:0 문제가 해결되지 않는다면 코드 자체의 작성에 문제가 있어서 원하는 dictionary가 제대로 확인되지 않고 있기 때문일 수도 있다.

 

#HOOAI
#잘못된 코드
for i in range(n):
    prediction = model_.predict(x_test[i])

 

예를 들어, predict function을 for loop을 통해서 예측하는 결과를 산출하도록 코드를 작성한 경우 이러한 에러가 발생할 수 있다. 우선 predict 자체로 굳이 for loop을 한 번 더 써줘서 함수를 실행할 필요가 없다.

 

한마디로 for loop을 통해서 x_test[i] 배열을 하나씩 돌린다고 코드를 작성할 필요가 없기 때문이다. 따라서 아래와 같이 수정하면 KeyError: 0 문제는 해결이 된다.

 

#HOOAI
#올바른 코드
prediction = model.predict(x_test)
newPrediction= prediction.reshape(1000,1)

 

또한 predict function을 통해서 x_test를 돌릴 경우는 reshape() function을 통해서 test 범위 지정을 해주어야 한다. reshape 되는 데이터 수는 테스팅되는 데이터 수에 따라서 달라지기 때문에 Run을 돌리고자 하는 데이터 수를 우선적으로 파악해두는 것이 좋다.

 

하지만 데이터 수가 얼마인지 확실하지 않는다면, predict을 해주고 Run을 했을 때 나오는 에러 코드에서 데이터 수를 간단하게 확인할 수가 있다.


 

728x90

댓글