[Python] 연습

[Python] 데이터 정규화

Simon Yoon 2022. 3. 25. 20:38

데이터를 분석하다보면 정규화가 필요한 경우를 종종 마주하게 된다. R에서도 정규화에 대한 내용을 다루었지만 파이썬을 이용해서 정규화를 쉽게 하는 방법에 대해서 알아보고자 한다.

 

scikit-learn의 MinMaxScaler를 통해서 정규화 하는 예시는 아래와 같다. 

from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = MinMaxScaler()
print(scaler.fit(data))
# 결과: MinMaxScaler()

print(scaler.transform(data))
# 결과:
[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [1.   1.  ]]

처음에는 MinMaxScaler를 import해주고 사용하면 된다.

fit(data)에서 fit(X, y=None)함수는 스케일링을 위해 맥시멈과 미니멈을 계산하는 것으로, print로 보면 어떤 스케일러를 썼는지가 출력될 뿐이다. 단, fit을 하지 않고 data를 transform하려고 하면, 아래와 같은 에러를 만나게 된다. 즉, fit을 먼저 해줘야 한다.

NotFittedError: This MinMaxScaler instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.

 

transform(data)은 변수 범위에 맞게 스케일링을 한다고 보면 된다. parameter에는 스케일링할 데이터를 넣으면 된다. 따라서 이 결과를 출력해보면 스케일링이 된 결과가 출력된다.

 

정규화된 결과를 DataFrame으로 저장하기 위한 예시 코드는 아래와 같이 작성할 수 있을 것이다.

# 정규화 진행
scaler = MinMaxScaler()
fitted = scaler.fit(df)

df_scale = scaler.transform(df_df)
df_scale = pd.DataFrame(df_scale, columns=df.columns, index=list(df.index.values))
df_scale.head()

 

MinMaxScaler에 대한 sklearn 페이지:

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html

 

sklearn.preprocessing.MinMaxScaler

Examples using sklearn.preprocessing.MinMaxScaler: Release Highlights for scikit-learn 0.24 Release Highlights for scikit-learn 0.24, Image denoising using kernel PCA Image denoising using kernel P...

scikit-learn.org