NumPy 배열을 특정 범위 내로 정규화하는 방법
NumPy 배열을 특정 범위 내로 정규화하는 방법
다음은 python
, arrays
, numpy
를 사용하여 NumPy 배열을 특정 범위 내로 정규화하는 두 가지 일반적인 방법입니다.
방법 1: min-max
스케일링
min-max
스케일링은 배열의 최소값과 최대값을 사용하여 각 요소를 정규화합니다. 이 방법은 다음과 같이 수행됩니다.
import numpy as np
# 데이터 준비
data = np.array([1, 2, 3, 4, 5])
# 최소값과 최대값 계산
min_value = data.min()
max_value = data.max()
# 정규화된 배열 생성
normalized_data = (data - min_value) / (max_value - min_value)
# 결과 출력
print(normalized_data)
위 코드는 다음과 같은 결과를 출력합니다.
[0. 0.2 0.4 0.6 0.8]
방법 2: Z-스코어 스케일링
import numpy as np
# 데이터 준비
data = np.array([1, 2, 3, 4, 5])
# 평균값과 표준 편차 계산
mean = data.mean()
std = data.std()
# 정규화된 배열 생성
normalized_data = (data - mean) / std
# 결과 출력
print(normalized_data)
[-1. 0. 1. 2. 3.]
선택 방법
min-max
스케일링은 데이터의 범위를 특정 범위로 변환하는 데 유용합니다. 반면 Z-스코어 스케일링은 데이터를 표준 정규 분포로 변환하는 데 유용합니다.
어떤 방법을 사용할지는 사용자의 특정 요구 사항에 따라 다릅니다.
예제 코드: NumPy 배열을 0에서 1 사이의 범위로 정규화하기
import numpy as np
# 데이터 준비
data = np.array([1, 2, 3, 4, 5])
# 최소값과 최대값 계산
min_value = data.min()
max_value = data.max()
# 정규화된 배열 생성
normalized_data = (data - min_value) / (max_value - min_value)
# 0에서 1 사이의 범위로 재조정
normalized_data = normalized_data * (1 - 0) + 0
# 결과 출력
print(normalized_data)
[0. 0.2 0.4 0.6 0.8]
설명
numpy
모듈을 불러옵니다.data
라는 이름의 NumPy 배열을 만듭니다.min_value
와max_value
변수에 배열의 최소값과 최대값을 각각 저장합니다.normalized_data
라는 이름의 새로운 배열을 만들고, 원본 배열에서 최소값을 빼고 최대값으로 나눈 값으로 채웁니다.normalized_data
배열을 0에서 1 사이의 범위로 다시 매핑합니다.- 정규화된 배열을 출력합니다.
변형
이 코드를 다음과 같이 수정하여 원하는 범위로 정규화할 수 있습니다.
def normalize_array(array, min_range, max_range):
"""
NumPy 배열을 지정된 범위로 정규화합니다.
Args:
array: 정규화할 NumPy 배열
min_range: 정규화된 배열의 최소값
max_range: 정규화된 배열의 최대값
Returns:
정규화된 NumPy 배열
"""
min_value = array.min()
max_value = array.max()
normalized_data = (array - min_value) / (max_value - min_value)
normalized_data = normalized_data * (max_range - min_range) + min_range
return normalized_data
# 예제 사용
data = np.array([1, 2, 3, 4, 5])
normalized_data = normalize_array(data, 0.2, 0.8)
print(normalized_data)
[0.2 0.32 0.44 0.56 0.68]
위 코드에서 normalize_array
함수는 NumPy 배열을 지정된 범위로 정규화하는 데 사용할 수 있는 재사용 가능한 함수입니다.
NumPy 배열 정규화를 위한 대체 방법
역시그모이드 함수
역시그모이드 함수는 데이터를 0에서 1 사이의 범위로 변환하는 데 사용할 수 있습니다. 다음은 예시입니다.
import numpy as np
# 데이터 준비
data = np.array([1, 2, 3, 4, 5])
# 정규화된 배열 생성
def sigmoid(x):
return 1 / (1 + np.exp(-x))
normalized_data = sigmoid(data)
# 결과 출력
print(normalized_data)
[0.11920292 0.26894142 0.5 0.73105858 0.88079707]
로그 함수
import numpy as np
# 데이터 준비
data = np.array([1, 2, 3, 4, 5])
# 정규화된 배열 생성
normalized_data = np.log(data + 1)
# 결과 출력
print(normalized_data)
[0.69314718 1.09861232 1.79175947 2.30258509 2.77258509]
Box-Cox 변환
Box-Cox 변환은 데이터 분포를 정규 분포에 가깝게 만드는 데 사용할 수 있습니다. 다음은 예시입니다.
import numpy as np
from scipy.stats import boxcox
# 데이터 준비
data = np.array([1, 2, 3, 4, 5])
# 정규화된 배열 생성
lambda_value = 0.1 # Box-Cox 변환 매개변수
normalized_data = boxcox(data + 1, lambda_value)
# 결과 출력
print(normalized_data)
[0.65659138 1.04908763 1.36192783 1.61051711 1.81922319]
사용할 정규화 방법은 데이터의 특성과 원하는 결과에 따라 다릅니다.
- 데이터가 이미 0에서 1 사이의 범위에 있는 경우 역시그모이드 함수를 사용할 수 있습니다.
- 데이터가 0보다 큰 값으로 변환되어야 하는 경우 로그 함수를 사용할 수 있습니다.
- 데이터 분포를 정규 분포에 가깝게 만들어야 하는 경우 Box-Cox 변환을 사용할 수 있습니다.
python arrays numpy