해결된 질문
작성
·
45
답변 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
과 관련된 이슈의 해결 방법을 제시하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.