인프런 커뮤니티 질문&답변

박태준님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형2 모의문제2

rmse, mape 오류

해결된 질문

24.06.19 11:55 작성

·

67

·

수정됨

0

<rmse>

import numpy as np

def rmsle(y_test, y_pred):

  return np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred)), 2))

 

print(np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred)), 2)))

 

이렇게 입력하면 예측값은 안뜨고 power() takes from 2 to 3 positional arguments but 1 were given 라고 뜹니다 ㅠ 뭐가 문제인 건가요?

Screenshot_20240619_114459_Samsung Internet.jpg

<mape>

import numpy as np

def mape(y_val, pred):

return np.mean(np.abs((y_val - pred)/y_val))**100

 

print(np.mean(np.abs((y_val - pred)/y_val))**100)

 

이렇게 입력하면 예측값은 안뜨고 inf라고만 뜹니다. rmse와 mape 둘다 왜 예측값은 안뜨는건가요?

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 20. 02:12

1 rmsle

수식이 잘못되었어요

def rmsle(y_test, y_pred):
    return np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred), 2)))

또는 msle**0.5

from sklearn.metrics import mean_squared_log_error

# MSLE 계산
y_true = [3, 5, 2.5, 7]
y_pred = [2.5, 5, 4, 8]
msle = mean_squared_log_error(y_true, y_pred)
print('MSLE:', msle) 

# RMSLE 계산 (squared=False 옵션 사용)
rmsle = mean_squared_log_error(y_true, y_pred, squared=False)
print('RMSLE:', rmsle) 

 

  1. mape는 분모에 0이 있으면 에러가 발생할 수 있어요!


    일반적으로는 예측값(분모)를 매우 작은 값으로 처리하는데, 시험이라면 다른 평가지표 사용을 추천합니다.