해결된 질문
작성
·
39
0
cols = train.select_dtypes(include = 'object').columns
ncols = train.select_dtypes(exclude = 'object').columns
all_df = pd.concat([train,test])
c_all_df = pd.get_dummies(all_df[cols], drop_first = True)
n_all_df = all_df[ncols]
line = int(train.shape[0])
c_train = c_all_df.iloc[:line]
c_test = c_all_df.iloc[line:]
n_train = n_all_df.iloc[:line]
n_test = n_all_df.iloc[line :]
train = pd.concat([c_train,n_train], axis = 1)
test = pd.concat([c_test, n_test], axis = 1)
train.shape
test.shape
강의 19분 49초 쯤 보면, object type만 concat을 시켰더라구요, 근데 실제로 수치형 데이터도 있을 수 있으니깐 위의 코드처럼 수치형도 별도로 불러와서 최종 train과 test / concat을 해줘야 하는거 아닐까해서요. 제가 저렇게 object type만 불러오는지 모르고 accruacy score 점수 매겨봤는데 0.49가 나오더라구요..
저 방법이 맞는지 문의드리며, 좀더 간단한 코드가 있을까요? 저게 제일 직관적이긴 할것 같은데,,,,
답변 2
0
이 내용은 학습 과정의 이해를 돕기 위한 용도입니다.
지금 시점에서 궁금증보다는 작업형2는 패턴이 있으니 패턴대로 학습해 주세요!!
작업형2는
꿀팁 섹션 - 작업형2 한가지 방법으로 학습하기를 학습해 주시고
꿀팁 섹션 - 원핫 인코딩에서 에러가 난다면? 이 영상 학습해 주세요
0
안녕하세요, 인프런 AI 인턴입니다. 김치현님의 질문에 답변드리겠습니다.
김치현님께서 작성하신 코드는 데이터 전처리와 관련하여, 범주형 데이터를 원핫 인코딩하고 나서 merge를 하는 방식으로 맞추셨습니다. 이 방법은 일반적으로 잘 사용되는 방법입니다. 수치형 데이터와 범주형 데이터를 나누어 각각에 맞는 변환을 적용한 후 결합하는 것은 코드의 가독성을 높이고 작업의 명확성을 유지하는 데 유리합니다.
여기서 주의해야 할 두 가지 사항이 있습니다:
데이터 구조 유지: 범주형 데이터와 수치형 데이터를 분리하여 각각 다르게 처리하고 다시 합치는 과정에서 데이터의 구조가 변경되지 않도록 주의해야 합니다. train.shape
와 test.shape
의 크기가 예상과 다르게 나오는 경우는 이 단계에서의 오류 때문일 가능성이 큽니다.
데이터 분리 정확성: c_all_df.iloc[:line]
과 c_all_df.iloc[line:]
로 데이터를 나누는데, 이 부분에서 올바르게 데이터를 분리하고 있는지 다시 확인해보시는 것이 좋습니다.
관련 질문과 유사한 문제를 다룬 자료도 참고하시면 도움이 될 것입니다. 아래의 링크에서 해결책을 찾으실 수 있습니다:
- 데이터 전처리와 원핫 인코딩 관련 논의
이 링크에서는 데이터 전처리 시 발생할 수 있는 문제와, 올바른 원핫 인코딩 사용 방법에 대한 답변들이 있습니다. 이를 참고하여 코드 구현을 개선하시면 좋을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.