: 데이터를 특정 구간으로 바꾸는 척도법
: 모든 feature가 0과 1 사이에 위치하도록 데이터를 변경하는 방법
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.datasets import load_iris
# sklearn dataset에서 iris data 불러오기
iris = load_iris()
iris_data = iris.data
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
print('feature들의 최소 값')
print(iris_df.min())
print('\nfeature들의 최대 값')
print(iris_df.max())
---------------------
<결과>
feature들의 최소 값
sepal length (cm) 4.3
sepal width (cm) 2.0
petal length (cm) 1.0
petal width (cm) 0.1
dtype: float64
feature들의 최대 값
sepal length (cm) 7.9
sepal width (cm) 4.4
petal length (cm) 6.9
petal width (cm) 2.5
dtype: float64
# MinMaxScaler객체 생성
scaler = MinMaxScaler()
# MinMaxScaler 로 데이터 셋 변환. fit() 과 transform() 호출.
scaler.fit(iris_df) # fit = 데이터 변환을 위한 기준 정보 설정
iris_scaled = scaler.transform(iris_df) # transform = 설정된 정보를 이용한 데이터 변환
# iris_df_scaled DataFrame 생성
iris_df_scaled = pd.DataFrame(data=iris_scaled, columns=iris.feature_names)
print('feature들의 최소 값')
print(iris_df_scaled.min())
print('\nfeature들의 최대 값')
print(iris_df_scaled.max())
---------------------
<결과>
feature들의 최소 값
sepal length (cm) 0.0
sepal width (cm) 0.0
petal length (cm) 0.0
petal width (cm) 0.0
dtype: float64
feature들의 최대 값
sepal length (cm) 1.0
sepal width (cm) 1.0
petal length (cm) 1.0
petal width (cm) 1.0
dtype: float64
: 각 피처의 표준편차와 평균으로 값을 정규화 (평균이 0, 분산이 1인 값으로 변환)
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
# sklearn dataset에서 iris data 불러오기
iris = load_iris()
iris_data = iris.data
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
print('feature 들의 평균 값')
print(iris_df.mean())
print('\nfeature 들의 분산 값')
print(iris_df.var())
---------------------
<결과>
feature 들의 평균 값
sepal length (cm) 5.843333
sepal width (cm) 3.057333
petal length (cm) 3.758000
petal width (cm) 1.199333
dtype: float64
feature 들의 분산 값
sepal length (cm) 0.685694
sepal width (cm) 0.189979
petal length (cm) 3.116278
petal width (cm) 0.581006
dtype: float64
# StandardScaler객체 생성
scaler = StandardScaler()
# StandardScaler 로 데이터 셋 변환. fit( ) 과 transform( ) 호출.
scaler.fit(iris_df) # fit = 데이터 변환을 위한 기준 정보 설정
iris_scaled = scaler.transform(iris_df) # transform = 설정된 정보를 이용한 데이터 변환
# iris_df_scaled DataFrame 생성
iris_df_scaled = pd.DataFrame(data=iris_scaled, columns=iris.feature_names)
print('feature 들의 평균 값')
print(iris_df_scaled.mean())
print('\nfeature 들의 분산 값')
print(iris_df_scaled.var())
---------------------
<결과>
feature 들의 평균 값
sepal length (cm) -1.690315e-15
sepal width (cm) -1.842970e-15
petal length (cm) -1.698641e-15
petal width (cm) -1.409243e-15
dtype: float64
feature 들의 분산 값
sepal length (cm) 1.006711
sepal width (cm) 1.006711
petal length (cm) 1.006711
petal width (cm) 1.006711
dtype: float64
: median과 IQR(Interquartile range = Q3-Q1)를 사용하여 스케일링
: 최대절대값과 0이 각각 1,0이 되도록 스케일링
[참고]