답변함
연습문제 풀이 해설
3) 인코딩
for col in categorical_cols:
encoder = LabelEncoder()
x_train10[col] = encoder.fit_transform(x_train10[col])
* test10[col] = encoder.transform(test10[col])
4) 표준화
scaler = StandardScaler()
x_train10_scaled = pd.DataFrame(scaler.fit_transform(x_train10),columns=x_train10.columns)
** test10_scaled = pd.DataFrame(scaler.transform(test10), ***columns=x_train10.columns)
세가지 질문입니다.
* 인코딩시 “x_test10”으로 변수를 특정하지 않고 왜 “test10”으로 일반 지정을 하는지와 이렇게 하는 것이
정석적인 코딩인지도 설명부탁합니다
** 표준화시에도 마찬가지로 “x_test10_scaled”로 특정하지 않고 “test10_scaled”로 일반 지정을 하는지에
대해서도 설명부탁합니다.
*** test10 변수 표준화시 “columns=x_train10.columns”으로 지정하는 것도, 만약 train 데이터와 test 데이터의
구조가 다르면 컬럼도 해당 칼럼을 지정해야 하는 것인지와 두가지 경우를 모두 만족하는 컬럼 지정방법은 무엇인지도 설명부탁합니다.
0
댓글
안녕하세요 질의사항에 대한 답변을 드립니다.!
첫 번째 질문의 답은 다음입니다.
test10이라고 쓴 것은 예측용 test 데이터에 정답 y가 없어서, 독립변수로 따로 분리하지 않고 test 데이터 이름 그대로 사용한 것입니다. 틀린 방식은 아니며, 시험형·캐글형 코드에서 흔히 사용됩니다.두 번째 질문의 답은 다음입니다.
test10_scaled는 test10을 표준화한 결과라는 뜻입니다.x_test10_scaled라고 써도 되지만, 원래 test 데이터를test10으로 관리했다면test10_scaled라고 쓰는 것도 자연스럽습니다.세 번째 질문의 답은 다음입니다.
columns=x_train10.columns는 표준화 과정에서 사라진 컬럼명을 다시 붙이기 위한 것입니다. train 데이터 기준으로 모델과 scaler가 학습되었기 때문에, test 데이터도 train과 같은 컬럼명과 순서를 가져야 합니다. 따라서 test 표준화 결과의 컬럼명은 train 기준인x_train10.columns를 사용하는 것이 맞습니다.댓글을 남기려면 로그인하세요.