해결된 질문
작성
·
57
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()
)으로 채우는 경우가 많습니다. 이는 데이터의 분포를 유지하면서 결측치를 보완할 수 있기 때문입니다.이러한 방법들은 일반적인 데이터 처리 관행이며, 데이터의 특성에 따라 다른 방법도 검토될 수 있습니다. 이 문서가 이승욱님의 이해에 도움이 되었길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.