inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

8회 기출유형(작업형2)

기출 8회 작업형 2

해결된 질문

42

김경원

작성한 질문수 7

0

# 라이브러리 및 데이터 불러오기
import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/8_2/churn_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/8_2/churn_test.csv")

#EDA
print(train.shape, test.shape)
#(4116, 19) (1764, 18)
# print(train.info())
# print(test.info())
#결측치 x

# print(train.isnull().sum())
# print(test.isnull().sum())

#,수치형,오브젝트 체크
# train.describe(include='O')
# train.describe()
#Id는 버리기
# train['TotalCharges'].value_counts() #타겟이 많으면 회귀

#데이터 전처리
train = train.drop('customerID',axis=1)
test=  test.drop('customerID',axis =1)
print(train.shape, test.shape)
#타겟 분리
target = train.pop('TotalCharges')

#스케일링
#컬럼다르면 합치고 인코딩후 분리
df = pd.concat([train,test],axis=0)
train1 = df.iloc[:len(train)].copy()
test1 = df.iloc[len(train):].copy()
print(train.shape, test.shape)
from sklearn.preprocessing import RobustScaler
cols = train1.describe(exclude='object').columns
scaler = RobustScaler()
train1[cols] = scaler.fit_transform(train1[cols])
test1[cols] = scaler.transform(test1[cols])

#인코딩
from sklearn.preprocessing import LabelEncoder
cols = train1.describe(include='object').columns
le = LabelEncoder()
for col in cols:
  train1[col] = le.fit_transform(train1[col])
  test1[col] = le.transform(test1[col])
print(train.shape, test.shape)

#검증데이터 분리
from sklearn.model_selection import train_test_split
x_tr,x_val,y_tr,y_val = train_test_split(train1, target, test_size=0.2, random_state=0)
print(x_tr.shape,x_val.shape,y_tr.shape,y_val.shape)

#모델 학습(랜덤)
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
rf = RandomForestRegressor(random_state=0)
rf.fit(x_tr,y_tr)
pred = rf.predict(x_val)
print(mean_absolute_error(y_val,pred))

#lightGBM
import lightgbm as lgb
lgbmr = lgb.LGBMRegressor(random_state=0, verbose=0)
lgbmr.fit(x_tr,y_tr)
pred = lgbmr.predict(x_val)
print(mean_absolute_error(y_val,pred))

#xgboost
from xgboost import XGBRegressor
xgbr =  XGBRegressor(random_state=0)
xgbr.fit(x_val,y_val)
pred = xgbr.predict(x_val)
print(mean_absolute_error(y_val,pred))
#951.033800718042 랜덤
#952.79254077987 lightgbm
#41.89787395866172 xgboost

맨마지막에 xgboost로 돌렸는데 41이라는 결과 나옵니다 이건 과적합인가요?

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 2

0

퇴근후딴짓

이렇게까지 차이가 나진 않는데 특이 케이스네요~

무조건 성능이 좋은쪽을 선택해 주세요!

 

빅분기에서 저는 과적합이란 단어는 사용하지 않고 있는데

신경쓰지 않으셔도 됩니다.

 

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 김경원님.

현재 질문하신 코드에서 xgboost를 사용하여 테스트 데이터를 예측한 후 41이라는 매우 낮은 값의 Mean Absolute Error (MAE)를 얻으신 것 같습니다. 이는 과적합을 의심할 수 있는 상황입니다. 일반적으로 과적합이 발생할 때는 모델이 학습 데이터에 너무 잘 맞추어져 있지만, 새로운 데이터(혹은 검증 데이터)에 대해서는 일반화가 잘 이루어지지 않아서 과도하게 낮은 손실 값이나 높은 평가 점수가 나타날 수 있습니다.

과적합을 방지하거나 줄이기 위해 다음과 같은 방법을 고려하실 수 있습니다:

  1. Regularization 사용: XGBoost에는 L1(Lasso regularization) 및 L2(Ridge regularization)를 적용하여 모델의 복잡도를 제어할 수 있습니다. 이를 통해 과적합을 방지할 수 있습니다.

  2. 모델의 복잡도 줄이기: max_depth와 같은 하이퍼파라미터를 조정하여 트리의 깊이를 제한하거나, n_estimators 값을 줄여 모델이 너무 깊거나 방대한 설정을 피하는 것이 좋습니다.

  3. 더 많은 데이터 사용: 더 많은 데이터를 사용하면 모델이 더 일반화될 수 있도록 도움을 줄 수 있습니다.

  4. Cross-validation 사용: 교차 검증을 통해 모델이 데이터의 특정 부분에 의존하지 않고 일반화되는지 확인할 수 있습니다.

  5. Feature engineering 및 selection: 불필요한 특성을 제거하거나, 새로운 특성을 추가하여 데이터를 잘 표현할 수 있도록 합니다.

그 밖에, MAE가 크게 다른 모델 간의 결과를 비교할 때는 각 모델의 하이퍼파라미터 설정을 동일하게 하고, 동일한 데이터를 사용하였는지 체크해 보시기 바랍니다.

유사 질문 참고 링크:
- 과적합 문제 해결 방안
- 하이퍼파라미터 튜닝이 있는 과적합 조정

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작업형1 강의 수강 완료 후..

0

6

0

작업형1 모의문제 4번에 3)문제 질문

0

15

2

이상치 전처리 작업

0

22

2

평가결과값 문의

0

27

2

시계열 데이터 날짜와 시간 format

0

31

2

평가지표 F1 스코어 질문드립니다.

0

24

2

작업형 2 기출7회분에서

0

36

2

작업형2 모의문제1 (30강)

0

34

2

수강 기간 연장 문의 드립니다.

0

41

2

수강 계획과 관련해 문의 드립니다.

0

28

2

작업형1 - 연습문제 16~39 풀이는 몇강을 보면 되나요?

0

50

2

작업형 1 -연습문제 4-6

0

38

2

작업형 1 유형 부분

0

42

2

작업형 1 (삭제예정, 구 버전)

0

51

2

수강기간 연장 문의드립니다.

0

38

2

2유형 레이블 인코딩 VS 원핫 인코딩

0

37

3

수강기간 연장 문의드립니다.

0

44

2

인덱스 슬라이싱

0

37

2

질문 드립니다.

0

50

2

강의 내용 관련 질문드립니다~

0

46

2

수강 연장 문의

0

63

2

강의자료 일괄 다운로드

0

61

2

수강기간 연장 문의드립니다

0

48

2

list 문제 질문드립니다~

0

38

2