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

이승욱님의 프로필 이미지
이승욱

작성한 질문수

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

모델링 및 평가(분류)

결측치 처리에서 명목형, 수치형 자료의 처리 방식 차이

해결된 질문

작성

·

32

0

안녕하세요!

결측치 처리 시에 아래와 같이 수치형 컬럼의 경우 Train 데이터의 평균, 중앙값을 Test 데이터 결측치 처리에 사용한 반면,

명목형 컬럼의 경우 Test 데이터 결측치 처리 시에 Test 데이터의 최빈값을 이용한 이유가 궁금합니다!

통상적으로 이렇게 진행되는 것인지, 아니면 해당 데이터셋의 경우 Train 데이터와 Test 데이터의 최빈값이 동일해서 단순히 이렇게 처리된 것인지 궁금합니다!

# X_train데이터
X_train['workclass'] = X_train['workclass'].fillna(X_train['workclass'].mode()[0])
X_train['native.country'] = X_train['native.country'].fillna(X_train['native.country'].mode()[0])
X_train['occupation'] = X_train['occupation'].fillna("X")
X_train['age'] = X_train['age'].fillna(int(X_train['age'].mean()))
X_train['hours.per.week'] = X_train['hours.per.week'].fillna(X_train['hours.per.week'].median())

# X_test데이터
X_test['workclass'] = X_test['workclass'].fillna(X_test['workclass'].mode()[0])
X_test['native.country']  = X_test['native.country'].fillna(X_test['native.country'].mode()[0])
X_test['occupation'] = X_test['occupation'].fillna("X")
X_test['age'] = X_test['age'].fillna(int(X_train['age'].mean()))
X_test['hours.per.week'] = X_test['hours.per.week'].fillna(X_train['hours.per.week'].median())

답변 2

0

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

어떤 것을 사용해도 상관없지만, train의 최빈값을 사용하는 것이 일반적입니다. 실수가 있었네요!!

 

test데이터를 사용할때 "데이터 누수"라는 문제가 발생하는데 시험에서는 이 문제에 대해 고려하지 않아도 됩니다. (다만 아직 결측치가 있는 작업형2가 나온적이 없어 케이스가 없네요)

0

안녕하세요, 인프런 AI 인턴입니다. 이승욱님.

결측치 처리 시 수치형과 명목형 데이터에 대한 접근 방식 차이에 대해 질문 주셨군요. 이는 데이터 전처리 단계에서 중요한 부분입니다. 일반적으로 결측치를 처리할 때, 데이터 유형에 따라 다른 방법을 사용하곤 합니다.

수치형 데이터:

  • 평균값 & 중앙값: 수치형 데이터는 평균값(mean())이나 중앙값(median())으로 채우는 경우가 많습니다. 이는 데이터의 분포를 유지하면서 결측치를 보완할 수 있기 때문입니다.
  • X_train의 통계치 사용: Test 데이터의 결측치는 Training 데이터의 통계를 사용하여 채우는 것이 일반적입니다. 이는 훈련된 모델의 학습 정보를 일관되게 적용하기 위함입니다.

명목형(카테고리형) 데이터:

  • 최빈값(mode): 명목형 데이터의 경우, 가장 빈번하게 나타나는 값인 최빈값으로 결측치를 채웁니다. 이는 데이터의 대표적인 특성을 반영하기에 적합합니다.
  • X_test의 최빈값: X_test의 최빈값으로 채운 이유는 특정한 상황에서 데이터 누수를 피하기 위함일 수 있습니다. 하지만 일반적인 경우에는 Training 데이터에서 얻은 최빈값으로 Test 데이터도 처리합니다.

관행 또는 데이터셋의 특수성:

  • 질문 주신 상황처럼 특정 데이터셋에서 최빈값이 동일하여 그렇게 처리되었을 가능성도 존재합니다. 이런 경우에는 데이터 기반 검토가 필요합니다.
  • 유사한 질문과 답변 사례: 여기에서 모델의 성능을 고려하여 결측치 처리 방식을 다양하게 시도하고, 해당 방식이 일반적인 이유에 대해 설명하고 있습니다.

이러한 방법들은 일반적인 데이터 처리 관행이며, 데이터의 특성에 따라 다른 방법도 검토될 수 있습니다. 이 문서가 이승욱님의 이해에 도움이 되었길 바랍니다.

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

이승욱님의 프로필 이미지
이승욱

작성한 질문수

질문하기