인프런 커뮤니티 질문&답변
데이터 전처리 질문
해결된 질문
작성
·
32
·
수정됨
0
복습강의에서
train = train.drop('customerID', axis=1) # 값이 모두 유니크해도 숫자형이면 유지하지만, 문자형이라 ID는 삭제했습니다
test = test.drop(['customerID'], axis=1customerID를 지웠는데..
매번 전처리할때 그냥 target = train.pop만 해서 실전에서 잘 못할 것 같아서요..ㅠ
customerID처럼 문자로 된게 고유값이 많으면? 해야하는 것 같은데? 이런 상황일때 무조건 하는게 좋은건가요?
실수로 다른 productID 이런거랑 헷갈려서 그런거까지 실수할까봐ㅠ
그냥 단순하게 target=train.pop~만 해도 될런지... 질문드립니다
감사합니다
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 합격님.
데이터 전처리 시 흔히 발생할 수 있는 대체 방법과 그 이유에 대해 설명드리겠습니다.
customerID와 같은 식별자 컬럼 처리 방법
고유한 식별자 컬럼 삭제
customerID같이 데이터셋에서 각 행을 고유하게 식별하기 위한 컬럼은 일반적으로 모델링에 직접적 영향을 주지 않기 때문에 삭제하는 것이 일반적입니다. 이는ID값이 모델에 학습에 필요한 정보를 제공하지 않으며, 오히려 노이즈를 유발할 수 있기 때문입니다.
- 만약
customerID가 문자형 데이터라면, 모든 값이 유니크하게 분리되어 있으므로 머신러닝 모델에는 의미 없는 변수가 될 수 있습니다. 이 경우 원핫 인코딩을 사용하면 너무 많은 컬럼을 생성하게 되어 모델의 복잡성을 크게 증가시키므로, 삭제하는 것이 더 효율적입니다.
특정 컬럼만 제거하는 pop 함수 사용
target = train.pop('target_column')방식은 대상 변수(Target Variable)를 따로 분리하여 모델 학습 시 입력 데이터와 태깅 변수를 명확히 할 때 유용합니다.
실수 방지
- 실수로 중요한 컬럼을 삭제하지 않도록 하기 위해 데이터셋을 전처리하기 전 각 컬럼의 역할과 필요성을 사전에 명확히 파악해야 합니다. 예를 들어,
productID가 중요하게 사용된다면 반드시 유지해야 합니다.
- 실수로 중요한 컬럼을 삭제하지 않도록 하기 위해 데이터셋을 전처리하기 전 각 컬럼의 역할과 필요성을 사전에 명확히 파악해야 합니다. 예를 들어,
전처리 방법
- 삭제의 판단 기준: 데이터 분석을 통해 컬럼이 제거되어도 되는지를 정해야 합니다. 만약 컬럼이 모델 성능 향상에 필요하다면, 제거보다는 다른 방식으로 처리해야 합니다.
- 범주형 데이터의 변환: 필요에 따라 원핫인코딩 등 다른 전처리 기법을 고려할 수 있습니다.
아래 링크에서는 이와 유사한 질문과 답변을 참조하실 수 있습니다:
- 작업형2 drop 질문(inplace=True 써야할까요?), inplace 인자를 이용해 데이터프레임을 효과적으로 수정하는 방법에 대해 설명합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





