fit_transform()을, 테스트 데이터셋에 transform()을 적용하여야 함에 유의from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
# 데이터 분리
X_train, X_test = train_test_split([[1], [2], [3], [4], [5]], test_size=0.2)
# 훈련 데이터: fit_transform() 적용
ss = StandardScaler()
X_train_sc = ss.fit_transform(X_train)
# 테스트 데이터: transform() 적용
# fit_transform() 사용 시, 새롭게 변환 기준을 계산하므로 데이터 누수 발생
X_test_sc = ss.transform(X_test)
범주형 데이터를 이진 벡터(0, 1)로 변환함
예시: ['Red', 'Green', 'Blue'] → [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
data = pd.DataFrame({'Color': ['Red', 'Green', 'Blue']})
encoder = OneHotEncoder()
encoded_data = encoder.fit_transform(data[['Color']]).toarray()
print(encoded_data) # [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
범주형 데이터를 대응되는 정수 값으로 변환함 (순서에 의미가 없음)
예시: ['Red', 'Green', 'Blue'] → [0, 1, 2]
from sklearn.preprocessing import LabelEncoder
data = ['Red', 'Green', 'Blue']
encoder = LabelEncoder()
encoded_data = encoder.fit_transform(data)
print(encoded_data) # [2 1 0]
범주형 데이터를 '순서가 있는 정수 값'으로 변환함
예시: ['Low', 'Medium', 'High'] → [0, 1, 2]
from sklearn.preprocessing import OrdinalEncoder
data = [['Low'], ['Medium'], ['High']]
encoder = OrdinalEncoder(categories=[['Low', 'Medium', 'High']])
encoded_data = encoder.fit_transform(data)
print(encoded_data) # [[0.] [1.] [2.]]
데이터를 0과 1 사이로 변환함
예시: [1, 5] → [0.0, 1.0]
from sklearn.preprocessing import MinMaxScaler
data = [[1], [2], [3], [4], [5]]
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data) # [[0. ] [0.25] [0.5 ] [0.75] [1. ]]
데이터가 평균 0, 표준편차 1의 값을 갖도록 변환함
예시: [1, 5] → [-1.26, 1.26]
from sklearn.preprocessing import StandardScaler
data = [[1], [2], [3], [4], [5]]
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data) # [[-1.41421356] [-0.70710678] [ 0. ] [ 0.70710678] [ 1.41421356]]
데이터의 중앙값과 IQR을 사용하여 변환, 이상치 영향을 최소화 함
예시: [1, 100] → [-0.5, 9.5]
from sklearn.preprocessing import RobustScaler
data = [[1], [2], [3], [4], [100]]
scaler = RobustScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data) # [[-0.25] [-0.25] [ 0. ] [ 0.25] [24.25]]
[1, 5] → [0.2, 1.0]from sklearn.preprocessing import MaxAbsScaler
data = [[1], [2], [3], [4], [5]]
scaler = MaxAbsScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data) # [[0.2] [0.4] [0.6] [0.8] [1. ]]
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.