728x90
표준화(Standardization)와 정규화(Normalization)는 데이터 전처리 기법으로, 데이터를 일정한 기준에 맞추어 조정하는 방법입니다.
- 표준화(Standardization)
- 표준화는 데이터의 평균을 0으로, 표준편차를 1로 만들어 데이터를 정규분포(평균 0, 표준편차 1)에 맞게 변환하는 방법입니다.
- 표준화를 수행하면 데이터의 범위를 넓히거나 축소하지 않고, 데이터의 상대적인 위치를 파악할 수 있습니다.
- 주로 데이터가 정규분포를 따를 때 사용됩니다.
- 정규화(Normalization)
- 정규화는 데이터의 범위를 0과 1 사이로 변환하여 데이터의 상대적인 크기를 비교할 수 있도록 만드는 방법입니다.
- 정규화는 최소값과 최댓값을 이용하여 데이터를 변환하며, 최솟값은 0, 최댓값은 1이 되도록 스케일링합니다.
- 주로 데이터의 범위가 제한되어 있을 때 사용됩니다.
- 데이터에 따라 다르겠지만, 일반적으로 표준화 후에 이상치를 제거하고 정규화를 합니다.
아래는 간단한 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
728x90
'데이터분석과 AI > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사 실기][작업형1] 그룹화와 정렬 + 멀티인덱싱 (0) | 2023.06.06 |
---|---|
[빅데이터분석기사 실기][작업형1] 상관관계 구하기 (0) | 2023.05.28 |
[빅데이터분석기사 실기][작업형1] 누적합 계산 및 결측치 채우기(cumsum, bfill) (0) | 2023.05.27 |
[빅데이터분석기사 실기][작업형1] 값을 대체하기 (replace) (0) | 2023.05.26 |
[빅데이터분석기사 실기][작업형1] 분위수 구하고 값을 대체하기 (np.quantile(), np.clip()) (0) | 2023.05.26 |
댓글