원핫인코딩 데이터 합치기
피처 엔지니어링 강의 중 분리한 데이터 다시 합침 부분에서 강의영상과 출력값이 달라서 질문드립니다.

강의화면에서는 107 컬럼, 103컬럼인데요,
같은 코드 결과인데 컬럼수가 15개로 나온이유가 궁금합니다.

답변 2
0
숫자가 영상에서 잘못 표기된 부분이 맞네요.
크게 달라진 원인은 이전 데이터를 그대로 사용하지 않고
n_train, n_test, c_train, c_test = get_nc_data() # 데이터 새로 불러오기로 데이터를 새로 불러와서 그렇습니다.
더불어 이 셀의 목적은 데이터 합치기를 보여주는 부분으로
concat을 알려드리기 위함에요!
0
안녕하세요, 인프런 AI 인턴입니다. reverq님, 질문해 주신 내용에 대해 도움을 드리겠습니다.
피처 엔지니어링 과정에서 pd.concat() 등을 통해 데이터 세트를 합쳐 사용하는 이유는, train과 test 데이터 세트에서 동일하게 One-Hot Encoding을 하기 위함입니다. One-Hot Encoding은 범주형 변수를 처리할 때 각 범주를 0과 1로 나타내는 변수로 변환합니다. 하지만 train과 test 데이터 세트에 서로 다른 범주의 데이터가 있을 경우, 컬럼 수가 다른 문제가 발생할 수 있습니다.
문제 발생 원인:
범주형 변수 차이:
train과test데이터에 포함된 범주형 변수의 카테고리 수가 다를 수 있습니다. 예를 들어,train에 있는 범주가test에 없거나 그 반대의 경우입니다.컬럼 선택 문제: 데이터 전처리 과정에서 필요한 컬럼만 남기거나 선택되지 않은 컬럼은 포함시키지 않았을 수 있습니다.
해결 방법:
- 데이터 병합 후 인코딩:
train과test데이터를 먼저pd.concat()으로 병합한 후pd.get_dummies()를 적용하여One-Hot Encoding을 수행합니다. 이후 다시train과test로 나누어주는 것이 일반적입니다.
df = pd.concat([train, test], axis=0)
df = pd.get_dummies(df, columns=['범주형컬럼'])
train = df.iloc[:len(train)]
test = df.iloc[len(train):]
- 각 데이터의 모든 범주 고려:
train과test각각에서One-Hot Encoding후, 부족한 컬럼을0으로 채우는 방법도 있습니다:
missing_cols = set(train.columns) - set(test.columns)
for col in missing_cols:
test[col] = 0
test = test[train.columns]
이와 관련하여 도움이 될 수 있는 답변 URL을 안내드립니다:
이 게시물들은 데이터 인코딩 과정에서 발생할 수 있는 문제, 특히 One-Hot Encoding과 관련된 이슈의 해결 방법을 제시하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
작업형 1 유형 부분
0
12
1
작업형 1 (삭제예정, 구 버전)
0
31
2
수강기간 연장 문의드립니다.
0
21
1
2유형 레이블 인코딩 VS 원핫 인코딩
0
24
3
수강기간 연장 문의드립니다.
0
26
1
인덱스 슬라이싱
0
27
2
질문 드립니다.
0
45
2
강의 내용 관련 질문드립니다~
0
43
2
수강 연장 문의
0
55
2
강의자료 일괄 다운로드
0
50
2
수강기간 연장 문의드립니다
0
40
2
list 문제 질문드립니다~
0
35
2
빅분기 실기 12회 재도전
0
53
2
강의 기간 연장 가능여부 검토 요청건
0
39
2
수강기간 연장 문의 드립니다
0
43
2
수강기간 연장 문의드립니다
0
50
2
질문이요
0
56
2
수강기간 연장 문의드립니다.
0
58
2
문제 3-2 질문드립니다
0
47
2
수강기간 연장 문의 드립니다.
0
61
2
변수, 칼럼 , df 구분
0
51
2
수강기간 연장 문의드립니다.
0
50
2
수강기간 연장 문의
0
49
2
수강기간 연장 문의드립니다.
0
42
2





