작성
·
57
0
그동안 예제 문제로 연습했을 땐 결측치 데이터가 없거나 처리하기 쉬웠는데
캐글에 올려진 T2-1 타이타닉 문제는 헷갈려서 문의 드립니다.
https://www.kaggle.com/code/agileteam/t2-1-titanic-simple-baseline
이것입니다.
질문..
결측치가 있어도 그냥 그대로 원핫인코딩, 랜덤포레스트 적용해도 무관한가요?? 결측치가 Age, Cabin, Embarked 에서 존재했는데...
결측치 처리 방법 문의 - 만일 이게 시험문제라고 생각할 경우, 결측치를 처리하고 싶은데요. Age는 mean으로 처리하고 싶습니다. 그런데 Cabin 같은 object type에서는 어떻게 처리하면 좋을까요? value_counts로 그나마 나온 최빈값으로 대체해보려고 했는데... 고만고만한 갯수가 나오네요.. 결측치 몇% 기준 잡고 그냥 삭제해도 되는걸까요?
결측치 처리할 때, test 데이터 결측치도 같이 변환하거나 행 삭제 해도 되나요?????? 안되겠죠? 언젠가 강의에서 말해주신 기억이 나는데 어떤 강의인지 찾아보기가 어렵네요
그리고 혹시나 결측치 처리할 때 유의해야 할 점이 있다면 그것도 알려주시면 감사하겠습니다.
감사합니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
져니님, 캐글의 T2-1 타이타닉 데이터셋에 대한 결측치 처리에 대해 질문해 주셨네요. 결측치 처리는 데이터 분석과 기계 학습 모델링에서 중요한 단계 중 하나입니다.
원핫인코딩을 적용하기 전에는 일반적으로 결측치를 처리해야 합니다. 결측치가 있는 상태에서 모델을 학습시키는 것은 권장되지 않습니다. 먼저 결측치를 적절히 처리한 후, 원핫인코딩이나 랜덤포레스트 같은 알고리즘을 적용하는 것이 좋습니다.
Age의 결측치를 평균값으로 처리하는 것은 하나의 방법입니다. Cabin 같은 범주형 데이터의 경우, 가장 빈도가 높은 값을 사용하거나 ‘Unknown’과 같은 새로운 카테고리를 만들어 대체하는 방법을 사용할 수 있습니다. 결측치의 비율이 너무 높다면 해당 피처를 제거하는 것도 고려할 수 있습니다. 그러나 이 경우는 데이터의 중요성과 결측치가 분석 결과에 미치는 영향을 종합적으로 고려해야 합니다.
테스트 데이터에서도 결측치를 처리해야 합니다. 단, 트레이닝 데이터를 기준으로 결측치를 처리할 때 사용한 기준(예: 평균, 중앙값, 최빈값 등)을 테스트 데이터에도 동일하게 적용해야 합니다. 테스트 데이터에서 행을 삭제하는 것은 일반적으로 피해야 합니다. 모델이 실제 환경에서 작동할 때 모든 데이터를 처리할 수 있도록 학습시키는 것이 중요합니다.
결측치를 처리할 때 주의해야 할 점은 데이터의 분포나 특징을 왜곡시키지 않도록 신중해야 한다는 것입니다. 예를 들어, 평균값으로 결측치를 채울 때는 데이터가 정규 분포를 이루고 있는지 확인하는 등, 결측치 처리 방법이 데이터의 특성을 잘 반영하도록 해야 합니다.
정보는 제공된 내용에 포함되지 않았지만, 상세한 결측치 처리 방법과 모델 적용 과정에 관한 지식은 데이터 사이언스와 머신 러닝 관련 강좌나 문서를 통해 추가적인 학습이 필요할 것으로 보입니다. 데이터 분석과 기계 학습에 대한 좀 더 깊은 이해를 위해서는 인프런에서 관련 강좌를 찾아보시는 것도 추천드립니다.