-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
미해결
pred 의 음주예측값에 대한 rmsle
21.06.10 22:22 작성 조회수 205
0
1.
pred 값을 살펴보면 음수인 값이 다수 있는 것으로 확인이 되는데,
이 값을 그대로 rmsle 함수에 넣으면 nan 이 나와야 정상아닌가요?? 음수가 포함된 array 를 넣으면 nan이 나오는데, bike_sharing 실습시에는 정상적으로 산출이 되네요
2.
def rmsle(test, pred):
log_test = np.log1p(test)
log_pred = np.log1p(pred)
rmsle = np.sqrt(mean_squared_error(log_test, log_pred))
return rmsle
이런 식으로 rmsle 를 정의하면 안되나요?
nan 이슈로 에러가 뜹니다만.... 이유를 잘 모르겠네요 ㅜ
음수를 다루는 방식의 차이인 것 같은데 설명부탁드립니다!!
답변을 작성해보세요.
0
권 철민
지식공유자2021.06.11
이게 numpy 연산과 Pandas Series 연산이 서로 달라서 그렇군요.
아래 식에서 rmsle(y, pred)에서 인자로 들어오는 y가 Pandas Series입니다.
squared_error 계산식은 Pandas Series가 되고, NaN이 포함됩니다. 이 Series에 np.mean(squared_error)를 적용하면 NaN이 제외되고 mean이 적용됩니다. 그런데 이걸 Series가 아니라 numpy array로 적용하게 되면 nan 이슈가 발생하는 군요.
def rmsle(y, pred):
log_y = np.log1p(y)
log_pred = np.log1p(pred)
squared_error = (log_y - log_pred) ** 2
rmsle = np.sqrt(np.mean(squared_error))
return rmsle
답변 1