일반적으로 데이터 정규화를 위해 min-max scaling을 많이 사용한다.
하지만 min-max scaling의 단점은 기준이 scaling이 데이터의 min 값과 max값을 기준으로 이루어지기 때문에 아래와 같은 단점을 갖는다.
① 이상치에 영향을 많이 받는다.
② 운영 시 min, max값이 넘는 값이 유입되면 에러가 발생한다.
이상치는 min-max scaling 하기 전 제거하고 scaling을 하면 어느 정도 해결할 수 있으나
운영 상에서 기존 데이터 범위 외 데이터가 새롭게 들어올 경우는 코드를 추가해 미리 대비를 해야 한다.
min-max값 범위 외 데이터가 유입되는 경우에 min-max scaling 결과의 예상 범위인 0~1을 넘는 데이터가 생겨나는데 이 때, np.maximum과 np.minimum을 이용해 0과 1을 넘는 데이터를 0과 1이 각각 최소 최대가 되도록 수정하고자 한다.
np.maximum(array1, array2)
- 두 array 사이에서 각 위치의 최대값을 반환
- 두 배열 크기가 다르면 브로드캐스팅 규칙에 따라 배열의 모양을 맞춘 후 요소 별로 최대값 계산
- 예시) 0과 주어진 배열 중 큰 값을 가져오기 (min을 0으로 맞추기)
- 0이 브로드캐스팅되어 [0, 0, 0, 0] 배열이 됨
- [0, 0, 0, 0] 과 [1, 0, -0.5, 2.5] 각 위치를 비교하여 작은 값이 반환됨
- [1, 0, 0, 2.5] 이 반환
>>> arr = [1, 0, -0.5, 2.5]
>>> np.maximum(0, arr)
array([1. , 0. , 0. , 2.5])
np.minimum(array1, array2)
- 두 array 사이에서 각 위치의 최소값을 반환
- 두 배열 크기가 다르면 브로드캐스팅 규칙에 따라 배열의 모양을 맞춘 후 요소 별로 최대값 계산
- 예시) 1과 배열 중 작은 값을 가져오기 (max를 1로 맞추기)
- 1이 브로드캐스팅되어 [1,1,1,1] 배열이 됨
- [1, 1, 1, 1] 과 [1, 0, -0.5, 2.5] 각 위치를 비교하여 작은 값이 반환됨
- [1, 0, -0.5, 1] 이 반환
>>> arr = [1, 0, -0.5, 2.5]
>>> np.minimum(1, arr)
array([ 1. , 0. , -0.5, 1. ])
'데이터분석' 카테고리의 다른 글
시계열에서 변화된 지점 찾기 : Change Point Detection (CPD) 기법 (2) | 2024.10.27 |
---|---|
[데이터시각화] 지수표현(+e)된 축 눈금 일반 숫자 형식으로 바꾸기 (0) | 2024.03.20 |
[데이터시각화] 시계열 그래프 위에 결측정보 text로 겹치지 않게 표시하기 (0) | 2024.03.20 |
[Python] 조건에 해당하는 array 값 변경 (0) | 2024.02.21 |