Feature Scaling이란?
- 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업이다.
Feature Scaling을 하는 이유는?
- 변수 값의 범위 또는 단위가 달라서 발생 가능한 문제를 예방할 수 있다.
- 머신러닝 모델이 특정 데이터의 편향성을 갖는 걸 방지할 수 있다.
- 데이터 범위 크기에 따라 모델이 학습하는 데 있어서 bias가 달라질 수 있으므로 하나의 범위 크기로 통일해주는 작업이 필요할 수 있다.
연속형 변수를 가진 피쳐들의 단위가 대부분 비슷하지만, 다른 단위가 섞여 있으므로 정규화를 진행하고, 범주형 변수를 가진 피쳐들은 label encoding을 진행해 주었다.
Scaling Code 작성
categorical_features = ['COMPONENT_ARBITRARY', 'YEAR']
# Inference(실제 진단 환경)에 사용하는 컬럼
test_stage_features = ['COMPONENT_ARBITRARY', 'ANONYMOUS_1', 'YEAR' , 'ANONYMOUS_2', 'AG', 'CO', 'CR', 'CU', 'FE', 'H2O', 'MN', 'MO', 'NI', 'PQINDEX', 'TI', 'V', 'V40', 'ZN']
all_X = train_dropmissing.drop(['ID', 'Y_LABEL'], axis = 1)
all_y = train_dropmissing['Y_LABEL']
test = test.drop(['ID'], axis = 1)
train_X, val_X, train_y, val_y = train_test_split(all_X, all_y, test_size=0.2, random_state=CFG['SEED'], stratify=all_y)
def get_values(value):
return value.values.reshape(-1, 1)
for col in train_X.columns:
if col not in categorical_features:
scaler = MinMaxScaler()
train_X[col] = scaler.fit_transform(get_values(train_X[col]))
val_X[col] = scaler.transform(get_values(val_X[col]))
if col in test.columns:
test[col] = scaler.transform(get_values(test[col]))
le = LabelEncoder()
for col in categorical_features:
train_X[col] = le.fit_transform(train_X[col])
val_X[col] = le.transform(val_X[col])
if col in test.columns:
test[col] = le.transform(test[col])
학습을 위해 훈련 세트와 검증 세트를 나누어 주고, 수치형 변수에는 정규화를, 범주형 변수는 label encoding을 진행해 주었다.
'Project > DACON: 건설기계 오일 상태 분류 AI 경진대회' 카테고리의 다른 글
Modeling (1) Baseline 분석 (0) | 2023.01.12 |
---|---|
Data Processing (3) 불균형 데이터 처리 (0) | 2023.01.12 |
Data Processing (1) 결측치 처리 (0) | 2023.01.10 |
EDA (4) 데이터 시각화 (0) | 2023.01.10 |
EDA (3) 결측치, 이상치 확인 (0) | 2023.01.10 |