해결된 질문
작성
·
104
·
수정됨
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 라고 뜹니다 ㅠ 뭐가 문제인 건가요?
<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
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)
mape는 분모에 0이 있으면 에러가 발생할 수 있어요!
일반적으로는 예측값(분모)를 매우 작은 값으로 처리하는데, 시험이라면 다른 평가지표 사용을 추천합니다.