점수차가 많이 나는데 따로 하신게 있으신가요?
안녕하세요 선생님
선생님 인강 보면서 기출을 풀어보면서 시험에 대비하고 있습니다.
근데 기출 5회에서 2유형 선생님의 baseline과 제 baseline 수치가 너무 달라서 이렇게 Q&A를 보냅니다.
선생님 baseline(랜포)은 1296이 나오는데 제가 한 baseline(랜포)은 1400대가 나옵니다
혹시 제가 뭘 잘 못한게 있는지 궁금합니다
아래는 제가한 코드입니다!
#eda
print('\n====데이터 크기=====')
print(train.shape,test.shape)
print('\n====데이터 정보=====')
print(train.info())
print('\n====train 결측치=====')
print(train.isnull().sum())
print('\n====test 결측치=====')
print(test.isnull().sum())
print('\n====카테고리=====')
cols=train.select_dtypes(include='O').columns
for col in cols:
set_train=set(train[col])
set_test=set(test[col])
same=set_train==set_test
if same:
print(col,'O')
else:
print(col,'X')
print('\n====타겟 기초 =====')
print(train['price'].describe())
# 전처리
target=train.pop('price')
train=pd.get_dummies(train)
test=pd.get_dummies(test)
# print(train.shape,test.shape)
#검증
from sklearn.model_selection import train_test_split
X_tr,X_val,y_tr,y_val=train_test_split(train,target,test_size=0.2,random_state=42)
print(X_tr.shape,X_val.shape,y_tr.shape,y_val.shape)
# rf
from sklearn.ensemble import RandomForestRegressor
rf=RandomForestRegressor(random_state=42)
rf.fit(X_tr,y_tr)
pred=rf.predict(X_val)
#학습
from sklearn.metrics import root_mean_squared_error
print('===rf===')
print(root_mean_squared_error(y_val,pred))
#lg
import lightgbm as lgb
lg=lgb.LGBMRegressor(random_state=42,verbose=-1)
lg.fit(X_tr,y_tr)
pred=lg.predict(X_val)
print('==lg==')
print(root_mean_squared_error(y_val,pred))
#lr
from sklearn.linear_model import LinearRegression
lr=LinearRegression()
lr.fit(X_tr,y_tr)
pred=lr.predict(X_val)
print('==lr==')
print(root_mean_squared_error(y_val,pred))
#결과
pred=lg.predict(test)
submit=pd.DataFrame({'pred':pred})
submit.to_csv('result.csv', index=False)
답변 2
0
안녕하세요! 코드에 전혀 문제 없습니다.
시험에서 제공하는 데이터 그리고 제가 제공한 데이터가 빅데이터가 아니라
매우 작은 데이터라 파라미터 값에 영향을 받는 경향이 있는데
원인을 찾자면 강의에서 사용한 random_state 값이 운이 좋게도 2022가 더 낮은 결과를 보여줬네요
그렇다고 random_state 변경하는 연습은 무의미 해요! (한 두번만 변경해보는건 좋아요)
우리가 사용한 검증데이터라서 그렇지 테스트 데이터에서는 또 달라질 수 있고 알 수 없는 영역이라
지금 하던대로 진행해 주시면 됩니다.
GPT가 42를 주로 많이 사용하더라고요 🙂
0
안녕하세요, 인프런 AI 인턴입니다. anycallkjs님께서 작성하신 코드와 선생님께서 제시하신 baseline 값의 차이로 인해 고민이 있으시군요. 이런 경우에는 여러 가지 요인들이 RMSE (Root Mean Squared Error) 값에 영향을 줄 수 있습니다. 다음은 점검해 보면 좋을 몇 가지 사항입니다:
데이터 전처리:
- 코드에서
pd.get_dummies()함수를 사용하여 범주형 변수를 인코딩하고 있으나, train 데이터와 test 데이터가 각각 다른 범주를 가질 수 있다는 점을 염두에 두어야 합니다. 동일하게 맞춰주셨는지 확인해보고, 필요시 두 데이터셋을 합친 후 다시 인코딩을 적용해보세요.
- 코드에서
결측치 처리:
- 데이터셋 내부에 존재하는 결측치를 어떻게 처리했는지가 중요한데요, train과 test 데이터셋에서 결측치를 체크한 후 동일한 방법으로 처리했는지 확인이 필요합니다.
- 데이터셋 내부에 존재하는 결측치를 어떻게 처리했는지가 중요한데요, train과 test 데이터셋에서 결측치를 체크한 후 동일한 방법으로 처리했는지 확인이 필요합니다.
모델 하이퍼파라미터:
- RandomForestRegressor의 하이퍼파라미터가 기본값으로 설정되어 있어서 결과 차이가 발생할 수 있습니다.
n_estimators,max_depth,min_samples_split등 특이사항이 없는지 확인해보세요.
- RandomForestRegressor의 하이퍼파라미터가 기본값으로 설정되어 있어서 결과 차이가 발생할 수 있습니다.
평가 지표 함수:
- 코드에서 사용한
root_mean_squared_error는 기본 제공되는 sklearn의 함수가 아닙니다. 일반적으로sklearn.metrics.mean_squared_error로부터 RMSE를 계산할 수 있습니다. 아래 코드를 참고하세요:
from sklearn.metrics import mean_squared_error rmse = mean_squared_error(y_val, pred, squared=False) print("RMSE:", rmse)- 코드에서 사용한
위 사항들을 하나씩 점검해보시면 모델 성능 차이의 원인을 파악하는 데 도움이 될 것입니다. 이와 관련한 유사한 질문이 있던 게시물을 추천드리니 참조하시기 바랍니다:
이 질문에서는 데이터 처리 및 모델 평가 하면서 발생할 수 있는 변수형 성능 영향에 대해 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수강기간 연장 문의드립니다.
0
4
1
작업형1 - 연습문제 1번 관련 질문입니다.
0
29
2
강의 자료 16~39 관련
0
38
2
데이터 전처리 시 문의
0
40
2
random_state 값
0
35
2
인코딩 사용여부
0
44
2
인코딩 전 데이터 합치기 질문드립니다!
0
40
1
섹션5. 회귀 강의 관련 질문드립니다
0
43
2
수강기간연장 문의드립니다
0
49
2
수강 연장 문의
0
46
2
label 인코딩 에러 발생 원인
0
43
2
LabelEncoding 시 train data 학습(fit_transform, transform)
0
43
2
로지스틱 회귀분석은 옛날거 밖에 없나요?
0
49
2
판다스 표 표시
0
36
3
1유형 강의 다 나간 후 어떻게 할까요?
0
44
2
작업형1 모의문제 4번에 3)문제 질문
0
40
2
이상치 전처리 작업
0
47
2
평가결과값 문의
0
35
2
시계열 데이터 날짜와 시간 format
0
46
2
평가지표 F1 스코어 질문드립니다.
0
33
2
작업형 2 기출7회분에서
0
45
2
작업형2 모의문제1 (30강)
0
37
2
수강 기간 연장 문의 드립니다.
0
55
2
수강 계획과 관련해 문의 드립니다.
0
38
2





