강의

멘토링

로드맵

Inflearn brand logo image

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

이선희님의 프로필 이미지
이선희

작성한 질문수

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

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

선생님~ 답변부탁드립니다 ㅠ저는 원핫인코딩으로 했더니 평가가 850대로 나오는데요

작성

·

70

·

수정됨

0

그리고 저는 원핫인코딩으로 했는데 mse가 850점대로 나오네요.. 이러면 안되는거지요?


import pandas as pd
train=pd.read_csv("churn_train.csv")
test=pd.read_csv("churn_test.csv")

#데이터전처리
train=train.drop('customerID',axis=1)
test=test.drop('customerID',axis=1)

#타겟값 설정
target=train.pop("TotalCharges")
#원핫인코딩
train=pd.get_dummies(train)
test=pd.get_dummies(test)
test.head(5)
#데이터분할하기
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=100)
#랜포 불러와서 모델링하기
from sklearn.ensemble import RandomForestRegressor
model=RandomForestRegressor(n_estimators=500,max_depth=5,random_state=2022)
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
#성능평가MAE(Mean Absolute Error) 
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_val,pred)

pred = model.predict(test)
result=pd.DataFrame({"pred" : pred})
result.to_csv("111.csv",index=False)

답변 2

0

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

문제 없는데

하이퍼파라미터 튜닝값 빼는 것이 좋을 것 같습니다

다른 질문에도 답변 드렸지만 튜닝값 설정하지 마시죠!
회귀에서 이렇게 max_depth가 낮은 경우는 드물거든요. 잘못 설정하고 계시는 것 같아서 안하는 것이 좋을 것 같습니다.

n_estimators=500,max_depth=5
이선희님의 프로필 이미지
이선희
질문자

강의에서는 max_depth=5나 7로 튜닝하셔서 저도 따라서한건데

이게 잘못 설정이 된건가요 ㅠㅠ

이선희님의 프로필 이미지
이선희
질문자

강의에서는 max_depth=5나 7로 튜닝하셔서 저도 따라서한건데

이게 잘못 설정이 된건가요 ㅠㅠ

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

아마 분류에서는 그렇게 했어도 회귀 모델에서는 더 높은 숫자가 경험상 나왔거든요!

그래서 튜닝값을 찾는게 아니라 따라만 하는거라면 설정하지 않는 것을 정말로 추천해요! 잘못하면 10-20점이 날아갈 수 있어요

 

0

안녕하세요, 인프런 AI 인턴입니다.

이선희님이 제공한 코드를 보면, 원핫 인코딩으로 인해 train과 test 데이터 간의 컬럼 불일치 문제가 발생할 수 있습니다. 이러한 문제는 모델이 예측하는 과정에서 특성의 수와 순서가 맞지 않아 오류를 일으킬 수 있습니다. 따라서, 해결을 위한 몇 가지 방법을 소개해드리겠습니다.

주요 해결방법

  1. 원핫 인코딩 전 데이터 병합하기:
    • traintest 데이터를 병합한 후 원핫 인코딩을 하고 다시 분리합니다. 이렇게 하면 중간에 누락되거나 추가된 컬럼 이슈를 해결할 수 있습니다.
# 데이터 결합
combined = pd.concat([train, test], axis=0, sort=False)

# 원핫 인코딩
combined = pd.get_dummies(combined)

# 데이터 분할
train = combined[:len(train)]
test = combined[len(train):]
  1. 데이터 일관성 유지:
    • 예측한 컬럼이 fit을 하는 데이터셋과 동일한지 항상 확인하세요. 훈련과 테스트가 같은 형태라면 모델은 일관되게 동작합니다.

원핫 인코딩과 모델의 성능

다음으로 mse가 850점대가 나온 문제에 대해서 설명드리면, 이는 데이터 전처리와 모델 최적화에 의해 발생할 수 있습니다. 어떤 요소가 문제인지 확인하기 위해 다음을 고려해보세요:

  1. 모델 하이퍼파라미터 튜닝:

    • RandomForestRegressorn_estimators, max_depth 등을 튜닝해 보세요.
  2. 데이터셋 결측치 처리 여부:

    • 모든 결측값이 잘 처리되었는지 확인하세요. 결측치는 모델 성능에 큰 영향을 미칠 수 있습니다.
  3. 평가 기준 검토:

    • 평가 기준으로 MSE가 아닌 MAE를 사용하셨다면 정밀 추산이 힘들 수 있습니다. 두 평가는 서로 다른 특성을 가지므로 적절히 활용하세요.

이 문제와 유사한 다른 질문과 답변 자료를 보시면 도움이 될 수 있습니다:
- 모델 평가 후 result 데이터 생성 시 오류
- 예시문제 작업형2 test 데이터 예측시 발생하는 오류

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

이선희님의 프로필 이미지
이선희

작성한 질문수

질문하기