데이터 분석 중에, Entropy를 계산할 일이 있었는데 log를 계산 하는 부분이 있어 math.log를 썼었다.
math.log는 일반적으로 두 개의 인자를 사용하는데, 이를테면,
math.log(2, 2)
처럼 사용한다. 밑이 2인 log2를 의미한다. 내가 사용한 Entropy 계산 식은 이런 코드를 포함하고 있는데,
# ... 중략 ...
-(p * math.log(p, base)
p 값이 0인 경우에 math.log 함수에 "ValueError: math domain error"이 뜬다. Entropy를 계산할 때, p가 0인 경우에 entropy 값을 0으로 처리해주고 싶을 때가 있는데, 위 코드를
(-(p * math.log(p, len(clusters))) if p > 0 else 0)
이렇게 수정해주거나, p자리에 오는 값이 0이 되는 상황이 옳은지 판단해보면 될 것 같다.
'각종 버그 🐞' 카테고리의 다른 글
[Python] googletrans 사용시 TypeError: the JSON object must be str, bytes or bytearray, not NoneType 에러 (0) | 2023.02.01 |
---|