강의

멘토링

커뮤니티

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

99ethan님의 프로필 이미지
99ethan

작성한 질문수

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

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

8회 작업형2

해결된 질문

작성

·

26

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")
df=pd.concat([train,test],axis=0)
df=pd.get_dummies(df)
train=df.iloc[:len(train)].copy()
test=df.iloc[len(train):].copy()
target=train.pop('TotalCharges')
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=0)
from sklearn.ensemble import RandomForestRegressor
rf=RandomForestRegressor(random_state=0)
rf.fit(X_tr,y_tr)
pred=rf.predict(X_val)
pred=rf.predict(test)

unique수가 달라서 concat으로 실행했는데 오류가 납니다.

답변 2

0

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

target=train.pop('TotalCharges')

은 전처리시 가장 먼저 진행해 주세요

인코딩 보다 위!!

 

만약 아래 진행한다면 분리 후

test에 TotalCharges 컬럼을 삭제해줘야 합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 99ethan님의 질문에 답변드리겠습니다.

작업형 문제에서 train과 test 데이터셋을 합친 후 원핫 인코딩을 사용하는 것은 매우 올바른 접근 방식입니다. 이렇게 하면 train과 test 데이터 간의 컬럼 차이를 최소화하여 예측 시 발생할 수 있는 문제를 방지할 수 있습니다. 그러나 코드 상에서 발생하는 오류가 있다는 점 잘 이해하였습니다.

문제 원인과 해결 방안:

  1. 데이터 컬럼 확인:

    • pd.get_dummies(df)를 사용한 후 데이터가 원활하게 train과 test로 분리되었는지 확인하는 것이 중요합니다. 경우에 따라 원핫 인코딩 후 불필요한 컬럼이 추가되거나 중요한 컬럼이 누락될 수 있습니다.
  2. 데이터 병합 및 분리:

    • train=df.iloc[:len(train)].copy()test=df.iloc[len(train):].copy() 부분이 잘 작동하고 있는지 확인하십시오. 즉, 인코딩 이후에도 train과 test 데이터의 컬럼 갯수가 동일해야 합니다.
  3. 예측 수행:

    • 예측 부분에서 pred=rf.predict(test) 라인은 문제없어 보입니다. 단, test 데이터셋이 모델 학습 때와 동일한 컬럼 구조를 가지고 있어야 합니다.

유사 질문 및 답변 참고 URLs:

  • 작업형2 모의문제2: 유사한 문제를 다루며 원핫 인코딩 후 데이터 분리 및 문제 해결 방법을 설명합니다.

이 게시물에서는 데이터 병합, 원핫 인코딩, 그리고 모델 학습시 주의해야 할 점을 상세히 설명하고 있습니다.

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

99ethan님의 프로필 이미지
99ethan

작성한 질문수

질문하기