인프런 커뮤니티 질문&답변
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 데이터 간의 컬럼 차이를 최소화하여 예측 시 발생할 수 있는 문제를 방지할 수 있습니다. 그러나 코드 상에서 발생하는 오류가 있다는 점 잘 이해하였습니다.
문제 원인과 해결 방안:
데이터 컬럼 확인:
pd.get_dummies(df)를 사용한 후 데이터가 원활하게 train과 test로 분리되었는지 확인하는 것이 중요합니다. 경우에 따라 원핫 인코딩 후 불필요한 컬럼이 추가되거나 중요한 컬럼이 누락될 수 있습니다.
데이터 병합 및 분리:
train=df.iloc[:len(train)].copy()와test=df.iloc[len(train):].copy()부분이 잘 작동하고 있는지 확인하십시오. 즉, 인코딩 이후에도 train과 test 데이터의 컬럼 갯수가 동일해야 합니다.
예측 수행:
- 예측 부분에서
pred=rf.predict(test)라인은 문제없어 보입니다. 단,test데이터셋이 모델 학습 때와 동일한 컬럼 구조를 가지고 있어야 합니다.
- 예측 부분에서
유사 질문 및 답변 참고 URLs:
- 작업형2 모의문제2: 유사한 문제를 다루며 원핫 인코딩 후 데이터 분리 및 문제 해결 방법을 설명합니다.
이 게시물에서는 데이터 병합, 원핫 인코딩, 그리고 모델 학습시 주의해야 할 점을 상세히 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





