본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형1] 표준화와 정규화

by 우공80 2023. 5. 27.
728x90
표준화와 정규화

 
표준화(Standardization)와 정규화(Normalization)는 데이터 전처리 기법으로, 데이터를 일정한 기준에 맞추어 조정하는 방법입니다.
 

  1. 표준화(Standardization)
    • 표준화는 데이터의 평균을 0으로, 표준편차를 1로 만들어 데이터를 정규분포(평균 0, 표준편차 1)에 맞게 변환하는 방법입니다.
    • 표준화를 수행하면 데이터의 범위를 넓히거나 축소하지 않고, 데이터의 상대적인 위치를 파악할 수 있습니다.
    • 주로 데이터가 정규분포를 따를 때 사용됩니다.
  2. 정규화(Normalization)
    • 정규화는 데이터의 범위를 0과 1 사이로 변환하여 데이터의 상대적인 크기를 비교할 수 있도록 만드는 방법입니다.
    • 정규화는 최소값과 최댓값을 이용하여 데이터를 변환하며, 최솟값은 0, 최댓값은 1이 되도록 스케일링합니다.
    • 주로 데이터의 범위가 제한되어 있을 때 사용됩니다.
  3. 데이터에 따라 다르겠지만, 일반적으로 표준화 후에 이상치를 제거하고 정규화를 합니다. 

아래는 간단한 python 예제입니다. 

from sklearn.preprocessing import StandardScaler, MinMaxScaler
import pandas as pd

# 예제 데이터프레임 생성
data = {'f1': [10, 20, 30, 40, 50],
        'f2': [0.1, 0.5, 1.0, 1.5, 2.0],
        'f3': [100, 200, 300, 400, 500]}
df = pd.DataFrame(data)


# 여러 컬럼일 때: StandardScaler를 사용하여 표준화
scaler = StandardScaler()
standardized_data = scaler.fit_transform(df)
df_standardized = pd.DataFrame(standardized_data, columns=['f1', 'f2', 'f3'])

print("여러 컬럼일 때 Standardized Data:")
print(df_standardized)

# 여러 컬럼일 때: MinMaxScaler를 사용하여 정규화
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(df[['f1', 'f2', 'f3']])
df_normalized = pd.DataFrame(normalized_data, columns=['f1', 'f2', 'f3'])

print("\n여러 컬럼일 때 Normalized Data:")
print(df_normalized)

# 단일 컬럼일 때: StandardScaler를 사용하여 표준화
scaler = StandardScaler()
df_standardized=df.copy()
df_standardized['f1']=scaler.fit_transform(df[['f1']])

print("단일 컬럼일 때 Standardized Data:")
print(df_standardized)

# 단일 컬럼일 때: MinMaxScaler를 사용하여 정규화
scaler = MinMaxScaler()
df_normalized=df.copy()
df_normalized['f1'] = scaler.fit_transform(df['f1'].to_numpy().reshape(-1,1))


print("\n단일 컬럼일 때 Normalized Data:")
print(df_normalized)

위 코드에서 fit_transform()의 매개변수에 대해 주의해야 합니다.
함수에 대한 설명을 보면, 입력값 X는 아래와 같은 형태를 가져야 하므로, shape가 요구하는 형식에 맞도록 DataFrame으로 변경하거나 numpy.array로 변환한 후 reshape()하는 방법 등을 사용하여 형식을 맞춰 줍니다.
# X : {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
 
※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.
https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

 

728x90

댓글