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

지윤님의 프로필 이미지
지윤

작성한 질문수

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

회귀분석 관련하여 질문드립니다.

해결된 질문

작성

·

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

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

지윤님, 제가 알려드린 내용중 수정하겠습니다.

rmsle는 msle**0.5로 구해주세요.

시험환경 msle에는 squared 설정이 없네요

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 내에서 구현할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

지윤님의 프로필 이미지
지윤

작성한 질문수

질문하기