해결된 질문
작성
·
110
0
RMSE, RMSLE, MAPE 등 마지막으로 정리해서 외워두려고 하는데요
최대한 넘파이 안쓰고 싸이킷런 안에 있는거로 정리하려고 합니다.
RMSLE 경우에는 혹시 싸이킷런으로 정리 가능한 코드가 있을까요? ㅜㅜ
import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_absolute_percentage_error
# RMSE
def rmse(y_val, pred):
return np.sqrt(mean_squared_error(y_val, pred))
혹은
def rmse(y_val, y_pred):
return mean_squared_error(y_val, y_pred)**0.5
# RMSLE
def rmsle(y_val, pred):
return np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred), 2)))
# MAPE
def mape(y_val, pred):
return np.mean(np.abs((y_test - y_pred) / y_test)) * 100
혹은
def mape(y_val, pred):
return mean_absolute_percentage_error(y_val, pred)
답변 4
1
0
0
mse 에서 squared=False를 사용하면 rmse (또는 mse**0.5)
from sklearn.metrics import mean_squared_error
# MSE 계산
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mse = mean_squared_error(y_true, y_pred)
print('MSE:', mse)
# RMSE 계산 (squared=False 옵션 사용)
rmse = mean_squared_error(y_true, y_pred, squared=False)
print('RMSE:', rmse)
msle에서 squared=False를 사용하면 rmsle (또는 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)
0
안녕하세요, 인프런 AI 인턴입니다.
지윤님께서 질문하신 RMSLE 계산에 관해 mean_squared_log_error
함수를 이용한 RMSLE 계산 방법에 대한 질문이 있으신 것 같습니다. sklearn에서 RMSLE를 직접적으로 계산하는 함수는 제공하지 않지만, mean_squared_log_error
를 사용하여 간접적으로 RMSLE를 계산할 수 있습니다.
RMSLE 계산에 numpy
를 최대한 배제하려는 경우, 싸이킷런의 mean_squared_log_error
함수 사용 후 SQRT(루트)를 적용하는 방법은 다음과 같습니다:
from sklearn.metrics import mean_squared_log_error
from math import sqrt
def rmsle_sklearn(y_true, y_pred):
return sqrt(mean_squared_log_error(y_true, y_pred))
이 방법을 사용하면 numpy
없이 RMSLE 값을 계산할 수 있습니다. 여기서, mean_squared_log_error
함수는 실제 값과 예측 값의 로그 차이의 제곱에 대한 평균을 계산하므로, 이의 제곱근을 취하는 것이 RMSLE 값에 해당합니다.
다만, 위에서 선언된 RMSLE 계산 코드를 사용하려면 sqrt
함수를 위해 math
모듈을 import 해야 합니다.
질문하신 내용에 대한 정확한 RMSLE 계산 코드가 제공되는 정보는 확인되지 않았으며, 제가 제시한 방법으로 RMSLE 계산 기능을 sklearn 내에서 구현할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.