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

강의화면에서는 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과 관련된 이슈의 해결 방법을 제시하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
작업형2 카테고리
0
8
1
110강 회귀_8번 문의
0
9
2
XGBRegressor 학습 시 warning 출력
0
13
2
데이터 프레임을 변경해도 되나요?
0
10
2
10회 기출 작업형3 문제 2-1 질문
0
15
2
작업형 2 질문
0
16
2
작업형 2 템플릿 확인 요청
0
13
2
작업형2 인코딩 질문
0
22
2
작업형 3 벼락치기 공부방법 질문
0
31
2
기출 11회 작업형 2_전체 데이터 학습 여부
0
32
2
예측값 결과 소수점 차이
0
28
2
기출 문제와 실전챌린지 연습문제 무엇부터 푸는게 나은가요?
0
35
1
전처리 train() test([ ])
0
23
2
작업형 1 배경지식 질문
0
33
2
옳게 풀은건지 질문드립니다!
0
22
1
roc_auc_score
0
30
2
추가질문 합니다
0
22
2
시험환경 구름
0
21
2
2유형 질문드려요
0
21
2
RandomForest vs lgb
0
30
2
전처리 관련질문
0
29
3
작업형3 기출
0
21
2
유형2에서 데이터분할 생략 가능여부
0
33
2
9회 기출 유형3 질문
0
21
2





