[파이썬][scikit-learn] scikit-learn에서 특성 스케일링

머신 러닝 알고리즘을 적용하기 전에 데이터의 특성을 일정한 범위로 조정하는 작업은 중요합니다. 이를 특성 스케일링이라고 합니다. 특성 스케일링은 데이터의 특성이 다른 범위에 분포되어 있을 때 발생하는 문제에 대처하기 위해 사용됩니다. scikit-learn은 파이썬에서 머신 러닝 프로세스를 더욱 간단하게 만들어 주는 라이브러리입니다. 이번 블로그 포스트에서는 scikit-learn을 사용하여 특성 스케일링을 수행하는 방법을 알아보겠습니다.

표준화(Standardization)

표준화는 데이터의 평균을 0으로, 표준 편차를 1로 만들어 줍니다. 각 특성에서 평균을 빼고 표준 편차로 나눠주는 과정을 거치는데, 다음과 같이 StandardScaler 클래스를 사용할 수 있습니다.

from sklearn.preprocessing import StandardScaler

# 데이터 생성
data = [[1, 2], [3, 4], [5, 6], [7, 8]]

# 표준화 객체 생성
scaler = StandardScaler()

# 데이터 표준화
scaled_data = scaler.fit_transform(data)

print(scaled_data)

위의 예제에서는 StandardScaler 클래스를 사용하여 데이터를 표준화하고 있습니다. fit_transform 함수를 사용하여 데이터를 표준화하고, 결과를 scaled_data에 저장한 후 출력합니다.

정규화(Normalization)

정규화는 각 특성의 크기를 단위 벡터로 조정하며, 가장 많이 사용되는 방법은 MinMaxScaler 클래스를 사용하는 것입니다. 이 클래스는 데이터를 0과 1 사이로 조정해주는 역할을 합니다.

from sklearn.preprocessing import MinMaxScaler

# 데이터 생성
data = [[1, 2], [3, 4], [5, 6], [7, 8]]

# 정규화 객체 생성
scaler = MinMaxScaler()

# 데이터 정규화
normalized_data = scaler.fit_transform(data)

print(normalized_data)

위의 예제에서는 MinMaxScaler 클래스를 사용하여 데이터를 정규화하고 있습니다. fit_transform 함수를 사용하여 데이터를 정규화하고, 결과를 normalized_data에 저장한 후 출력합니다.

로버스트 스케일링(Robust Scaling)

로버스트 스케일링은 특성 스케일링의 한 종류로, 데이터의 중앙값(median)과 사분위 범위(interquartile range)를 사용합니다. 이 방법은 데이터에 이상치(outliers)가 많이 포함되어 있을 때 유용합니다.

from sklearn.preprocessing import RobustScaler

# 데이터 생성
data = [[1, 2], [3, 4], [5, 6], [7, 8], [100, 200]]

# 로버스트 스케일링 객체 생성
scaler = RobustScaler()

# 데이터 스케일링
scaled_data = scaler.fit_transform(data)

print(scaled_data)

위의 예제에서는 RobustScaler 클래스를 사용하여 데이터를 로버스트 스케일링하고 있습니다. fit_transform 함수를 사용하여 데이터를 스케일링하고, 결과를 scaled_data에 저장한 후 출력합니다.

결론

scikit-learn은 파이썬에서 머신 러닝을 위한 다양한 기능을 제공하는 강력한 라이브러리입니다. 이번 포스트에서는 scikit-learn을 사용하여 특성 스케일링을 수행하는 방법을 알아보았습니다. 특성 스케일링은 머신 러닝 알고리즘의 성능을 향상시키고, 데이터의 분포를 이해하는 데에 도움을 줍니다. 다른 스케일링 방법을 적용해보고, 여러 방법을 조합하여 최적의 스케일링 방법을 찾아보세요.