본문 바로가기
Python

[Python] 사이킷런(scikit-learn) 라이브러리를 활용하여 정규화 하기 Min-Max Scaling

by teamnova 2024. 10. 26.
728x90

사이킷런(scikit-learn) 이란 파이썬에서 제공하는 머신러닝 분석 라이브러리입니다 

사이킷런에서는 머신러닝에 필요한 다양한 도구들을 모듈로 구분하여 제공합니다

 

오늘은 전처리 (preprocessiong) 모듈에서 제공하는 Min-Max Scaling 메소드를 사용해

정규화를 진행해보도록 하겠습니다 

정규화란 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업으로 

모든 값을 0과 1 사이로 조정하여 다양한 변수들간의 비교가 용이하도록 합니다  

활용하고자 하는 데이터셋에서 변수들이 서로 다른 단위나 값 범위를 가질경우, 특히 한 변수의 값이 다른 변수들보다 훨씬 클때 정규화가 필요합니다. 

예를 들어, 거리(m), 시간(시,분,초), 온도(°C) 등, 여러 단위의 변수를 한꺼번에 사용할때 단위 차이가 모델에 영향을 줄 수 있습니다 

 

 

 

사용할 데이터셋의 일부입니다

서울시 도로 데이터로, 도로 위 20m 간격으로 찍힌 노드의 위치 데이터입니다 

security_distance1,2,3 은 각 노드와 가장 가까운 보안등, 두번째로 가까운 보안등, 세번째로 가까운 보안등과의 거리를 나타냅니다 (m 단위)  

 

위 3개의 필드에 대해 정규화를 진행하도록 하겠습니다

작게는 10m, 크게는 100m 까지 커지는 숫자를 0과 1사이로 조정합니다 

 

아래는 파이썬 코드입니다. 

# 데이터프레임 예시
# df = pd.read_csv('your_data.csv')
df = pd.read_csv('../data/정규화전.csv', encoding='cp949', low_memory=False)

print(df.columns)

# 정규화할 컬럼들
columns_to_normalize = ['security_distance1', 'security_distance2', 'security_distance3']

# Min-Max 스케일러 사용
scaler = MinMaxScaler()

# 정규화 적용
df[columns_to_normalize] = scaler.fit_transform(df[columns_to_normalize])

# 결과 출력
print(df.head())

 

 

결과 내용입니다 

정규화된 자료를 활용하여 다른 데이터셋과 비교하거나, 혹은 다른 변수 또한 정규화를 진행해 

동일한 조건에서 비교, 분석을 할 수 있습니다 

 

감사힙니다