Summary
- 문제 상황: scikit-learn의 compute_class_weight() 사용 시 인자 개수가 다르다는 오류 발생
- 해결 방안: 명시적으로 파라미터명을 매칭해주기
- 주의: 쉽게 패키지 버전의 문제라고 판단하지 말 것 (패키지 버전 꼬이면 최악의 경우 환경 구축을 다시 해야 할 수도 있음!)
Contents
Background
scikit-learn 라이브러리의 compute_class_weight 메소드를 사용하는 중 들어가야 할 인자는 3개인데, 3개를 넣었더니 1개만 넣어야 한다는 오류가 발생했다.
오류 메시지: TypeError: compute_class_weight() takes 1 positional argument but 3 were given
scikit-learn 공식 문서에서도 들어가야 할 인자가 3개로 지정되어 있어 버전 문제인가 한참을 헤매었다.
scikit-learn 공식 문서 (https://scikit-learn.org/stable/modules/generated/sklearn.utils.class_weight.compute_class_weight.html)
그러나 이 문제는 아주 간단하게 해결이 가능하다.
인자를 명시적으로 매칭해주면 된다.
Solution
위와 같이 기존에 값만 넣었던 코드에 변수명을 맵핑해주자 잘 작동함을 확인할 수 있었다.
이전 코드
class_wts = compute_class_weight('balanced', np.unique(train_labels), train_labels)
변경된 코드
class_wts = compute_class_weight(class_weight='balanced', classes=np.unique(train_labels), y=train_labels)
이 문제로 패키지 설치했다 지웠다 하면서 오히려 설정해둔 환경이 꼬이는 바람에 고생을 꽤 했는데, 이 글을 보는 사람들은 빠르고 간편하게 잘 해결하기를 바란다.
Conclusion
1. 구글링을 충분히 하면서 패키지 버전 변경은 마지노선으로 수행하기!
- 패키지 충돌이 자주 일어나는 문제이다 보니 버전 문제인가 하고 계획없이 버전을 바꿔 설치하면 패키지간 꼬일 수 있음
2. 인자 개수가 잘 안 맞을 때에는 대입할 변수명을 명시적으로 매칭해보기
그럼 끝!
'Developer > AI' 카테고리의 다른 글
[NLP][오류] ko-sentence-transformers 설치 시 발생하는 UnicodeDecodeError를 해결해보자! (1) | 2023.04.24 |
---|