🙋🏻‍♀️ 목표
Numpy 에서 제공하는 log 함수에 관한 경고 메시지를 분석한다.

Case 1. 0이 입력된 경우


log() 에 0 값이 들어갔다고 알려주는 경고 메시지이다. log(0)은 음의 무한대 값을 가지기 때문에 -inf(음의 무한대, negative infinity) 값이 반환된다.

-inf 값이 잘 반환되는데 경고 메시지를 반환하는 이유가 무엇일까?
사실 x는 0 값을 가질 때, 정확한 y 값이 없다. 로그 함수 그래프를 보면 x가 1에서 0으로 갈수록 음의 무한대로 발산한다고 표현합니다.


Case 2. 옳지않은 값이 입력된 경우


log1p()에 적합하지 않은 값이 들어갔다고 알려주는 경고 메시지이다.
로그 함수에 음수가 들어가 ‘옳지 않은 값’이 들어갔다고 친절하게 알려주는 경고 메시지이다.
log에 음수를 넣으면, nan 으로 반환한다. (자동 결측치 처리)

🔍 예시로 이해하기

# SalePrice 데이터를 standardscaler로 스케일링 
from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
train[["SalePrice_ss"]] = ss.fit_transform(train[["SalePrice"]])
# 스케일링 후 Log Transformation 
train[["SalePrice_ss_log1p"]] = np.log1p(train["SalePrice_ss"])

# 변수 스케이링 후, Log Transformation 전, 후 기술통계값 비교
train[["SalePrice_ss", "SalePrice_ss_log1p"]].describe()


Log Transformation 전(왼쪽), 후(오른쪽) 기술통계


count_bef = train["SalePrice_ss"].count()
count_aft = train["SalePrice_ss_log1p"].count()
count_neg = train.loc[(train["SalePrice_ss"]+1)< 0, "SalePrice_ss"].count()

count_bef - count_neg == count_aft # True 반환

로그에 음수를 입력하면 nan 값으로 반환하여 count 값에 포함되지 않는다.
위 코드는 nan 값을 반환하는지 확인해 본 결과이다.

👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기