머신러닝 | 수치형 데이터 전처리 (스케일링) | 범주형 데이터 전처리 (인코딩) | StandardScaler, MinMaxScaler | LabelEncoding, OneHotEncoding

    728x90

     

    1. 수치형 데이터 전처리

     

    ▶ 스케일링(Scaling)

    : 머신러닝의 학습에 사용되는 서로 다른 단위의 데이터들을 보정해주기 위한 방법


    1-1) 표준화 (Standardization)

     

    ▶ 표준화

    : 각 데이터에 평균을 빼고 표준편차를 나누어 평균을 0, 표준편차를 1로 조정하는 방법

     

    ▶ 수식

    ▶ 사용 함수

    • sklearn.preprocessing.StandardScaler
    • 메소드
      • fit : 데이터 학습 (평균과 표준편차를 계산)
      • transform : 데이터 스케일링 진행
    • 속성
      • mean_ : 데이터의 평균 값
      • scale_ , var_ : 데이터 표준 편차, 분산 값
      • n_features_in_ : fit 할 때 들어간 변수 개수
      • feature_names_in_ : fit 할 때 들어간 변수 이름
      • n_samples_seen_ : fit 할 때 들어간 데이터의 개수
    • 특징
      • 장점
        • 이상치가 있거나 분포가 치우쳐져 있을 때 유용
        • 모든 특성의 스케일을 동일하게 맞춤. 많은 알고리즘에서 좋은 성능
      • 단점
        • 데이터의 최소-최대 값이 정해지지 않음

    1-2) 정규화 (Nomarlization)

     

    ▶ 정규화

    : 데이터0과 1 사이의 값으로 조정 (최솟값 0, 최댓값 1)

     

    ▶ 수식

     

    ▶ 사용 함수

    • sklearn.preprocessing.MinMaxScaler
    • (표준화와 공통인 것은 제외)
    • 속성
      • data_min_ : 원 데이터의 최솟값
      • data_max_ : 원 데이터의 최댓값
      • data_range_ : 원 데이터의 최대-최소 범위
    • 특징
      • 장점
        • 모든 특성의 스케일을 동일하게 맞춤
        • 최대-최소 범위가 명확
      • 단점
        • 이상치에 영향을 많이 받을 수 있기 때문에 이상치가 없을 때 유용

    1-3) 로버스트 스케일링 (Robust Scaling) 

     

    ▶ 로버스트 스케일링

    : 중앙값과 IQR을 사용하여 스케일링

     

    ▶ 수식

    ▶ 사용 함수

    • sklearn.preprocessing.RobustScaler
    • 속성
      • center_ : 훈련 데이터의 중앙값

     

    ▶ 특징

    • 장점 : 이상치의 영향에 덜 민감
    • 단점 : 표준화와 정규화에 비해 덜 사용됨

    2. 범주형 데이터 전처리 

     

    ▶ 인코딩(Encoding)

    : 어떤 정보를 정해진 규칙에 따라 변환하는 것


    2-1) 레이블 인코딩 (Label Encoding)

     

    ▶ 레이블 인코딩

    : 문자열 범주형 값을 고유한 숫자로 할당하는 것

    • A등급 → 1
    • B등급 → 2
    • C등급 → 3

    ▶ 사용 함수

    • sklearn.preprocessing.LabelEncoder
    • 메소드
      • fit : 데이터 학습
      • transform : 정수형 데이터로 변환
      • fit_transform : fit과 transform을 연결하여 한번에 실행
      • inverse_transform : 인코딩된 데이터를 원래 문자열로 변환
    • 속성
      • classes_ : 인코더가 학습한 클래스 (범주)

    ▶ 특징

    • 장점 : 모델이 처리하기 쉬운 수치형으로 데이터 변환
    • 단점 : 실제로는 그렇지 않은데 순서 간 크기에 의미가 부여되어 모델이 잘못 해석할 수 있음
      • 예를 들어, A등급은 1, B등급은 2라고 인코딩을 해줬을 때
        실제로 A와 B등급의 차이가 1이 아닐 것임에도 모델이 잘못 해석할 여지가 있음

    2-2) 원핫인코딩 (OneHot Encoding)

     

    ▶ 원핫인코딩

    : 각 범주를 이진 형식으로 변환하는 기법

    • 봄 → [1,0,0,0]
    • 여름 → [0,1,0,0]
    • 가을 → [0,0,1,0]
    • 겨울 → [0,0,0,1[

    ▶ 사용 함수

    • pd.get_dummies
    • sklearn.preprocessing.OneHotEncoder
    • 메소드 (LabelEncoder와 동일)
    • 속성
      • categories_ : 인코더가 학습한 클래스 (범주)
      • get_feature_names_out() : 학습한 클래스 이름 (리스트)
    # CSR 데이터 데이터프레임으로 만들기
    csr_df = pd.DataFrame(csr_data.toarray(), columns = oe.get_feature_names_out())
    
    # 기존 데이터프레임에 붙이기(옆으로)
    pd.DataFrame([df, csr_df], axis=1)
    728x90

    댓글