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)
sklearn.utils.class_weight.compute_class_weight
scikit-learn.org
그러나 이 문제는 아주 간단하게 해결이 가능하다.
인자를 명시적으로 매칭해주면 된다.
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. 인자 개수가 잘 안 맞을 때에는 대입할 변수명을 명시적으로 매칭해보기
그럼 끝!

'Archive > CS' 카테고리의 다른 글
| [Package][pandas] 데이터(csv, excel) 불러오기 & 저장하기 (0) | 2023.05.09 |
|---|---|
| [환경구축][Conda] 가상환경 생성/제거/(비)활성화/리스트 보기 (0) | 2023.05.09 |
| [환경구축][TensorFlow] 모델 시각화 함수 plot_model() 작동 오류 해결 (부제: 패키지 설치를 했는데도 자꾸 설치를 하라고 한다?) (0) | 2023.04.27 |
| Python 환경 구축: Jupyter config 파일 생성 및 시작 위치 변경하기 (0) | 2023.04.27 |
| [Package][버전확인] pip로 설치한 패키지 버전 확인 방법 2가지 (0) | 2023.04.27 |