인프런 커뮤니티 질문&답변

태보미님의 프로필 이미지
태보미

작성한 질문수

파이썬을 활용한 머신러닝 딥러닝 입문

실습 - Feature Engineering - Titanic 생존 예측

Feature Scaling 강의 질문 있습니다!

작성

·

142

·

수정됨

0

(1) Feature scaling 실습 강의를 듣다가 궁금한 점이 있어 질문드립니다! 타이타닉 자료에서 나이에 대한 결측치는 중간값으로 처리하고, Embarked의 경우 drop을 하는 걸로 알려주셨는데요 🙂 원래 없는 값인데 중간 값으로 결측치를 채워주는 것도 그렇구 다른 FEATURE값이 있는데 결측치가 있는 row라고 지워버리는 것도 그렇고 결측치가 주는 영향이 그만큼 크기 때문인가요?? 값이 비어있는 것보다는 평균으로라도 채워놓는 게 좋은 건지, 다른 feature 정보가 있더라도 결측치가 있는 row는 지우는 게 좋은 건지 feature engineering에 대해 제대로 이해하지 못한 것 같아 여쭤봅니다!

 

(2) SKEW된 FARE에 log를 취해주셨는데요! 사실 그래프만 보면 parch도 sibsb도 한 쪽으로 쏠려있고 한 쪽이 많은 느낌인데 왜 fare만 skew로 log를 취해주신 걸까요?

 

(3) 교재에서는 train_test_split 부분을 이렇게 해주셨는데요!

X_train = df_titanic[:700]

X_test = df_titanic[700:]

y_train = X_train.pop('Survived')

y_test = X_test.pop('Survived')

X_train, X_test에서 survived 부분을 안 빼줘도 되는 건가요?? 늘 감사합니다!!

답변 1

0

YoungJea Oh님의 프로필 이미지
YoungJea Oh
지식공유자

  1. 나이와 같은 연속적인 수치 데이터에서 결측치를 중간값으로 대체하는 것은 통계적으로 이상치의 영향을 줄이면서 전체 데이터의 분포를 유지하는 데 도움이 됩니다.

    또한 나이는 생존 여부 판단에 중요한 변수일 수 있기 때문에, 단순히 이 값을 제거하기보다는 적절한 추정값으로 채우는 것이 모델의 성능을 유지하는 데 도움이 될 수 있습니다.

  2. Embarked는 두개 밖에 결측치가 없으므로 전체 데이터셋에 미치는 영향이 크지 않아 제거해도 되는 경우가 많습니다.

  3. Fare의 경우 값의 범위가 넓으므로 로그 변환은 큰 값의 영향을 줄이고, 모델이 데이터를 더 잘 이해하도록 도움을 줍니다. 그런데 Parch (부모와 자녀의 수)나 SibSp (형제, 배우자의 수) 같은 다른 변수들도 비슷하게 치우친 분포를 가질 수 있으나 이러한 변수들은 원래부터 정수 값을 가지며, 대부분의 값이 0 또는 매우 낮은 숫자로 구성되어 있습니다. 이러한 경우, 로그 변환을 적용하면 많은 값들이 -inf (음의 무한대)로 변환되거나 변환 후의 효과가 미미합니다.
    4. pop 메소드를 사용하면 X_trainX_test에서는 Survived가 제거되며, 동시에 y_trainy_test에는 Survived의 값이 저장됩니다. 실제로 Jupyter notebook 에서 실제로 실행해 보세요.

감사합니다.

태보미님의 프로필 이미지
태보미

작성한 질문수

질문하기