기출 7회 작업형2 평가지표 문의드립니다.
1
2 câu hỏi đã được viết
아래와 같은 코드로 학습 및 평가를 진행하였을 때, RMSE 값은 강의와 큰 차이 없는 것으로 확인되나 추가 확인을 위해 검증한 r2 점수는 음수값으로 확인됩니다.
실제로 r2값이 음수일 경우 과적합이나 예측성능 부족으로 해석할 수 있다고 보았는데, 이는 해당 데이터셋 자체의 문제라 신경쓰지 않아도 되는 부분인지 문의드립니다!
또한, 실제 시험에서도 이와같이 주어진 평가지표가 아닌 다른 지표가 비정상적으로 나올 경우 모델을 수정해야하는지 아니면 그냥 무시하면 되는지 알고싶습니다.
# 데이터 불러오기
import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_2/mart_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_2/mart_test.csv")
# EDA
# print(train.shape, test.shape) # (700,10) (300,9)
# print(train.info(), test.info()) # null 없음, ['total', 'rating'] 제외 모두 object
# print(train.describe()) # 특이사항 없음. 범위 좁음(스케일링 필수아님)
# print(train.isnull().sum()) - zero
# Preprocessing
# column split
y_train = train.pop('total')
train = train.drop(['branch'], axis=1)
test = test.drop(['branch'], axis=1)
cols = train.select_dtypes(include='object')
ncol = ['rating']
# encoding
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
for col in cols:
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
# validation split
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train, y_train, test_size=0.2, random_state=0)
# Modeling
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np
def val(name, pred):
print(f"[{name}] RMSE = {np.sqrt(mean_squared_error(y_val, pred))}, R2 = {r2_score(y_val, pred)}")
# Randomforest
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state=0, max_depth=5, n_estimators=200)
rf.fit(X_tr, y_tr)
pred_rf = rf.predict(X_val)
val('RF max_depth=5 n_estimators=200', pred_rf)
# XGB
from xgboost import XGBRegressor
xgb = XGBRegressor(random_state=0, max_depth=11)
xgb.fit(X_tr, y_tr)
pred_xgb = xgb.predict(X_val)
val('XGB max_depth=11', pred_xgb)
# LGBM
from lightgbm import LGBMRegressor
lgb = LGBMRegressor(random_state=0, verbose=-1, max_depth=5)
lgb.fit(X_tr, y_tr)
pred_lgb = lgb.predict(X_val)
val('LGB max_depth=5', pred_lgb)
# [RF default] RMSE = 394376.67750222463, R2 = -0.1516313613858813
# [XGB default] RMSE = 448629.2156334435, R2 = -0.49027405261046786
# [LGB default] RMSE = 418919.9464111325, R2 = -0.29943067276803204
# [RF max_depth=5] RMSE = 377317.703631039, R2 = -0.054157251623846436
# [XGB max_depth=11] RMSE = 427708.98809398, R2 = -0.3545273827552682 - pick!
# [LGB max_depth=5] RMSE = 415578.970510777, R2 = -0.27878684839577694 - pick!
# [RF max_depth=5 n_estimators=200] RMSE = 377131.19406206085, R2 = -0.05311536135414552 - pick!
# [XGB max_depth=11 n_estimators=200] RMSE = 417882.1533298992, R2 = -0.2930004714865426
# [LGB max_depth=5 n_estimators=200] RMSE = 439309.6456127621, R2 = -0.42900093548228657
# Result
pred = rf.predict(test)
pd.DataFrame({'pred':pred}).to_csv('t7p2result.csv', index=False)
print(pd.read_csv('t7p2result.csv').head(10))
Câu trả lời 0
수강연장 문의 드립니다!
0
3
1
수강연장 문의드립니다
0
5
1
작업형2모의문제3_updated2026.10
0
21
2
작업형2 모의문제3_updated2026.10
0
23
2
38강에서 불균형 데이터 처리하는 stratify를 꼭 해줘야하는건지 질문합니다.
0
20
2
수강강의 연장 관련 문의
0
28
2
작업형1_연습문제1 section2
0
28
2
수강기간 연장 문의드립니다
0
33
2
작업형2 모의문제2_updated2026.10
0
34
2
수강기간 연장문의
0
36
2
작업형 2 질문
0
39
2
강의 연장 관련하여 문의드립니다.
0
48
2
섹션7 자료 다운로드
0
45
2
작업형 1 연습문제 Section12
0
45
2
수강기간 연장 문의
0
56
2
안녕하세요, 혹시 수강기간 연장이 가능할까요?
0
50
2
판다스 강의자료는 어디서 받을 수 있나요?
0
56
2
작업형2 모의고사3 자료 업데이트 요청
0
64
4
수강 연장가능여부 문의드립니다!
0
50
2
수강기간 연장 문의드립니다!
0
44
2
최빈값
0
48
2
수강 가이드라인
0
43
2
수강 연장 가능 여부 문의
0
66
2
강의 구매했는데 교재 필수일까요
0
50
2

