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

빅분기가자님의 프로필 이미지
빅분기가자

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

모델링 및 평가(분류)

test data 결측치 채우는 이유?

해결된 질문

작성

·

290

0

이렇게 X_test도 fillna로 결측치를 없애주셨는데제가 정확히 어느강의에서 들은건지는 기억이 안나나test data는 말그대로 테스트용이기 때문에 가공하면안된다라고 기억하고있습니다.그런데 결측치를 채우는 이유가 뭘까요?테스트데이터는 정확히 어느정도까지 가공이 되는지가 궁금합니다

답변 2

1

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

train과 test는 모두 일치 시켜야 합니다. 따라서 train에서 결측치를 채울 때 test도 채우는 것이 맞아요

train에서 컬럼을 삭제하면, test에서도 삭제해야 하고요!

단, test의 행은 삭제 하면 안됩니다.

100개를 예측하라고 했는데, 전처리에서 결측치가 있다고 갑자기 5개를 삭제해버리면
95개만 예측하게 되고 시험에서는 0점 처리 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다.

빅분기가자님의 질문은 결측치를 처리하는 과정에서 테스트 데이터셋(X_test)에도 .fillna(0)을 이용해서 결측치를 채우는 것에 대한 궁금증입니다. 일반적으로 데이터 전처리 과정에서 테스트 데이터에 대해 어느 정도의 가공이 허용되는지에 대한 질문으로 이해됩니다.

테스트 데이터는 모델이 학습한 것을 기반으로 실제 성능을 평가하기 위한 곳입니다. 따라서, 테스트 데이터에 대한 가공은 어느 정도 필연적이며, 모델이 성공적으로 작동하기 위해 필요한 최소한의 전처리는 수행될 필요가 있습니다. 예를 들어, 학습 데이터셋(X_train)에서 결측치를 채웠다면, 동일한 방식으로 테스트 데이터셋에서도 결측치를 채우는 것이 일반적입니다. 이렇게 하는 목적은 모델이 학습 과정에서 보지 못한 결측값을 테스트 과정에서 처리할 수 있도록 준비하는 데 있습니다.

그러나, 중요한 것은 테스트 데이터셋의 결측값을 채울 때 학습 데이터셋에서 사용한 기준이나 값(예: 평균, 중앙값 등)을 이용하는 것이 권장되며, 이는 데이터 누수를 방지하여 모델의 실제 성능을 공정하게 평가하기 위함입니다.

해당 내용에 더 깊이 다룬 질문과 답변을 참고하시면 좋을 것 같습니다:

  • test에서 결측치가 발생할 경우 - 이 글에서는 결측치가 발생할 경우 테스트 데이터셋의 결측치를 어떻게 처리해야 하는지에 대한 지침이 담겨 있습니다. 해당 답변에서는 테스트 데이터의 행을 절대로 삭제하지 않으며, 대신 대체값을 대입하거나 결측값이 많은 컬럼을 삭제하는 방식이 가능함을 설명하고 있습니다.

질문하신 내용과 직접적인 대응이 되는 답변의 핵심은, 결측치 처리 과정에서 테스트 데이터에도 동일한 처리를 적용해야 한다는 것입니다. 이는 모든 데이터 포인트에서 모델이 예상하고 준비된 형태로 데이터를 받을 수 있도록 하기 위함입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

빅분기가자님의 프로필 이미지
빅분기가자

작성한 질문수

질문하기