본문 바로가기
Python notes/Python Errors

Python Errors) ValueError: endog must be in the unit interval. 에러 해결

by 성실한 나무 2022. 9. 16.

#1. statsmodels로 Logistic Regression을 하고 있었는데 만난 또 다른 에러...

ValueError: endog must be in the unit interval

 에러 내용을 살펴 보니, 값에 문제가 있어서 나는 ValueError이고, endog가 단위 간격에 있어야 한다고 했다. 이게 무슨 말일까. 여튼 데이터 값 중에 문제가 있는 것 같은데 이 상태로는 fitting을 할 수 없었다. 희한한 점은 sklearn의 LogisticRegression에서는 에러가 나지 않았다.

endog must be in the unit interval

 

 

#2. 문제 해결 !

알고보니, statsmodels의 로지스틱 회귀의 경우 타겟 클래스 값이 0과 1로만 입력이 되어야 한다고 한다. 내 데이터에서의 y값은 1과 2로 되어 있었다. 그래서 1을 0으로 2를 1로 변경해주었더니 무사히 회귀 적합할 수 있었다.

 참고로 map 함수는 이제 사용하면 안 되고(처음에 map을 써서 했더니 데이터 전체에 있는 1과 2들이 다 0과 1로 바뀌어버림), 데이터프레임.loc[ i, 'column명'] = 0 이런 식으로 아래와 같이 for문의 i를 사용해서 반복문을 돌려주면서 일일이 입력을 해야 warning message가 뜨지 않는다.

댓글