해결된 질문
작성
·
553
·
수정됨
0
안녕하세요 선생님, 결측치 처리 관련하여 궁금한 점이 있어 이렇게 질문 남기게 되었습니다.
결측치가 있는 경우, 이를 삭제하거나 대체하는 방법이 있을텐데요.
저는 결측치가 있을 경우, 평균값, 중앙값이나 0으로 대체할 계획입니다.
근데 train 데이터와 마찬가지로 test데이터의 결측치도 동일하게 대체하거나 제거해줘야 하는 것이 맞는 건가요? test 데이터는 원본 데이터와 달라지면 안된다거나, 삭제되면 안된다는 언급이 보여 혼동이 되어 질문드립니다.
test데이터에서 결측치를 다른 값으로 채워주는건 괜찮으나, 삭제만 안하면 되는건가요?
이와 유사하게, 컬럼에서 ID나 모델명과 같은 컬럼을 삭제하고 예측하려고 할 때, 시험환경에서 train, test에서 둘다 drop이나 pop으로 삭제를 진행해도 문제가 없는지 궁금합니다.
2. 추가로, unique로 object 데이터의 가짓수를 확인하고 가짓수가 적으면(2~5이내) 원핫인코딩, 많으면 라벨인코딩을 하고있는데 맞는 접근 방식인지도 궁금합니다.
이렇게 인사드릴 수 있게되어 영광입니다! 좋은 강의 올려주셔서 감사드립니다.
답변 1
0
안녕하세요!
test 데이터에서 행(레코드)는 절대 삭제 하면 안됩니다. 행이 100개였다면 예측값도 100개여야하는데 삭제되어 90개만 제출한다면 0점 처리 됩니다. 컬럼은 train과 test 동일하기만 하면 됩니다.
네, 말씀하신 방식을 많이 사용하지만 강의에서는 혼란을 줄이고자 1개의 방법으로 모두 적용하는 방법을 설명하고 있어요~ 개인차가 있는 것 같아요 저는 10개 정도면 원핫 인코딩 하기도 합니다.
다만 중요한 것은 검증데이터를 통해 평가지표 스코어를 확인하는것이 객관적입니다. 웟핫인코딩했을 때와 레이블 인코딩 했을 때 차이를 보면 될 것 같아요 여유가 있다면요!!
응원하겠습니다 👏👏👏
자세히 답변해주셔서 감사합니다 :)