이진화(binarization)
이진화는 숫자의 값을 0 혹은 1의 값으로 변환하는 것을 말한다. 대표적으로 활용되는 것으로 0~255의 값을 0-1의 흑백 값으로 변환하는 이미지 이진화가 대표적이며, 그외에도 데이터를 압축하기 위해서도 활용이 된다.
이진화를 만들기 위해서는 기준값(threshold)가 필요한데 이 기준값보다 높으면 1, 낮으면 0의 값을 세팅하는 어찌보면 매우 간단한 기능이라 할 수 있다. 충분히 개인이 펑션등을 만들어서 이진화를 구현할 수 있지만 여기서는 사이킷런(Sci-kit)에서 제공하는 전처리(preprocessing) 라이브러리로 이진화 기능을 사용해보도록 한다.
이진화 예제
from sklearn import preprocessing
X = [[-1,2,3],[-0.2,0.7,4],[0,1,2]]
binarizer = preprocessing.Binarizer()
print(binarizer.transform(X))
preprocessing 라이브러리에 있는 Binarizer를 사용하면 매우 쉽게 이진화를 구현할 수 있다. 위에 있는 코드를 실행하면
[[0. 1. 1.]
[0. 1. 1.]
[0. 1. 1.]]
이와 같이 0보다 높은 값은 1로 변경되었고, 0이하의 값은 0으로 바뀐 것을 알 수 있다.
이번에는 기준값을 1.0으로 잡고 실행을 시켜보도록 한다.
이진화 with Threshold
from sklearn import preprocessing
X = [[-1,2,3],[-0.2,0.7,4],[0,1,2]]
binarizer = preprocessing.Binarizer(threshold=1.0)
print(binarizer.transform(X))
threshold를 지정한 후 실행을 하면
[[0. 1. 1.]
[0. 0. 1.]
[0. 0. 1.]]
이처럼 1.0 기준으로 1과 0이 분리 된 것을 알 수 있다.
크기조정 (MinMaxScaler)
데이터를 분석할 때 값들이 차이가 있을 경우 분석하기가 힘들 수 있다. 이럴 땐 데이터를 원하는 범위로 조정을 해야 하는데 이 기능이 MinMaxScaler이다.
MinMaxScaler 예제
import numpy as np
from sklearn import preprocessing
X = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]])
min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X)
print(X_train_minmax)
실행결과
[[0.5 0. 1. ]
[1. 0.5 0.33333333]
[0. 1. 0. ]]
참고자료
https://scikit-learn.org/stable/modules/preprocessing.html
'인공지능 및 데이터과학 > 인공지능 기술' 카테고리의 다른 글
이미지에서 텍스트를 추출하는 OCR, 만들어보기 (1) | 2023.12.14 |
---|---|
과적합을 해결하는 드롭아웃(Dropout)과 사용법 (0) | 2022.08.10 |
[데이터전처리] 레이블 인코딩(Label Encoding) 기법 (0) | 2021.06.07 |
희소 표현과 분산 표현, 차원의 저주 (0) | 2021.03.11 |
GAN(Generative Adversarial network)이란? (0) | 2021.01.28 |