각종 버그 🐞

[Python] math.log 계산시 ValueError: math domain error

hellonero 2023. 2. 1. 00:45

데이터 분석 중에, 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이 되는 상황이 옳은지 판단해보면 될 것 같다.