데이터 사이언스 기초

데이터 스케일링 (머신 러닝)

skbaek1223 2024. 11. 28. 14:14

머신 러닝에 사용되는 데이터들은 컬럼 별로 값의 범위가 다양한 경우가 많습니다.

 

이 경우 train, test 데이터를 같은 scaler 객체로 스케일링 해야 합니다.

 

1. Standard Scaler

 

평균 0, 분산 1인 정규 분포로 스케일링 하는 기법으로, 분류 분석에서 유용합니다.

 

이상치에 민감하므로, 이상치를 미리 확인, 정제한 후 사용하는 것이 좋습니다.

 

from sklearn.preprocessing import StandardScaler

Stdscaler= StandardScaler()

 

2. Min-max Scaler

컬럼을 0과 1 사이의 값으로 스케일링하는 기법으로, 회귀 분석에서 유용합니다.

 

이상치에 민감하므로, 이상치를 미리 확인, 정제한 후 사용하는 것이 좋습니다.

 

from sklearn.preprocessing import MinMaxScaler

MmScaler= MinMaxScaler()

 

3. Max Abs Scaler

 

최대절댓값이 1이 되도록 스케일링하는 기법으로, 회귀 분석에서 유용합니다.

 

이상치에 민감하므로, 이상치를 미리 확인, 정제한 후 사용하는 것이 좋습니다.

 

from sklearn.preprocessing import MaxAbsScaler

MaScaler= MaxAbsScaler ()

 

4. Robust Scaler

 

중앙값을 0으로 설정하고, IQR로 이상치 영향을 최소화하는 기법으로, 회귀,분류 분석에서 모두 유용합니다.

 

이상치에 민감하므로, 이상치를 미리 확인, 정제한 후 사용하는 것이 좋습니다.

 

from sklearn.preprocessing import RobustScaler

RuScaler= RobustScaler( quantile_range=(x, y) ) 

 

quantile_range 의 default 는 (25, 75) 입니다.

 

5. 레이블 인코딩 (Label Encoding)

문자열 범주형 값을 고유한 숫자로 할당하는 기법입니다.

 

from sklearn.preprocessing import LabelEncoder

le= LabelEncoder()

 

속성: classes_

 

5. 원-핫 인코딩 (One-Hot Encoding)

 

범주형 변수들을 결합하여 이진 형식으로 변환하는 기법입니다. 범주가 너무 많으면 과적합을 유발할 수 있다는 단점이 있습니다. pd.get_dummies 와 OneHotEncoder 은 같은 결과를 도출합니다.

 

pd.get_dummies

 

from sklearn.preprocessing import OneHotEncoder

oe= OneHotEncoder()

 

속성: categories_, get_feature_names_out()

 

● ColumnTransformer

 

열마다 다른 스케일링을 적용할 수 있도록 해주는 파이썬 클라스입니다.

 

from sklearn.compose import ColumnTransformer

 

ct= ColumnTransformer([('scaling', StandardScaler(), ['age', 'hours-per-week']), ('onehot', OneHotEncoder(sparse_output=False), ['workclass', 'education', 'gender', 'occupation'])])

 

스케일러의 이름, 스케일러, 적용할 열 이름의 순으로 변수를 넣어서 활용합니다.

'데이터 사이언스 기초' 카테고리의 다른 글

분류 분석 (머신 러닝)  (0) 2024.11.27
회귀 분석 (머신 러닝)  (0) 2024.11.27
분산분석 with 파이썬  (1) 2024.11.15
t 검정 with 파이썬  (0) 2024.11.15
웹 스크래핑의 기본  (0) 2024.11.13