해결된 질문
작성
·
299
0
안녕하세요! 강의 듣던 중 질문이 생겨 글남깁니다.
2회 기출문제 작업형2 강의와는 다르게 왜 데이터 전처리 과정에서 수치형데이터와 범주형데이터를 분리하나요? 왜 2회 기출문제 과정에서는 필요가없는걸까요? ㅠㅠ
# 수치형 데이터와 범주형 데이터 분리
n_train = train.select_dtypes(exclude='object').copy()
c_train = train.select_dtypes(include='object').copy()
n_test = test.select_dtypes(exclude='object').copy()
c_test = test.select_dtypes(include='object').copy()
(↑이 과정에 대한 질문입니다!)
어쩔때 robustscaler를 쓰고, minmaxscaler를 쓰고.. 스케일 방법이 다양한데 어떻게 선택하는건가요?
검증데이터 분리할떄 test_size 설정기준은 무엇인가요? 0.1로할떄도 있고 0.2로 할떄도 있으신데 어떻게 선정하시는건가요?
위와 마찬가지로 검증데이터 분리과정에서 random_state = 1204 를 설정하는 이유가 이해가 잘 안갑니다 ㅠ 저것의 의미가 무엇이고 숫자는 왜 1204인건가요??
(3,4번 질문은 이 코드에서의 질문입니다!
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train.drop('TravelInsurance', axis=1),
train['TravelInsurance'],
test_size=0.1,
random_state=1204)
X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)
답변 2
1
풀이를 할 때마다 약간씩 다른 방법을 사용해서 보여주고 있어요!! 수치형 데이터와 범주형 데이터를 나눈 이유는 확실하게 처리된 값을 눈으로 보여주고자 분할해서 진행했습니다.
데이터 프레임을 분리하지 않고 컬럼만 선택해서 진행 가능합니다. 한 예시로 이해해 주세요!
스케일링은 필수 아니고 선택입니다. 사용할 모델이 트리계열(랜덤포레스트, xgboost, lightgbm)이라면 스케일링 효과가 다소 작을(없을) 수도 있어요. 선형 모델에서 보다 효과가 있습니다.
전처리 선택의 기준은 모두 해보고 그 중에서 검증데이터로 평가했을 때 좋은 성능을 보이는 것을 선택합니다. 그런데 시험에서는 하나만 준비해서 시간되면 적용을 추천해요!
검증데이터(test_size) 기준은 0.2로 하시죠!! 데이터 크기가 작을 때 0.1로 했어요
random_states를 고정하는 이유는 랜덤적인 요소가 있기 때문이에요! 그런데 그걸 고정하지 않으면 실행할 때마다 데이터가 다르게 분할됩니다. 그러면 전처리를 잘해서 값이 달라졌는지 데이터가 잘 분할 되었기 때문인지 알 수가 없어요! 따라서 아무 숫자나 넣어서 고정을 반드시 시켜야 합니다. 빠르고 간편하게 0을 넣으시죠:)
0