-
카테고리
-
세부 분야
자격증 (데이터 사이언스)
-
해결 여부
해결됨
작업형2 모델 선택 질문 드립니다.
23.11.25 17:06 작성 23.11.25 17:10 수정 조회수 197
1
안녕하세요~ 수강생입니다!
작업형2 유형을 풀다보니 문득 궁금한 점이 있어서 질문 올립니다.
만일 실전에서 회귀문제 RMSE를 묻는 문제라고 가정한다면....
모델을 아래 코드 예시와 같이 다양하게 할 수 있을텐데요..
#### 랜포를 썼을 경우
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(random_state=2023, max_depth=5)
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
def rmse(y_test, y_pred):
return np.sqrt(mean_squared_error(y_test, y_pred))
# print('r2_score:', r2_score(y_val, pred))
# print('mean_absolute_error:', mean_absolute_error(y_val, pred))
# print('mean_squared_error:', mean_squared_error(y_val, pred))
# print('rmse:', rmse(y_val, pred))
#### 부스트를 썼을 경우
from xgboost import XGBRegressor
model = XGBRegressor()
model.fit(X_tr,y_tr)
pred=model.predict(X_val)
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
def rmse(y_test, y_pred):
return np.sqrt(mean_squared_error(y_test, y_pred))
# print('r2_score:', r2_score(y_val, pred))
# print('mean_absolute_error:', mean_absolute_error(y_val, pred))
# print('mean_squared_error:', mean_squared_error(y_val, pred))
# print('rmse:', rmse(y_val, pred)
예를들어 위 예시 코드 중에 랜포가 부스트보다 성능이 좋았다면,
최종 제출해야 하는 것은 아래의 코드처럼 1) 랜포나 부스트 둘중에 성능이 좋은 것을 선택, 2) 각 모델에서 하이퍼파라미터 튜닝을 해본 후에 질문의 RMSE가 성능이 제일 잘 나온 것(하이퍼파라미터 값 고정)으로 쭉 뒤에 코딩하고 제출하면 되는 건가요?
결국 1)번과 2)번의 불필요한 모델이나 평가방법은 주석 처리하거나 삭제처리
문제의 RMSE 성능을 봐야하는데 RMSE 코드를 잘모를 경우를 대비하여 sklearn.metrics에 질문의 RMSE 외에 r2_score, mean_absolute_error, mean_squared_error 값들을 한번 보는 용도인거죠?
#### 랜포를 썼을 경우
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(random_state=2023, max_depth=5)
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
from sklearn.metrics import mean_squared_error
def rmse(y_test, y_pred):
return np.sqrt(mean_squared_error(y_test, y_pred))
# print('rmse:', rmse(y_val, pred))
답변을 작성해보세요.
1
퇴근후딴짓
지식공유자2023.11.25
네 맞습니다 성능을 비교해서 성능이 높은 모델의 결과를 제출하면 됩니다.
그리고 RMSE평가지표를 만들지 못할 경우 다른 메트릭으로라도 비교하는 것이 좋아요!
만약 RMSE를 안다면 다른 평가지표는 비교할 필요 없습니다.
캠사 Camping sapiens
질문자2023.11.26
선생님~ 답변 감사드립니다.
추가로 MSE를 활용한 RSME의 경우에 함수 파라미터 부분이 좀 헷갈리는데요.
아래와 같이 파라미터 y_test, y_pred를 넣고 리턴하는 함수를 만들었는데 y_true, y_pred 같이 다른 값을 넣어도 상관없는지..
# 평가
import numpy as np
from sklearn.metrics import mean_squared_error
def rmse(y_test, y_pred): #RMSE
return np.sqrt(mean_squared_error(y_test, y_pred))
이후에 아래와 같이 train_test_split 후에 검증하는 파라미터 값이 y_val, pred로 달라도 상관이 없는건가요?
#랜덤포레스트
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor()
model.fit(X_tr,y_tr)
pred=model.predict(X_val)
print("rmse: ",rmse(y_val, pred))
퇴근후딴짓
지식공유자2023.11.26
네 함수에서 파라미터는 함수 내에서 사용하는 변수로
입력값이 2개만 맞으면 됩니다.
변수명은 다를 수 있습니다. 예를들면 변수가 아니라 리스트를 직접 넣어도 됩니다.
rmse([2,3,4], [3,4,4]) 와 같이요!
답변 1