[데이터전처리] 이진화(binarization), 크기조정(MinMaxScaler)

    이진화(binarization)

    이진화는 숫자의 값을 0 혹은 1의 값으로 변환하는 것을 말한다. 대표적으로 활용되는 것으로 0~255의 값을 0-1의 흑백 값으로 변환하는 이미지 이진화가 대표적이며, 그외에도 데이터를 압축하기 위해서도 활용이 된다.

     

    이진화를 만들기 위해서는 기준값(threshold)가 필요한데 이 기준값보다 높으면 1, 낮으면 0의 값을 세팅하는 어찌보면 매우 간단한 기능이라 할 수 있다. 충분히 개인이 펑션등을 만들어서 이진화를 구현할 수 있지만 여기서는 사이킷런(Sci-kit)에서 제공하는 전처리(preprocessing) 라이브러리로 이진화 기능을 사용해보도록 한다.

     

    [데이터전처리] 이진화(binarization), 크기조정(MinMaxScaler)


    이진화 예제

    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

    댓글

    Designed by JB FACTORY