캐글데이터에서 스케일링 및 라벨인코딩(pd.factorize) 문의
안녕하세요 강사님!
강의 잘 듣고 있습니다.
캐글에 참여하고있는데, 스케일링 및 라벨인코딩(pd.factorize) 에서 막혀서 질문 드립니다.
1. 스케일링 관련 문의
데이터 전처리시, Standard Scaling을 한다 가정하였을 때,
'파이썬 머신러닝 완벽 가이드' 나 기타 다른 자료를 찾아봐도, train_split 후
X_train, X_test 데이터에 대해서 스케일링을합니다.
저희 데이터에서는 아래와 같은경우에,
마지막 TARGET이 없는 테스트 데이터 셋에 어떻게 스케일링 해야하는지 궁금합니다.
(제 생각엔 train_split 하기 전, apps_all 을 스케일링 하면 될 것같은데, 방법을 모르겠습니다)
object_columns = apps_all.dtypes[apps_all.dtypes == 'object'].index.tolist()
for column in object_columns:
apps_all[column] = pd.factorize(apps_all[column])[0]
apps_all_train = apps_all[~apps_all['TARGET'].isnull()]
apps_all_test = apps_all[apps_all['TARGET'].isnull()]
apps_all_test = apps_all_test.drop('TARGET', axis=1)
from sklearn.model_selection import train_test_split
ftr_app = apps_all_train.drop(['SK_ID_CURR', 'TARGET'], axis=1)
target_app = apps_all_train['TARGET']
train_x, valid_x, train_y, valid_y = train_test_split(ftr_app, target_app, test_size=0.3, random_state=2020)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(train_x)
train_x = scaler.transform(train_x)
valid_x = scaler.transform(valid_x)
이렇게 하면 정말 제출해야하는 마지막 데이터(apps_all_test) 데이터에 대해서는 어떻게 스케일링을 해야하나요?
2. 위 코드에서 pd.factorize 를 하게되면 object 칼럼들이 int형 컬럼으로 바뀌게 되는데,
이 이후 스케일링을 하게되면, 라벨인코더 결과값들마저 스케일링 됩니다.
이는 뭔가 잘못됐다는 생각이 듭니다.
혹시 숫자형컬럼(int or float) 들에 대해 스케일링을 먼저하고, object 칼럼들에 대해 라벨인코딩을 해야하나요?
감사합니다.
답변 1
0
안녕하십니까,
1. 가장 쉽게 적용할 수 있는 방법은 train과 test를 모두 합한 apps_all 에 scaling을 일괄적으로 적용하는 것입니다.
ftr_apps_all = apps_all.drop(['SK_ID_CURR', 'TARGET'], axis=1)
target_apps_all =
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled_ftr_apps_all = scaler.fit_transform(ftr_apps_all)
scaled_ftr_apps_all['TARGET'] = apps_all['TARGET']
이후에 scaled_ftr_apps_all에 TARGET 값이 Null 여부에 따라서 train과 test를 분리하면 될 것 같습니다.
2. 1번에서와 같이 먼저 scaling을 number 타입에만 적용한 후에 나중에 object type은 pd.factorize()를 적용하시면 될 것 같습니다.
감사합니다.
sql사용
0
46
2
좋은 강의 감사드립니다.
0
73
2
8분 40초경 LGBClassifier에서 설정해주신 파라미터들 관련 질문
0
246
2
사용 가능한 RAM을 모두 사용한 후 세션이 다운되었습니다
0
602
1
안녕하세요 선생님
0
229
1
권철민교수님 진심으로 감사드립니다.
0
319
1
안녕하세요 선생님
0
351
1
# credit_card_balance 데이터셋 피쳐엔지니어링
0
268
1
초거대 데이터셋을 Submission하려면?
0
190
1
Library 관련 질문
0
351
3
최적화 함수 에러
0
589
4
LightGBM Iteration관련
0
426
2
안녕하세요 교수님 vm 관련해서 질문이 있습니다.
0
204
1
코드를 실행했는데 오류가 발생합니다
0
1984
2
bayes_opt 회귀 모델에 적용하려면..
0
267
1
타겟값의 로그변환에 대해서
0
781
1
아나콘다 환경설정
0
460
1
깃허브 주소 문의드립니다.
0
360
1
손실함수에 대한 질문
0
345
1
card_bal 데이터셋 시각화 관련 질문입니다
0
232
1
LGBM null값 처리에 관해 질문있습니다
0
541
1
컬럼 관련 질문
0
281
1
히스토그램 x 값
0
365
1
n_iter 횟수 넘음 질문
0
492
2





